bosh-gen 0.1.0 → 0.2.0
Sign up to get free protection for your applications and to get access to all the features.
- data/ChangeLog.md +12 -0
- data/README.md +23 -6
- data/lib/bosh/gen/cli.rb +2 -4
- data/lib/bosh/gen/generators/job_generator.rb +1 -2
- data/lib/bosh/gen/generators/job_generator/templates/{blobs/.gitkeep → .gitkeep} +0 -0
- data/lib/bosh/gen/generators/new_release_generator.rb +6 -5
- data/lib/bosh/gen/generators/package_generator.rb +15 -3
- data/lib/bosh/gen/generators/{job_generator/templates/jobs → package_generator/templates}/.gitkeep +0 -0
- data/lib/bosh/gen/version.rb +1 -1
- metadata +13 -18
- data/lib/bosh/gen/generators/job_generator/templates/packages/.gitkeep +0 -0
- data/lib/bosh/gen/generators/job_generator/templates/src/.gitkeep +0 -0
- data/lib/bosh/gen/generators/package_generator/templates/blobs/.gitkeep +0 -0
- data/lib/bosh/gen/generators/package_generator/templates/jobs/.gitkeep +0 -0
- data/lib/bosh/gen/generators/package_generator/templates/packages/.gitkeep +0 -0
- data/lib/bosh/gen/generators/package_generator/templates/src/.gitkeep +0 -0
data/ChangeLog.md
ADDED
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
|
-
|
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
|
-
$
|
34
|
-
$ bosh
|
35
|
-
$ bosh
|
36
|
-
|
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
|
-
|
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
|
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
|
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" =>
|
44
|
+
config = { "name" => name, "packages" => dependencies, "templates" => {} }
|
46
45
|
create_file job_dir("spec"), YAML.dump(config)
|
47
46
|
end
|
48
47
|
|
File without changes
|
@@ -26,7 +26,7 @@ module Bosh::Gen
|
|
26
26
|
end
|
27
27
|
|
28
28
|
def blobs_yaml
|
29
|
-
create_file "
|
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" => '
|
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 |
|
56
|
-
|
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| "
|
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
|
data/lib/bosh/gen/generators/{job_generator/templates/jobs → package_generator/templates}/.gitkeep
RENAMED
File without changes
|
data/lib/bosh/gen/version.rb
CHANGED
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.
|
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-
|
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: &
|
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: *
|
24
|
+
version_requirements: *70119538265220
|
25
25
|
- !ruby/object:Gem::Dependency
|
26
26
|
name: bosh_cli
|
27
|
-
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: *
|
35
|
+
version_requirements: *70119538264800
|
36
36
|
- !ruby/object:Gem::Dependency
|
37
37
|
name: rake
|
38
|
-
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: *
|
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
|
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
|
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:
|
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:
|
98
|
+
hash: 1548629976559305744
|
104
99
|
requirements: []
|
105
100
|
rubyforge_project:
|
106
101
|
rubygems_version: 1.8.17
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|