class AptlyCli::AptlyRepo

Aptly class to work with Repo API

Public Instance Methods

repo_create(repo_options = { name: nil, comment: nil, DefaultDistribution: nil, DefaultComponent: nil }) click to toggle source
# File lib/aptly_repo.rb, line 13
def repo_create(repo_options = { name: nil,
                                 comment: nil,
                                 DefaultDistribution: nil,
                                 DefaultComponent: nil })
  uri = '/repos'
  name = repo_options[:name]
  comment = repo_options[:comment]
  default_distribution = repo_options[:DefaultDistribution]
  default_component = repo_options[:DefaultComponent]
  self.class.post(uri,
                  :body => 
                  { 'Name' => name, 'Comment' => comment,
                    'DefaultDistribution' => default_distribution,
                    'DefaultComponent' => default_component }.to_json,
                  :headers => { 'Content-Type' => 'application/json' })
end
repo_delete(repo_options = { name: nil, force: nil }) click to toggle source
# File lib/aptly_repo.rb, line 30
def repo_delete(repo_options = { name: nil, force: nil })
  uri = '/repos/' + repo_options[:name]
  uri += '?force=1' if repo_options[:force] == true
  self.class.delete(uri)
end
repo_edit(name, repo_options = { k => v }) click to toggle source
# File lib/aptly_repo.rb, line 36
def repo_edit(name, repo_options = { k => v })
  repo_option = ''
  repo_value = ''
  uri = '/repos/' + name unless name.nil?
  repo_options.each do |k, v|
    repo_option = k
    repo_value = v
  end

  self.class.put(uri, :body => { repo_option => repo_value }.to_json,
                      :headers => { 'Content-Type' => 'application/json' })
end
repo_list() click to toggle source
# File lib/aptly_repo.rb, line 49
def repo_list
  uri = '/repos'
  self.class.get(uri)
end
repo_package_add(repo_options, packages) click to toggle source
# File lib/aptly_repo.rb, line 54
def repo_package_add(repo_options, packages)
  if !repo_options.is_a?(Hash) || repo_options[:name].nil?
    raise ArgumentError.new('Must pass a repository name')
  end

  uri = '/repos/' + repo_options[:name] + '/packages'
  self.class.post(
    uri,
    :body => { PackageRefs: packages }.to_json,
    :headers => { 'Content-Type' => 'application/json' }
  )
end
repo_package_delete(repo_options, packages) click to toggle source
# File lib/aptly_repo.rb, line 67
def repo_package_delete(repo_options, packages)
  if !repo_options.is_a?(Hash) || repo_options[:name].nil?
    raise ArgumentError.new('Must pass a repository name')
  end

  uri = '/repos/' + repo_options[:name] + '/packages'
  self.class.delete(
    uri,
    :body => { PackageRefs: packages }.to_json,
    :headers => { 'Content-Type' => 'application/json' }
  )
end
repo_package_query(repo_options = { name: nil, query: nil, with_deps: false, format: nil }) click to toggle source
# File lib/aptly_repo.rb, line 80
def repo_package_query(repo_options = { name: nil, query: nil,
                                        with_deps: false,
                                        format: nil })
  if repo_options[:name].nil?
    raise ArgumentError.new('Must pass a repository name')
  else
    uri = '/repos/' + repo_options[:name] + '/packages'
  end

  qs_hash = {}
  qs_hash['q'] = repo_options[:query] if repo_options[:query]
  qs_hash['format'] = repo_options[:format] if repo_options[:format]
  qs_hash['withDeps'] = 1 if repo_options[:with_deps]
  uri += '?' + URI.encode_www_form(qs_hash) if qs_hash
  self.class.get uri
end
repo_show(name) click to toggle source
# File lib/aptly_repo.rb, line 97
def repo_show(name)
  uri = if name.nil?
          '/repos'
        else
          '/repos/' + name
        end
  self.class.get uri
end
repo_upload(repo_options = { name: nil, dir: nil, file: nil, noremove: false, forcereplace: false }) click to toggle source
# File lib/aptly_repo.rb, line 106
def repo_upload(repo_options = { name: nil, dir: nil, file: nil,
                                 noremove: false, forcereplace: false })
  name = repo_options[:name]
  dir  = repo_options[:dir]
  file = repo_options[:file]
  noremove = repo_options[:noremove]
  forcereplace = repo_options[:forcereplace]
  uri = if file.nil?
          "/repos/#{name}/file/#{dir}"
        else
          "/repos/#{name}/file/#{dir}/#{file}"
        end

  uri += '?forceReplace=1' if forcereplace == true
  uri += '?noRemove=1' if noremove == true
  response = self.class.post(uri)

  case response.code
  when 404
    puts 'repository with such name does not exist'
    return response
  end

  json_response = JSON.parse(response.body)

  unless json_response['FailedFiles'].empty?
    puts "Files that failed to upload... #{json_response['FailedFiles']}"
  end

  unless json_response['Report']['Warnings'].empty?
    puts "File upload warning message[s]...\
         #{json_response['Report']['Warnings']}"
  end

  return response
end