Class: Lexicon::Cli::Command::RemoteCommand

Inherits:
ContainerAwareCommand show all
Defined in:
lib/lexicon/cli/command/remote_command.rb

Instance Method Summary collapse

Methods inherited from ContainerAwareCommand

#initialize

Constructor Details

This class inherits a constructor from Lexicon::Cli::Command::ContainerAwareCommand

Instance Method Details

#delete(version) ⇒ Object



30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
# File 'lib/lexicon/cli/command/remote_command.rb', line 30

def delete(version)
  # @type [Aws::S3::Client] s3
  s3 = get(Lexicon::Common::Remote::S3Client)

  semver = Semantic::Version.new(version) rescue nil

  if semver.nil?
    puts "[ NOK ] #{version} is not a valid version.".red
  else
    bucket = semver.to_s

    if s3.bucket_exist?(bucket)
      s3.ls(bucket)
        .each { |content| s3.raw.delete_object(bucket: bucket, key: content.fetch(:key)) }
      s3.raw.delete_bucket(bucket: bucket)

      puts "[  OK ] The version #{semver} has been deleted from the server".green
    else
      puts "[ NOK ] The version #{semver} does not exist on the server".red
    end
  end
end

#download(version) ⇒ Object



55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
# File 'lib/lexicon/cli/command/remote_command.rb', line 55

def download(version)
  # @type [Package::PackageDownloader] uploader
  downloader = get(Lexicon::Common::Remote::PackageDownloader)
  # @type [Package::DirectoryPackageLoader]
  loader = get(Lexicon::Common::Package::DirectoryPackageLoader)

  semver = Semantic::Version.new(version) rescue nil

  if semver.nil?
    puts "[ NOK ] #{version} is not a valid version.".red
  elsif !loader.load_package(semver.to_s).nil?
    puts "[ NOK ] You already have the version #{semver} locally.".red
  elsif downloader.download(semver)
    puts "[  OK ] The version #{semver} has been downloaded."
  else
    puts '[ NOK ] Error while downloading.'.red
  end
end

#upload(version) ⇒ Object



9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
# File 'lib/lexicon/cli/command/remote_command.rb', line 9

def upload(version)
  # @type [Package::PackageUploader] uploader
  uploader = get(Lexicon::Common::Remote::PackageUploader)
  # @type [Package::DirectoryPackageLoader]
  loader = get(Lexicon::Common::Package::DirectoryPackageLoader)

  semver = Semantic::Version.new(version) rescue nil

  if semver.nil?
    puts "[ NOK ] #{version} is not a valid version.".red
  elsif (package = loader.load_package(semver.to_s)).nil?
    puts "[ NOK ] No package found for version #{semver}.".red
  elsif uploader.upload(package)
    puts "[  OK ] Version #{semver} uploaded.".green
  else
    puts '[ NOK ] Error while uploading.'.red
  end
end