bosh-gen 0.1.0 → 0.2.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.
data/ChangeLog.md ADDED
@@ -0,0 +1,12 @@
1
+ # Change Log
2
+
3
+ ## v0.2
4
+
5
+ Added:
6
+
7
+ * `package`
8
+ * `job`
9
+
10
+ ## v0.1
11
+
12
+ * `new` - create new release
data/README.md CHANGED
@@ -24,19 +24,36 @@ $ bosh-gen new my-new-project --atmos
24
24
  $ bosh-gen new my-new-project # local blobstore with a warning
25
25
 
26
26
  $ cd my-new-project
27
+ ```
28
+
29
+ **NEXT:** Edit `config/final.yml` with your S3 or ATMOS credentials
30
+
31
+ ```
32
+ $ bosh create release
33
+
34
+ $ wget -P /tmp http://ftp.ruby-lang.org/pub/ruby/1.9/ruby-1.9.3-p194.tar.gz
35
+ $ bosh-gen package ruby -f /tmp/ruby-1.9.3-p194.tar.gz
36
+
37
+ $ bosh-gen job some-ruby-job -d ruby
38
+
39
+ $ git add .
40
+ $ git commit -m "added a job + 3 packages"
41
+
27
42
  $ bosh create release
28
43
  ```
29
44
 
30
- TODO:
45
+ It is not ideal to include large source files, such as the 10Mb ruby tarball, in your git repository. Rather, use the blobstore for those:
31
46
 
32
47
  ```
33
- $ bosh-gen job somejob
34
- $ bosh-gen package somepackage -u somejob
35
- $ bosh-gen package anotherpackage
36
- $ bosh-gen job anotherjob -u somepackage anotherpackage
48
+ $ rm -rf src/ruby/ruby-1.9.3-p194.tar.gz
49
+ $ bosh add blob /tmp/ruby-1.9.3-p194.tar.gz ruby
50
+ $ bosh upload blobs
51
+
52
+ $ bosh create release
37
53
  ```
38
54
 
39
- This will create two jobs and two package scaffolds. Both packages will be used by `somejob`, and `anotherpackage` is used by both jobs.
55
+
56
+
40
57
 
41
58
  ## Contributing
42
59
 
data/lib/bosh/gen/cli.rb CHANGED
@@ -23,7 +23,7 @@ module Bosh
23
23
 
24
24
  desc "package NAME", "Create a new package"
25
25
  method_option :dependencies, :aliases => ['-d'], :type => :array, :desc => "List of package dependencies"
26
- method_option :files, :aliases => ['-f', '--src'], :type => :array, :desc => "List of file paths to include"
26
+ method_option :files, :aliases => ['-f', '--src'], :type => :array, :desc => "List of files copy into release"
27
27
  def package(name)
28
28
  dependencies = options[:dependencies] || []
29
29
  files = options[:files] || []
@@ -33,12 +33,10 @@ module Bosh
33
33
 
34
34
  desc "job NAME", "Create a new job"
35
35
  method_option :dependencies, :aliases => ['-d'], :type => :array, :desc => "List of package dependencies"
36
- method_option :templates, :aliases => ['-t'], :type => :array, :desc => "List of templates to use"
37
36
  def job(name)
38
37
  dependencies = options[:dependencies] || []
39
- template_files = options[:template_files] || []
40
38
  require 'bosh/gen/generators/job_generator'
41
- Bosh::Gen::Generators::JobGenerator.start([name, dependencies, template_files])
39
+ Bosh::Gen::Generators::JobGenerator.start([name, dependencies])
42
40
  end
43
41
 
44
42
  no_tasks do
@@ -8,7 +8,6 @@ module Bosh::Gen
8
8
 
9
9
  argument :name
10
10
  argument :dependencies, :type => :array
11
- argument :template_files, :type => :array
12
11
 
13
12
  def self.source_root
14
13
  File.join(File.dirname(__FILE__), "job_generator", "templates")
@@ -42,7 +41,7 @@ module Bosh::Gen
42
41
  end
43
42
 
44
43
  def job_specification
45
- config = { "name" => name, "packages" => dependencies, "templates" => template_files }
44
+ config = { "name" => name, "packages" => dependencies, "templates" => {} }
46
45
  create_file job_dir("spec"), YAML.dump(config)
47
46
  end
48
47
 
@@ -26,7 +26,7 @@ module Bosh::Gen
26
26
  end
27
27
 
28
28
  def blobs_yaml
29
- create_file "blob_index.yml", YAML.dump({})
29
+ create_file "config/blobs.yml", YAML.dump({})
30
30
  end
31
31
 
32
32
  # TODO - support other blobstores
@@ -34,28 +34,30 @@ module Bosh::Gen
34
34
  config_dev = { "dev_name" => name }
35
35
  create_file "config/dev.yml", YAML.dump(config_dev)
36
36
 
37
+ config_private = { "blobstore_secret" => 'BLOBSTORE_SECRET' }
38
+ create_file "config/private.yml", YAML.dump(config_private)
39
+
37
40
  case blobstore_type
38
41
  when :local
39
42
  say_status "warning", "config/final.yml defaulting to local blobstore /tmp/blobstore", :yellow
40
- config_private = {}
41
43
  config_final = { "blobstore" => {
42
44
  "provider" => "local",
43
45
  "options" => { "blobstore_path" => '/tmp/blobstore' }
44
46
  }
45
47
  }
46
48
  when :s3
47
- config_private = { "blobstore_secret" => 'AWS_SECRET_KEY' }
49
+ config_private = { "blobstore_secret" => 'BLOBSTORE_SECRET' }
48
50
  config_final = { "blobstore" => {
49
51
  "provider" => "s3",
50
52
  "options" => {
51
53
  "bucket_name" => "BOSH",
52
54
  "access_key_id" => "AWS_ACCESS_KEY",
55
+ "secret_access_key" => "AWS_SECRET_ACCESS_KEY",
53
56
  "encryption_key" => "PERSONAL_RANDOM_KEY",
54
57
  }
55
58
  }
56
59
  }
57
60
  when :atmos
58
- config_private = { "blobstore_secret" => 'ATMOS_SECRET_KEY' }
59
61
  config_final = { "blobstore" => {
60
62
  "provider" => "atmos",
61
63
  "options" => {
@@ -67,7 +69,6 @@ module Bosh::Gen
67
69
  }
68
70
  end
69
71
 
70
- create_file "config/private.yml", YAML.dump(config_private)
71
72
  create_file "config/final.yml", YAML.dump(config_final)
72
73
  end
73
74
 
@@ -51,14 +51,22 @@ module Bosh::Gen
51
51
  end
52
52
  end
53
53
 
54
+ # Copy the local source files into src/NAME/filename, unless filename
55
+ # already exists as a blob in blobs/NAME/filename.
54
56
  def copy_src_files
55
- files.each do |f|
56
- copy_file File.expand_path(f), src_dir(File.basename(f))
57
+ files.each do |file_path|
58
+ file_name = File.basename(file_path)
59
+ src_file = src_dir(file_name)
60
+ if File.exist? blob_dir(file_name)
61
+ say "Blob '#{file_name}' exists as a blob, skipping..."
62
+ else
63
+ copy_file File.expand_path(file_path), src_file
64
+ end
57
65
  end
58
66
  end
59
67
 
60
68
  def package_specification
61
- src_files = files.map {|f| "src/#{name}/#{File.basename(f)}"}
69
+ src_files = files.map {|f| "#{name}/#{File.basename(f)}"}
62
70
  config = { "name" => name, "dependencies" => dependencies, "files" => src_files }
63
71
  create_file package_dir("spec"), YAML.dump(config)
64
72
  end
@@ -72,6 +80,10 @@ module Bosh::Gen
72
80
  "src/#{name}/#{path}"
73
81
  end
74
82
 
83
+ def blob_dir(path)
84
+ "blobs/#{name}/#{path}"
85
+ end
86
+
75
87
  # Run a command in git.
76
88
  #
77
89
  # ==== Examples
@@ -1,5 +1,5 @@
1
1
  module Bosh
2
2
  module Gen
3
- VERSION = "0.1.0"
3
+ VERSION = "0.2.0"
4
4
  end
5
5
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: bosh-gen
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.0
4
+ version: 0.2.0
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,11 +9,11 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2012-04-22 00:00:00.000000000 Z
12
+ date: 2012-04-27 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: thor
16
- requirement: &70178189586820 !ruby/object:Gem::Requirement
16
+ requirement: &70119538265220 !ruby/object:Gem::Requirement
17
17
  none: false
18
18
  requirements:
19
19
  - - ! '>='
@@ -21,10 +21,10 @@ dependencies:
21
21
  version: '0'
22
22
  type: :runtime
23
23
  prerelease: false
24
- version_requirements: *70178189586820
24
+ version_requirements: *70119538265220
25
25
  - !ruby/object:Gem::Dependency
26
26
  name: bosh_cli
27
- requirement: &70178189585400 !ruby/object:Gem::Requirement
27
+ requirement: &70119538264800 !ruby/object:Gem::Requirement
28
28
  none: false
29
29
  requirements:
30
30
  - - ! '>='
@@ -32,10 +32,10 @@ dependencies:
32
32
  version: '0'
33
33
  type: :runtime
34
34
  prerelease: false
35
- version_requirements: *70178189585400
35
+ version_requirements: *70119538264800
36
36
  - !ruby/object:Gem::Dependency
37
37
  name: rake
38
- requirement: &70178189089040 !ruby/object:Gem::Requirement
38
+ requirement: &70119538264380 !ruby/object:Gem::Requirement
39
39
  none: false
40
40
  requirements:
41
41
  - - ! '>='
@@ -43,7 +43,7 @@ dependencies:
43
43
  version: '0'
44
44
  type: :development
45
45
  prerelease: false
46
- version_requirements: *70178189089040
46
+ version_requirements: *70119538264380
47
47
  description: Generators for creating BOSH releases
48
48
  email:
49
49
  - drnicwilliams@gmail.com
@@ -53,6 +53,7 @@ extensions: []
53
53
  extra_rdoc_files: []
54
54
  files:
55
55
  - .gitignore
56
+ - ChangeLog.md
56
57
  - Gemfile
57
58
  - LICENSE
58
59
  - README.md
@@ -62,20 +63,14 @@ files:
62
63
  - lib/bosh/gen.rb
63
64
  - lib/bosh/gen/cli.rb
64
65
  - lib/bosh/gen/generators/job_generator.rb
65
- - lib/bosh/gen/generators/job_generator/templates/blobs/.gitkeep
66
- - lib/bosh/gen/generators/job_generator/templates/jobs/.gitkeep
67
- - lib/bosh/gen/generators/job_generator/templates/packages/.gitkeep
68
- - lib/bosh/gen/generators/job_generator/templates/src/.gitkeep
66
+ - lib/bosh/gen/generators/job_generator/templates/.gitkeep
69
67
  - lib/bosh/gen/generators/new_release_generator.rb
70
68
  - lib/bosh/gen/generators/new_release_generator/templates/blobs/.gitkeep
71
69
  - lib/bosh/gen/generators/new_release_generator/templates/jobs/.gitkeep
72
70
  - lib/bosh/gen/generators/new_release_generator/templates/packages/.gitkeep
73
71
  - lib/bosh/gen/generators/new_release_generator/templates/src/.gitkeep
74
72
  - lib/bosh/gen/generators/package_generator.rb
75
- - lib/bosh/gen/generators/package_generator/templates/blobs/.gitkeep
76
- - lib/bosh/gen/generators/package_generator/templates/jobs/.gitkeep
77
- - lib/bosh/gen/generators/package_generator/templates/packages/.gitkeep
78
- - lib/bosh/gen/generators/package_generator/templates/src/.gitkeep
73
+ - lib/bosh/gen/generators/package_generator/templates/.gitkeep
79
74
  - lib/bosh/gen/version.rb
80
75
  homepage: https://github.com/drnic/bosh-gen
81
76
  licenses: []
@@ -91,7 +86,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
91
86
  version: '0'
92
87
  segments:
93
88
  - 0
94
- hash: 4165498384782219336
89
+ hash: 1548629976559305744
95
90
  required_rubygems_version: !ruby/object:Gem::Requirement
96
91
  none: false
97
92
  requirements:
@@ -100,7 +95,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
100
95
  version: '0'
101
96
  segments:
102
97
  - 0
103
- hash: 4165498384782219336
98
+ hash: 1548629976559305744
104
99
  requirements: []
105
100
  rubyforge_project:
106
101
  rubygems_version: 1.8.17