Class: RubyAem::Resources::Package

Inherits:
Object
  • Object
show all
Defined in:
lib/ruby_aem/resources/package.rb

Overview

Package class contains API calls related to managing an AEM package.

Instance Method Summary collapse

Constructor Details

#initialize(client, group_name, package_name, package_version) ⇒ Object

Initialise a package. Package name and version will then be used to construct the package file in the filesystem. E.g. package name 'somepackage' with version '1.2.3' will translate to somepackage-1.2.3.zip in the filesystem.

Parameters:

  • client

    RubyAem::Client

  • group_name

    the group name of the package, e.g. somepackagegroup

  • package_name

    the name of the package, e.g. somepackage

  • package_version

    the version of the package, e.g. 1.2.3



31
32
33
34
35
36
37
38
# File 'lib/ruby_aem/resources/package.rb', line 31

def initialize(client, group_name, package_name, package_version)
  @client = client
  @call_params = {
    group_name: group_name,
    package_name: package_name,
    package_version: package_version
  }
end

Instance Method Details

#activate_filter(ignore_deactivated, modified_only) ⇒ Object

Activate all paths within a package filter. Returns an array of results:

  • the first result is the result from retrieving filter paths

  • the rest of the results are the results from activating the filter paths, one result for each activation

Parameters:

  • ignore_deactivated

    if true, then deactivated items in the path will not be activated

  • modified_only

    if true, then only modified items in the path will be activated

Returns:

  • an array of RubyAem::Result



127
128
129
130
131
132
133
134
135
136
# File 'lib/ruby_aem/resources/package.rb', line 127

def activate_filter(ignore_deactivated, modified_only)
  result = get_filter()

  results = [result]
  result.data.each { |filter_path|
    path = RubyAem::Resources::Path.new(@client, filter_path)
    results.push(path.activate(ignore_deactivated, modified_only))
  }
  results
end

#buildObject

Build the package.

Returns:

  • RubyAem::Result



67
68
69
# File 'lib/ruby_aem/resources/package.rb', line 67

def build()
  @client.call(self.class, __callee__.to_s, @call_params)
end

#createObject

Create the package.

Returns:

  • RubyAem::Result



43
44
45
# File 'lib/ruby_aem/resources/package.rb', line 43

def create()
  @client.call(self.class, __callee__.to_s, @call_params)
end

#deleteObject

Delete the package.

Returns:

  • RubyAem::Result



60
61
62
# File 'lib/ruby_aem/resources/package.rb', line 60

def delete()
  @client.call(self.class, __callee__.to_s, @call_params)
end

#download(file_path) ⇒ Object

Download the package to a specified directory.

Parameters:

  • file_path

    the directory where the package will be downloaded to

Returns:

  • RubyAem::Result



90
91
92
93
# File 'lib/ruby_aem/resources/package.rb', line 90

def download(file_path)
  @call_params[:file_path] = file_path
  @client.call(self.class, __callee__.to_s, @call_params)
end

#get_filterObject

Get the package filter value. Filter value is stored as result data as an array of paths.

Returns:

  • RubyAem::Result



115
116
117
# File 'lib/ruby_aem/resources/package.rb', line 115

def get_filter()
  @client.call(self.class, __callee__.to_s, @call_params)
end

#installObject

Install the package.

Returns:

  • RubyAem::Result



74
75
76
# File 'lib/ruby_aem/resources/package.rb', line 74

def install()
  @client.call(self.class, __callee__.to_s, @call_params)
end

#is_installedObject

Check if this package is installed. True result data indicates that the package is installed, false otherwise.

Returns:

  • RubyAem::Result



170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
# File 'lib/ruby_aem/resources/package.rb', line 170

def is_installed()
  packages = list_all().data
  package = packages.xpath("//packages/package[group=\"#{@call_params[:group_name]}\" and name=\"#{@call_params[:package_name]}\" and version=\"#{@call_params[:package_version]}\"]")
  last_unpacked_by = package.xpath('lastUnpackedBy')

  if not ['<lastUnpackedBy/>', '<lastUnpackedBy>null</lastUnpackedBy>'].include? last_unpacked_by.to_s
    message = "Package #{@call_params[:group_name]}/#{@call_params[:package_name]}-#{@call_params[:package_version]} is installed"
    is_installed = true
  else
    message = "Package #{@call_params[:group_name]}/#{@call_params[:package_name]}-#{@call_params[:package_version]} is not installed"
    is_installed = false
  end
  result = RubyAem::Result.new(message, nil)
  result.data = is_installed

  result
end

#is_uploadedObject

Check if this package is uploaded. True result data indicates that the package is uploaded, false otherwise.

Returns:

  • RubyAem::Result



149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
# File 'lib/ruby_aem/resources/package.rb', line 149

def is_uploaded()
  packages = list_all().data
  package = packages.xpath("//packages/package[group=\"#{@call_params[:group_name]}\" and name=\"#{@call_params[:package_name]}\" and version=\"#{@call_params[:package_version]}\"]")

  if package.to_s != ''
    message = "Package #{@call_params[:group_name]}/#{@call_params[:package_name]}-#{@call_params[:package_version]} is uploaded"
    is_uploaded = true
  else
    message = "Package #{@call_params[:group_name]}/#{@call_params[:package_name]}-#{@call_params[:package_version]} is not uploaded"
    is_uploaded = false
  end
  result = RubyAem::Result.new(message, nil)
  result.data = is_uploaded

  result
end

#list_allObject

List all packages available in AEM instance.

Returns:

  • RubyAem::Result



141
142
143
# File 'lib/ruby_aem/resources/package.rb', line 141

def list_all()
  @client.call(self.class, __callee__.to_s, @call_params)
end

#replicateObject

Replicate the package. Package will then be added to replication agents.

Returns:

  • RubyAem::Result



82
83
84
# File 'lib/ruby_aem/resources/package.rb', line 82

def replicate()
  @client.call(self.class, __callee__.to_s, @call_params)
end

#update(filter) ⇒ Object

Update the package with specific filter.

example: [href="">root”:“/apps/geometrixx”,“rules”:[],“root”:“/apps/geometrixx-common”,“rules”:</a>]

Parameters:

  • filter

    package filter JSON string

Returns:

  • RubyAem::Result



52
53
54
55
# File 'lib/ruby_aem/resources/package.rb', line 52

def update(filter)
  @call_params[:filter] = filter
  @client.call(self.class, __callee__.to_s, @call_params)
end

#upload(file_path, opts = { force: true }) ⇒ Object

Upload the package.

  • force: if false then a package file will not be uploaded when the package already exists with the same group, name, and version, default is true (will overwrite existing package file)

Parameters:

  • file_path

    the directory where the package file to be uploaded is

  • force

    if true, then overwrite if the package already exists

  • opts (defaults to: { force: true })

    optional parameters:

Returns:

  • RubyAem::Result



102
103
104
105
106
107
108
109
# File 'lib/ruby_aem/resources/package.rb', line 102

def upload(file_path,
  opts = {
    force: true
  })
  @call_params[:file_path] = file_path
  @call_params = @call_params.merge(opts)
  @client.call(self.class, __callee__.to_s, @call_params)
end