Class: Capsium::Cli::Package

Inherits:
Thor
  • Object
show all
Extended by:
ThorExt::Start
Includes:
Formatting
Defined in:
lib/capsium/cli/package.rb

Instance Method Summary collapse

Methods included from ThorExt::Start

extended, start

Instance Method Details

#decrypt(path_to_package) ⇒ Object



128
129
130
131
132
# File 'lib/capsium/cli/package.rb', line 128

def decrypt(path_to_package)
  output = options[:output] || "#{File.basename(path_to_package, '.cap')}-decrypted.cap"
  Capsium::Package::Cipher.new.decrypt(path_to_package, options[:private_key], output)
  puts "Package decrypted: #{output}"
end

#encrypt(path_to_package) ⇒ Object



114
115
116
117
118
119
# File 'lib/capsium/cli/package.rb', line 114

def encrypt(path_to_package)
  Capsium::Package::Cipher.new.encrypt(
    path_to_package, options[:public_key], options[:output]
  )
  puts "Package encrypted: #{options[:output]}"
end

#info(path_to_package) ⇒ Object



14
15
16
17
18
19
20
# File 'lib/capsium/cli/package.rb', line 14

def info(path_to_package)
  package = Capsium::Package.new(path_to_package, store: options[:store])
  puts "Package Path: #{package.path}"
  puts "Routes: #{package.routes.to_hash}"
  puts "Manifest: #{package.manifest.to_hash}"
  print_dependency_tree(package)
end

#manifest(path_to_package) ⇒ Object



25
26
27
28
# File 'lib/capsium/cli/package.rb', line 25

def manifest(path_to_package)
  package = Capsium::Package.new(path_to_package)
  puts JSON.pretty_generate(package.manifest.to_hash)
end

#metadata(path_to_package) ⇒ Object



46
47
48
49
# File 'lib/capsium/cli/package.rb', line 46

def (path_to_package)
  package = Capsium::Package.new(path_to_package)
  puts JSON.pretty_generate(package..to_hash)
end

#pack(path_to_package) ⇒ Object



54
55
56
57
58
# File 'lib/capsium/cli/package.rb', line 54

def pack(path_to_package)
  package = Capsium::Package.new(path_to_package)
  packager = Capsium::Packager.new
  packager.pack(package, options)
end

#routes(path_to_package) ⇒ Object



39
40
41
42
# File 'lib/capsium/cli/package.rb', line 39

def routes(path_to_package)
  package = Capsium::Package.new(path_to_package)
  puts JSON.pretty_generate(package.routes.to_hash)
end

#sign(path_to_package) ⇒ Object



86
87
88
89
# File 'lib/capsium/cli/package.rb', line 86

def sign(path_to_package)
  Capsium::Package::Signer.sign_package(path_to_package, options[:key], options[:cert])
  puts "Package signed: #{path_to_package}"
end

#storage(path_to_package) ⇒ Object



32
33
34
35
# File 'lib/capsium/cli/package.rb', line 32

def storage(path_to_package)
  package = Capsium::Package.new(path_to_package)
  puts JSON.pretty_generate(package.storage.to_hash)
end

#test(path_to_package) ⇒ Object

Raises:

  • (Thor::Error)


136
137
138
139
140
141
142
143
144
145
# File 'lib/capsium/cli/package.rb', line 136

def test(path_to_package)
  package = Capsium::Package.new(path_to_package)
  report = Capsium::Package::Testing::TestSuite.new(package).run
  report.results.each { |result| puts format_result(result) }
  if report.results.empty?
    puts "No tests found (#{Capsium::Package::Testing::TestSuite::TESTS_DIR}/*.yaml)"
  end
  puts report.summary
  raise Thor::Error, "Package tests failed" unless report.ok?
end

#unpack(path_to_package) ⇒ Object



63
64
65
66
67
# File 'lib/capsium/cli/package.rb', line 63

def unpack(path_to_package)
  destination = options[:output] || File.basename(path_to_package, ".cap")
  Capsium::Packager.new.unpack(path_to_package, destination)
  puts "Package unpacked to: #{destination}"
end

#validate(path_to_package) ⇒ Object

Raises:

  • (Thor::Error)


71
72
73
74
75
76
77
# File 'lib/capsium/cli/package.rb', line 71

def validate(path_to_package)
  results = Capsium::Package::Validator.new(path_to_package).run
  results.each { |result| puts format_result(result) }
  return if results.all?(&:ok?)

  raise Thor::Error, "Package validation failed"
end

#verify_signature(path_to_package) ⇒ Object



97
98
99
100
101
102
103
104
105
# File 'lib/capsium/cli/package.rb', line 97

def verify_signature(path_to_package)
  unless Capsium::Package::Signer.verify_package(path_to_package, options[:cert])
    raise Thor::Error, "Signature verification failed: #{path_to_package}"
  end

  puts "Signature valid: #{path_to_package}"
rescue Capsium::Package::Signer::SignatureError => e
  raise Thor::Error, e.message
end