bosh_cli 1.2847.0 → 1.2849.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 4cfc5df8739eb9e7d78d6a9a2c84c0f1f2fd0e1a
4
- data.tar.gz: a1c755ce722b3f95391f3ba5e380d13fd11ff40f
3
+ metadata.gz: 15572f106adf4372613bf2daf782092f696a5b28
4
+ data.tar.gz: 6aedb3168ea8c5f5fe762ed5380febfa65474567
5
5
  SHA512:
6
- metadata.gz: 1dc06fa69265c241c855cc4d93710ddda55b63c82e4cfa4f9a48340e0f97c84763eb1b75ed2ce729f493b41c0cc34507e1660c94a3384f16eeec095b29bf1f0f
7
- data.tar.gz: cb3e88d9a6958aa4ec9da5ce26a28ab1588be46b6eedb4120a90b95ebab4b16916c76873b427722e0a240eaec79afc382c5e69f9f9dc3d5df58c462d330e17bd
6
+ metadata.gz: 805c2d2a0d62d845ddcbea0baec28f33bc2b2994a91e02b34caf8ff6e3854e75fb874fb51105aca90349e4d9ba22a89bed6346c4b1b305a507ba880dc85c8dd1
7
+ data.tar.gz: e9cc95b1a3a407b14db8ab1dfaf230b28aa194b172032329eead4431f274a9714ceddf619564db7033354c0aa2b1e044c032754026bc78fadd183f3e790650d0
data/lib/cli.rb CHANGED
@@ -81,6 +81,7 @@ require 'cli/archive_repository_provider'
81
81
  require 'cli/archive_repository'
82
82
  require 'cli/build_artifact'
83
83
  require 'cli/resources/job'
84
+ require 'cli/resources/license'
84
85
  require 'cli/resources/package'
85
86
  require 'cli/changeset_helper'
86
87
  require 'cli/deployment_manifest_compiler'
@@ -15,6 +15,9 @@ module Bosh::Cli
15
15
  with_indent(' ') do
16
16
  artifact = locate_artifact(resource)
17
17
  if artifact.nil?
18
+ return unless validate(resource)
19
+
20
+ say("No artifact found for #{resource.name}".make_red)
18
21
  artifact = create_artifact(resource)
19
22
  say("Generated version '#{artifact.fingerprint}'".make_green)
20
23
 
@@ -60,10 +63,7 @@ module Bosh::Cli
60
63
  def locate_artifact(resource)
61
64
  artifact = @archive_repository.lookup(resource)
62
65
 
63
- if artifact.nil?
64
- say("No artifact found for #{resource.name}".make_red)
65
- return nil
66
- end
66
+ return nil if artifact.nil?
67
67
 
68
68
  if artifact.dev_artifact? && final? && !dry_run?
69
69
  @archive_repository.promote_from_dev_to_final(artifact)
@@ -76,10 +76,10 @@ module Bosh::Cli
76
76
  end
77
77
 
78
78
  def create_artifact(resource)
79
- tarball_path = safe_temp_file(resource.name, '.tgz')
80
-
81
79
  say('Generating...')
82
80
 
81
+ tarball_path = safe_temp_file(resource.name, '.tgz')
82
+
83
83
  copy_files(resource)
84
84
  resource.run_script(:pre_packaging, staging_dir)
85
85
 
@@ -94,6 +94,16 @@ module Bosh::Cli
94
94
 
95
95
  sha1 = BuildArtifact.checksum(tarball_path)
96
96
  BuildArtifact.new(resource.name, fingerprint, tarball_path, sha1, resource.dependencies, true, !final?)
97
+ ensure
98
+ cleanup
99
+ end
100
+
101
+ def validate(resource)
102
+ resource.validate!
103
+ true
104
+ rescue Bosh::Cli::MissingLicense => e
105
+ say("#{'Warning'.make_red}: #{e.message}")
106
+ false
97
107
  end
98
108
 
99
109
  def file_checksum(path)
@@ -115,5 +125,9 @@ module Bosh::Cli
115
125
  File.open(tmpname, File::RDWR|File::CREAT|File::EXCL).close
116
126
  end
117
127
  end
128
+
129
+ def cleanup
130
+ FileUtils.rm_rf(staging_dir)
131
+ end
118
132
  end
119
133
  end
@@ -48,8 +48,8 @@ module Bosh::Cli
48
48
  end
49
49
  end
50
50
 
51
- rescue Bosh::Blobstore::NotFound
52
- raise BlobstoreError, "Final version of '#{name}' not found in blobstore"
51
+ rescue Bosh::Blobstore::NotFound => e
52
+ raise BlobstoreError, "Final version of '#{resource.name}' not found in blobstore: #{e}"
53
53
  rescue Bosh::Blobstore::BlobstoreError => e
54
54
  raise BlobstoreError, "Blobstore error: #{e}"
55
55
  end
@@ -40,7 +40,7 @@ module Bosh::Cli::Command
40
40
  release.save_config
41
41
  end
42
42
  rescue SemiSemantic::ParseError
43
- err("Invalid version: `#{version}'. Please specify a valid version (ex: 1.0.0 or 1.0-beta.2+dev.10).".make_red)
43
+ err("Invalid version: '#{version}'. Please specify a valid version (ex: 1.0.0 or 1.0-beta.2+dev.10).".make_red)
44
44
  rescue Bosh::Cli::ReleaseVersionError => e
45
45
  err(e.message.make_red)
46
46
  end
@@ -55,13 +55,11 @@ module Bosh::Cli::Command
55
55
 
56
56
  Bosh::Cli::Versions::MultiReleaseSupport.new(@work_dir, default_release_name, self).migrate
57
57
  end
58
-
58
+
59
59
  def create_from_spec(version)
60
- final = options[:final]
61
60
  force = options[:force]
62
61
  name = options[:name]
63
62
  manifest_only = !options[:with_tarball]
64
- dry_run = options[:dry_run]
65
63
 
66
64
  release.blobstore # prime & validate blobstore config
67
65
 
@@ -70,7 +68,7 @@ module Bosh::Cli::Command
70
68
  raise_dirty_state_error if dirty_state? && !force
71
69
 
72
70
  if final
73
- confirm_final_release(dry_run)
71
+ confirm_final_release
74
72
  unless name
75
73
  save_final_release_name if release.final_name.blank?
76
74
  name = release.final_name
@@ -86,14 +84,17 @@ module Bosh::Cli::Command
86
84
 
87
85
  say("Release artifact cache: #{cache_dir}")
88
86
 
87
+ header('Building license')
88
+ license_artifacts = build_licenses
89
+
89
90
  header('Building packages')
90
- package_artifacts = build_packages(dry_run, final)
91
+ package_artifacts = build_packages
91
92
 
92
93
  header('Building jobs')
93
- job_artifacts = build_jobs(package_artifacts.map { |artifact| artifact.name }, dry_run, final)
94
+ job_artifacts = build_jobs(package_artifacts.map { |artifact| artifact.name })
94
95
 
95
96
  header('Building release')
96
- release_builder = build_release(dry_run, final, job_artifacts, manifest_only, package_artifacts, name, version)
97
+ release_builder = build_release(job_artifacts, manifest_only, package_artifacts, license_artifacts, name, version)
97
98
 
98
99
  header('Release summary')
99
100
  show_summary(release_builder)
@@ -115,7 +116,7 @@ module Bosh::Cli::Command
115
116
  release_builder.manifest_path
116
117
  end
117
118
 
118
- def confirm_final_release(dry_run)
119
+ def confirm_final_release
119
120
  confirmed = non_interactive? || agree("Are you sure you want to generate #{'final'.make_red} version? ")
120
121
  if !dry_run && !confirmed
121
122
  say('Canceled release generation'.make_green)
@@ -135,9 +136,31 @@ module Bosh::Cli::Command
135
136
  end
136
137
  end
137
138
 
138
- def build_packages(dry_run, final)
139
- archive_builder = Bosh::Cli::ArchiveBuilder.new(archive_repository_provider,
140
- dry_run: dry_run, final: final)
139
+ def archive_repository_provider
140
+ @archive_repository_provider ||= Bosh::Cli::ArchiveRepositoryProvider.new(work_dir, cache_dir, release.blobstore)
141
+ end
142
+
143
+ def build_release(job_artifacts, manifest_only, package_artifacts, license_artifacts, name, version)
144
+ license_artifact = license_artifacts.first
145
+ release_builder = Bosh::Cli::ReleaseBuilder.new(release, package_artifacts, job_artifacts, license_artifact, name,
146
+ final: final,
147
+ commit_hash: commit_hash,
148
+ version: version,
149
+ uncommitted_changes: dirty_state?
150
+ )
151
+
152
+ unless dry_run
153
+ if manifest_only
154
+ release_builder.build(:generate_tarball => false)
155
+ else
156
+ release_builder.build(:generate_tarball => true)
157
+ end
158
+ end
159
+
160
+ release_builder
161
+ end
162
+
163
+ def build_packages
141
164
  packages = Bosh::Cli::Resources::Package.discover(work_dir)
142
165
  artifacts = packages.map do |package|
143
166
  say("Building #{package.name.make_green}...")
@@ -163,32 +186,7 @@ module Bosh::Cli::Command
163
186
  artifacts
164
187
  end
165
188
 
166
- def archive_repository_provider
167
- @archive_repository_provider ||= Bosh::Cli::ArchiveRepositoryProvider.new(work_dir, cache_dir, release.blobstore)
168
- end
169
-
170
- def build_release(dry_run, final, job_artifacts, manifest_only, package_artifacts, name, version)
171
- release_builder = Bosh::Cli::ReleaseBuilder.new(release, package_artifacts, job_artifacts, name,
172
- final: final,
173
- commit_hash: commit_hash,
174
- version: version,
175
- uncommitted_changes: dirty_state?
176
- )
177
-
178
- unless dry_run
179
- if manifest_only
180
- release_builder.build(:generate_tarball => false)
181
- else
182
- release_builder.build(:generate_tarball => true)
183
- end
184
- end
185
-
186
- release_builder
187
- end
188
-
189
- def build_jobs(packages, dry_run, final)
190
- archive_builder = Bosh::Cli::ArchiveBuilder.new(archive_repository_provider,
191
- :final => final, :dry_run => dry_run)
189
+ def build_jobs(packages)
192
190
  jobs = Bosh::Cli::Resources::Job.discover(work_dir, packages)
193
191
  artifacts = jobs.map do |job|
194
192
  say("Building #{job.name.make_green}...")
@@ -200,6 +198,23 @@ module Bosh::Cli::Command
200
198
  artifacts
201
199
  end
202
200
 
201
+ def build_licenses
202
+ licenses = Bosh::Cli::Resources::License.discover(work_dir)
203
+ artifacts = licenses.map do |license|
204
+ say("Building #{'license'.make_green}...")
205
+ artifact = archive_builder.build(license)
206
+ nl
207
+ artifact
208
+ end.compact
209
+
210
+ artifacts
211
+ end
212
+
213
+ def archive_builder
214
+ @archive_builder ||= Bosh::Cli::ArchiveBuilder.new(archive_repository_provider,
215
+ :final => final, :dry_run => dry_run)
216
+ end
217
+
203
218
  def save_final_release_name
204
219
  release.final_name = DEFAULT_RELEASE_NAME
205
220
  if interactive?
@@ -236,6 +251,17 @@ module Bosh::Cli::Command
236
251
  end
237
252
  end
238
253
 
254
+ if builder.license_artifact
255
+ license_table = table do |t|
256
+ t.headings = %w(Name Version Notes)
257
+ t << artifact_summary(builder.license_artifact)
258
+ end
259
+
260
+ say('License')
261
+ say(license_table)
262
+ nl
263
+ end
264
+
239
265
  say('Packages')
240
266
  say(packages_table)
241
267
  nl
@@ -273,6 +299,14 @@ module Bosh::Cli::Command
273
299
  rescue Bosh::Exec::Error
274
300
  '00000000'
275
301
  end
302
+
303
+ def dry_run
304
+ dry_run ||= options[:dry_run]
305
+ end
306
+
307
+ def final
308
+ final ||= options[:final]
309
+ end
276
310
  end
277
311
  end
278
312
  end
@@ -34,6 +34,7 @@ module Bosh::Cli
34
34
 
35
35
  class InvalidPackage < CliError; error_code(500); end
36
36
  class InvalidJob < CliError; error_code(501); end
37
+ class MissingLicense < CliError; error_code(502); end
37
38
  class InvalidRelease < CliError; error_code(503); end
38
39
  class MissingDependency < CliError; error_code(504); end
39
40
  class CircularDependency < CliError; error_code(505); end
@@ -2,19 +2,30 @@ module Bosh::Cli
2
2
  class ReleaseBuilder
3
3
  include Bosh::Cli::DependencyHelper
4
4
 
5
- attr_reader :release, :packages, :jobs, :name, :version, :build_dir, :commit_hash, :uncommitted_changes
5
+ attr_reader(
6
+ :release,
7
+ :license_artifact,
8
+ :packages,
9
+ :jobs,
10
+ :name,
11
+ :version,
12
+ :build_dir,
13
+ :commit_hash,
14
+ :uncommitted_changes
15
+ )
6
16
 
7
17
  # @param [Bosh::Cli::Release] release Current release
8
18
  # @param [Array<Bosh::Cli::BuildArtifact>] package_artifacts Built packages
9
19
  # @param [Array<Bosh::Cli::BuildArtifact>] job_artifacts Built jobs
10
20
  # @param [Hash] options Release build options
11
- def initialize(release, package_artifacts, job_artifacts, name, options = { })
21
+ def initialize(release, package_artifacts, job_artifacts, license_artifact, name, options = { })
12
22
  @release = release
13
23
  @final = options.has_key?(:final) ? !!options[:final] : false
14
24
  @commit_hash = options.fetch(:commit_hash, '00000000')
15
25
  @uncommitted_changes = options.fetch(:uncommitted_changes, true)
16
26
  @packages = package_artifacts # todo
17
27
  @jobs = job_artifacts # todo
28
+ @license_artifact = license_artifact
18
29
  @name = name
19
30
  raise 'Release name is blank' if name.blank?
20
31
 
@@ -84,32 +95,6 @@ module Bosh::Cli
84
95
  @build_complete = true
85
96
  end
86
97
 
87
- # Copies packages into release
88
- def copy_packages
89
- packages.each do |package_artifact|
90
- name = package_artifact.name
91
- tarball_path = package_artifact.tarball_path
92
- say("%-40s %s" % [name.make_green, pretty_size(tarball_path)])
93
- FileUtils.cp(tarball_path,
94
- File.join(build_dir, "packages", "#{name}.tgz"),
95
- :preserve => true)
96
- end
97
- @packages_copied = true
98
- end
99
-
100
- # Copies jobs into release todo DRY vs copy_packages
101
- def copy_jobs
102
- jobs.each do |job_artifact|
103
- name = job_artifact.name
104
- tarball_path = job_artifact.tarball_path
105
- say("%-40s %s" % [name.make_green, pretty_size(tarball_path)])
106
- FileUtils.cp(tarball_path,
107
- File.join(build_dir, "jobs", "#{name}.tgz"),
108
- :preserve => true)
109
- end
110
- @jobs_copied = true
111
- end
112
-
113
98
  # Generates release manifest
114
99
  def generate_manifest
115
100
  manifest = {}
@@ -122,6 +107,7 @@ module Bosh::Cli
122
107
  'dependencies' => build_artifact.dependencies,
123
108
  }
124
109
  end
110
+
125
111
  manifest['jobs'] = jobs.map do |build_artifact|
126
112
  {
127
113
  'name' => build_artifact.name,
@@ -131,6 +117,14 @@ module Bosh::Cli
131
117
  }
132
118
  end
133
119
 
120
+ unless @license_artifact.nil?
121
+ manifest['license'] = {
122
+ 'version' => @license_artifact.version,
123
+ 'fingerprint' => @license_artifact.fingerprint,
124
+ 'sha1' => @license_artifact.sha1,
125
+ }
126
+ end
127
+
134
128
  manifest['commit_hash'] = commit_hash
135
129
  manifest['uncommitted_changes'] = uncommitted_changes
136
130
 
@@ -162,16 +156,9 @@ module Bosh::Cli
162
156
  generate_manifest unless @manifest_generated
163
157
  return if @release_storage.has_file?(release_filename)
164
158
 
165
- unless @jobs_copied
166
- header("Copying jobs...")
167
- copy_jobs
168
- nl
169
- end
170
- unless @packages_copied
171
- header("Copying packages...")
172
- copy_packages
173
- nl
174
- end
159
+ copy_jobs
160
+ copy_packages
161
+ copy_license
175
162
 
176
163
  FileUtils.mkdir_p(File.dirname(tarball_path))
177
164
 
@@ -206,6 +193,41 @@ module Bosh::Cli
206
193
 
207
194
  private
208
195
 
196
+ # Copies packages into release
197
+ def copy_packages
198
+ header("Copying packages...")
199
+ packages.each do |package_artifact|
200
+ copy_artifact(package_artifact, 'packages')
201
+ end
202
+ nl
203
+ end
204
+
205
+ # Copies jobs into release todo DRY vs copy_packages
206
+ def copy_jobs
207
+ header("Copying jobs...")
208
+ jobs.each do |job_artifact|
209
+ copy_artifact(job_artifact, 'jobs')
210
+ end
211
+ nl
212
+ end
213
+
214
+ def copy_license
215
+ return if @license_artifact.nil?
216
+
217
+ header("Copying license...")
218
+ copy_artifact(@license_artifact)
219
+ nl
220
+ end
221
+
222
+ def copy_artifact(artifact, dest = nil)
223
+ name = artifact.name
224
+ tarball_path = artifact.tarball_path
225
+ say("%-40s %s" % [name.make_green, pretty_size(tarball_path)])
226
+ FileUtils.cp(tarball_path,
227
+ File.join([build_dir, dest, "#{name}.tgz"].compact),
228
+ :preserve => true)
229
+ end
230
+
209
231
  def assign_version
210
232
  latest_final_version = Versions::ReleaseVersionsIndex.new(@final_index).latest_version
211
233
  latest_final_version ||= Bosh::Common::Version::ReleaseVersion.parse('0')
@@ -37,8 +37,9 @@ module Bosh::Cli
37
37
 
38
38
  @name = @manifest["name"]
39
39
  @version = @manifest["version"]
40
- @packages = @manifest["packages"].map { |pkg| OpenStruct.new(pkg) }
41
- @jobs = @manifest["jobs"].map { |job| OpenStruct.new(job) }
40
+ @packages = @manifest.fetch("packages", []).map { |pkg| OpenStruct.new(pkg) }
41
+ @jobs = @manifest.fetch("jobs", []).map { |job| OpenStruct.new(job) }
42
+ @license = @manifest["license"] ? OpenStruct.new(@manifest["license"]) : nil
42
43
  end
43
44
 
44
45
  def compile
@@ -55,6 +56,7 @@ module Bosh::Cli
55
56
  say("SKIP".make_yellow)
56
57
  next
57
58
  end
59
+ nl
58
60
  package_file_path = find_package(package)
59
61
  FileUtils.cp(package_file_path,
60
62
  File.join(@packages_dir, "#{package.name}.tgz"),
@@ -68,12 +70,21 @@ module Bosh::Cli
68
70
  say("SKIP".make_yellow)
69
71
  next
70
72
  end
73
+ nl
71
74
  job_file_path = find_job(job)
72
75
  FileUtils.cp(job_file_path,
73
76
  File.join(@jobs_dir, "#{job.name}.tgz"),
74
77
  :preserve => true)
75
78
  end
76
79
 
80
+ header("Copying license")
81
+ if @license
82
+ say("license (#{@license.version})".ljust(30), " ")
83
+ nl
84
+ license_file_path = find_license(@license)
85
+ FileUtils.cp(license_file_path, File.join(@build_dir, 'license.tgz'), preserve: true)
86
+ end
87
+
77
88
  header("Building tarball")
78
89
  Dir.chdir(@build_dir) do
79
90
  tar_out = `tar -czf #{tarball_path} . 2>&1`
@@ -112,6 +123,14 @@ module Bosh::Cli
112
123
  find_in_indices(final_index, dev_index, job, 'job')
113
124
  end
114
125
 
126
+ def find_license(license)
127
+ final_dir = File.join(@release_source, '.final_builds', 'license')
128
+ final_index = Versions::VersionsIndex.new(final_dir)
129
+ dev_dir = File.join(@release_source, '.dev_builds', 'license')
130
+ dev_index = Versions::VersionsIndex.new(dev_dir)
131
+ find_in_indices(final_index, dev_index, license, 'license')
132
+ end
133
+
115
134
  def find_version_by_sha1(index, sha1)
116
135
  index.select{ |_, build| build['sha1'] == sha1 }.values.first
117
136
  end
@@ -281,8 +281,14 @@ module Bosh::Cli
281
281
  for job in manifest["jobs"]
282
282
  say(" - #{job["name"]} (#{job["version"]})")
283
283
  end
284
- end
285
284
 
285
+ say("\nLicense")
286
+ if manifest["license"].nil? || manifest["license"].empty?
287
+ say(" - none")
288
+ else
289
+ say(" - license (#{manifest["license"]["version"]})")
290
+ end
291
+ end
286
292
  end
287
293
  end
288
294
 
@@ -28,6 +28,10 @@ module Bosh::Cli::Resources
28
28
  spec['name']
29
29
  end
30
30
 
31
+ def additional_fingerprints
32
+ []
33
+ end
34
+
31
35
  def dependencies
32
36
  package_dependencies #TODO: should this be packages or package_dependencies?
33
37
  end
@@ -41,8 +45,6 @@ module Bosh::Cli::Resources
41
45
  end
42
46
 
43
47
  def files
44
- validate!
45
-
46
48
  files = (templates_files + monit_files).map { |absolute_path| [absolute_path, relative_path(absolute_path)] }
47
49
  files << [File.join(job_base, 'spec'), 'job.MF']
48
50
  files
@@ -85,10 +87,6 @@ module Bosh::Cli::Resources
85
87
  end
86
88
  end
87
89
 
88
- def additional_fingerprints
89
- []
90
- end
91
-
92
90
  def format_fingerprint(digest, filename, name, file_mode)
93
91
  "%s%s%s" % [File.basename(filename), digest, file_mode]
94
92
  end
@@ -0,0 +1,52 @@
1
+ module Bosh::Cli::Resources
2
+ class License
3
+ # @param [String] directory base Release directory
4
+ def self.discover(release_base)
5
+ [new(release_base)]
6
+ end
7
+
8
+ attr_reader :release_base
9
+
10
+ def initialize(release_base)
11
+ @release_base = Pathname.new(release_base)
12
+ end
13
+
14
+ def singular_type
15
+ 'license'
16
+ end
17
+
18
+ def plural_type
19
+ ''
20
+ end
21
+
22
+ def name
23
+ 'license'
24
+ end
25
+
26
+ def files
27
+ Dir[File.join(release_base, "{LICENSE,NOTICE}{,.*}")].map { |entry| [entry, File.basename(entry)] }
28
+ end
29
+
30
+ def validate!
31
+ if files.empty?
32
+ raise Bosh::Cli::MissingLicense, "Missing LICENSE or NOTICE in #{release_base.to_s}"
33
+ end
34
+ end
35
+
36
+ def format_fingerprint(digest, filename, name, file_mode)
37
+ "%s%s" % [File.basename(filename), digest]
38
+ end
39
+
40
+ def additional_fingerprints
41
+ []
42
+ end
43
+
44
+ def dependencies
45
+ []
46
+ end
47
+
48
+ def run_script(script_name, *args)
49
+ # no-op
50
+ end
51
+ end
52
+ end
@@ -47,7 +47,7 @@ module Bosh::Cli::Resources
47
47
  end
48
48
 
49
49
  def files
50
- validate!
50
+ resolve_globs
51
51
  known_files = {}
52
52
 
53
53
  files = []
@@ -1,5 +1,5 @@
1
1
  module Bosh
2
2
  module Cli
3
- VERSION = '1.2847.0'
3
+ VERSION = '1.2849.0'
4
4
  end
5
5
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: bosh_cli
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.2847.0
4
+ version: 1.2849.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - VMware
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-02-13 00:00:00.000000000 Z
11
+ date: 2015-02-18 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bosh_common
@@ -16,28 +16,28 @@ dependencies:
16
16
  requirements:
17
17
  - - "~>"
18
18
  - !ruby/object:Gem::Version
19
- version: 1.2847.0
19
+ version: 1.2849.0
20
20
  type: :runtime
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
24
  - - "~>"
25
25
  - !ruby/object:Gem::Version
26
- version: 1.2847.0
26
+ version: 1.2849.0
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: bosh-template
29
29
  requirement: !ruby/object:Gem::Requirement
30
30
  requirements:
31
31
  - - "~>"
32
32
  - !ruby/object:Gem::Version
33
- version: 1.2847.0
33
+ version: 1.2849.0
34
34
  type: :runtime
35
35
  prerelease: false
36
36
  version_requirements: !ruby/object:Gem::Requirement
37
37
  requirements:
38
38
  - - "~>"
39
39
  - !ruby/object:Gem::Version
40
- version: 1.2847.0
40
+ version: 1.2849.0
41
41
  - !ruby/object:Gem::Dependency
42
42
  name: json_pure
43
43
  requirement: !ruby/object:Gem::Requirement
@@ -114,14 +114,14 @@ dependencies:
114
114
  requirements:
115
115
  - - "~>"
116
116
  - !ruby/object:Gem::Version
117
- version: 1.2847.0
117
+ version: 1.2849.0
118
118
  type: :runtime
119
119
  prerelease: false
120
120
  version_requirements: !ruby/object:Gem::Requirement
121
121
  requirements:
122
122
  - - "~>"
123
123
  - !ruby/object:Gem::Version
124
- version: 1.2847.0
124
+ version: 1.2849.0
125
125
  - !ruby/object:Gem::Dependency
126
126
  name: net-ssh
127
127
  requirement: !ruby/object:Gem::Requirement
@@ -194,7 +194,7 @@ dependencies:
194
194
  version: 0.5.4
195
195
  description: |-
196
196
  BOSH CLI
197
- 139553
197
+ 4f117d
198
198
  email: support@cloudfoundry.com
199
199
  executables:
200
200
  - bosh
@@ -278,6 +278,7 @@ files:
278
278
  - lib/cli/release_compiler.rb
279
279
  - lib/cli/release_tarball.rb
280
280
  - lib/cli/resources/job.rb
281
+ - lib/cli/resources/license.rb
281
282
  - lib/cli/resources/package.rb
282
283
  - lib/cli/resurrection.rb
283
284
  - lib/cli/runner.rb