bosh-gen 0.2.0 → 0.3.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 +9 -2
- data/README.md +7 -0
- data/lib/bosh/gen/cli.rb +21 -1
- data/lib/bosh/gen/generators/job_generator.rb +1 -1
- data/lib/bosh/gen/generators/job_template_generator.rb +56 -0
- data/lib/bosh/gen/generators/new_release_generator.rb +4 -0
- data/lib/bosh/gen/generators/new_release_generator/templates/README.md.tt +4 -0
- data/lib/bosh/gen/generators/package_source_generator.rb +49 -0
- data/lib/bosh/gen/version.rb +1 -1
- metadata +29 -11
data/ChangeLog.md
CHANGED
@@ -1,11 +1,18 @@
|
|
1
1
|
# Change Log
|
2
2
|
|
3
|
+
## v0.3
|
4
|
+
|
5
|
+
Added:
|
6
|
+
|
7
|
+
* `template` - add a template/file to a job
|
8
|
+
* `source` - download and add a source file/tarball to a package
|
9
|
+
|
3
10
|
## v0.2
|
4
11
|
|
5
12
|
Added:
|
6
13
|
|
7
|
-
* `package`
|
8
|
-
* `job`
|
14
|
+
* `package` - create package scaffold, including source files
|
15
|
+
* `job` - create job scaffold
|
9
16
|
|
10
17
|
## v0.1
|
11
18
|
|
data/README.md
CHANGED
@@ -52,6 +52,13 @@ $ bosh upload blobs
|
|
52
52
|
$ bosh create release
|
53
53
|
```
|
54
54
|
|
55
|
+
Your job may need additional configuration files or executables installed.
|
56
|
+
|
57
|
+
```
|
58
|
+
$ bosh-gen template some-ruby-job config/some-config.ini
|
59
|
+
create jobs/some-ruby-job/templates/some-config.ini.erb
|
60
|
+
force jobs/some-ruby-job/spec
|
61
|
+
```
|
55
62
|
|
56
63
|
|
57
64
|
|
data/lib/bosh/gen/cli.rb
CHANGED
@@ -31,6 +31,20 @@ module Bosh
|
|
31
31
|
Bosh::Gen::Generators::PackageGenerator.start([name, dependencies, files])
|
32
32
|
end
|
33
33
|
|
34
|
+
desc "source NAME", "Downloads a source item into the named project"
|
35
|
+
def source(name, uri)
|
36
|
+
dir = Dir.mktmpdir
|
37
|
+
files = []
|
38
|
+
say "Downloading #{uri}..."
|
39
|
+
FileUtils.chdir(dir) do
|
40
|
+
`wget '#{uri}'`
|
41
|
+
files = Dir['*'].map {|f| File.expand_path(f)}
|
42
|
+
end
|
43
|
+
|
44
|
+
require 'bosh/gen/generators/package_source_generator'
|
45
|
+
Bosh::Gen::Generators::PackageSourceGenerator.start([name, files])
|
46
|
+
end
|
47
|
+
|
34
48
|
desc "job NAME", "Create a new job"
|
35
49
|
method_option :dependencies, :aliases => ['-d'], :type => :array, :desc => "List of package dependencies"
|
36
50
|
def job(name)
|
@@ -38,7 +52,13 @@ module Bosh
|
|
38
52
|
require 'bosh/gen/generators/job_generator'
|
39
53
|
Bosh::Gen::Generators::JobGenerator.start([name, dependencies])
|
40
54
|
end
|
41
|
-
|
55
|
+
|
56
|
+
desc "template JOB FILE_PATH", "Add a Job template (example FILE_PATH: config/httpd.conf)"
|
57
|
+
def template(job_name, file_path)
|
58
|
+
require 'bosh/gen/generators/job_template_generator'
|
59
|
+
Bosh::Gen::Generators::JobTemplateGenerator.start([job_name, file_path])
|
60
|
+
end
|
61
|
+
|
42
62
|
no_tasks do
|
43
63
|
def cyan; "\033[36m" end
|
44
64
|
def clear; "\033[0m" end
|
@@ -0,0 +1,56 @@
|
|
1
|
+
require 'yaml'
|
2
|
+
require 'thor/group'
|
3
|
+
|
4
|
+
module Bosh::Gen
|
5
|
+
module Generators
|
6
|
+
class JobTemplateGenerator < Thor::Group
|
7
|
+
include Thor::Actions
|
8
|
+
|
9
|
+
argument :job_name
|
10
|
+
argument :file_path
|
11
|
+
|
12
|
+
def check_root_is_release
|
13
|
+
unless File.exist?("jobs") && File.exist?("packages")
|
14
|
+
raise Thor::Error.new("run inside a BOSH release project")
|
15
|
+
end
|
16
|
+
end
|
17
|
+
|
18
|
+
def check_job
|
19
|
+
raise Thor::Error.new("'#{job_name}' job does not yet exist; either create or fix spelling") unless File.exist?(job_dir(""))
|
20
|
+
raise Thor::Error.new("'jobs/#{job_name}/spec' is missing") unless File.exist?(job_dir("spec"))
|
21
|
+
end
|
22
|
+
|
23
|
+
def check_file_path
|
24
|
+
raise Thor::Error.new("'#{file_path}' must be a relative path, such as 'config/httpd.conf'") if file_path[0] == "/"
|
25
|
+
end
|
26
|
+
|
27
|
+
def touch_template_erb
|
28
|
+
create_file job_template_dir(template_name)
|
29
|
+
end
|
30
|
+
|
31
|
+
def add_template_to_spec
|
32
|
+
current_spec = YAML.load_file(job_dir("spec"))
|
33
|
+
current_spec["templates"] ||= {}
|
34
|
+
current_spec["templates"][template_name] = file_path
|
35
|
+
create_file job_dir("spec"), YAML.dump(current_spec), :force => true
|
36
|
+
end
|
37
|
+
|
38
|
+
private
|
39
|
+
def file_name
|
40
|
+
File.basename(file_path)
|
41
|
+
end
|
42
|
+
|
43
|
+
def template_name
|
44
|
+
"#{file_name}.erb"
|
45
|
+
end
|
46
|
+
|
47
|
+
def job_dir(path)
|
48
|
+
File.join("jobs", job_name, path)
|
49
|
+
end
|
50
|
+
|
51
|
+
def job_template_dir(path)
|
52
|
+
File.join("jobs", job_name, "templates", path)
|
53
|
+
end
|
54
|
+
end
|
55
|
+
end
|
56
|
+
end
|
@@ -0,0 +1,49 @@
|
|
1
|
+
require 'yaml'
|
2
|
+
require 'thor/group'
|
3
|
+
|
4
|
+
module Bosh::Gen
|
5
|
+
module Generators
|
6
|
+
class PackageSourceGenerator < Thor::Group
|
7
|
+
include Thor::Actions
|
8
|
+
|
9
|
+
argument :package_name
|
10
|
+
argument :file_paths
|
11
|
+
|
12
|
+
def check_root_is_release
|
13
|
+
unless File.exist?("jobs") && File.exist?("packages")
|
14
|
+
raise Thor::Error.new("run inside a BOSH release project")
|
15
|
+
end
|
16
|
+
end
|
17
|
+
|
18
|
+
def check_package
|
19
|
+
raise Thor::Error.new("'#{package_name}' package does not yet exist; either create or fix spelling") unless File.exist?(package_dir(""))
|
20
|
+
raise Thor::Error.new("'packages/#{package_name}/spec' is missing") unless File.exist?(package_dir("spec"))
|
21
|
+
end
|
22
|
+
|
23
|
+
def add_filenames_to_spec
|
24
|
+
current_spec = YAML.load_file(package_dir("spec"))
|
25
|
+
current_spec["files"] ||= []
|
26
|
+
file_paths.each do |path|
|
27
|
+
current_spec["files"] << File.join(package_name, File.basename(path))
|
28
|
+
end
|
29
|
+
create_file package_dir("spec"), YAML.dump(current_spec), :force => true
|
30
|
+
end
|
31
|
+
|
32
|
+
def copy_files
|
33
|
+
source_paths << File.dirname(file_paths.first) # file_paths all in same folder
|
34
|
+
file_paths.each do |path|
|
35
|
+
copy_file path, source_dir(File.basename(path))
|
36
|
+
end
|
37
|
+
end
|
38
|
+
|
39
|
+
private
|
40
|
+
def package_dir(path)
|
41
|
+
File.join("packages", package_name, path)
|
42
|
+
end
|
43
|
+
|
44
|
+
def source_dir(path)
|
45
|
+
File.join("src", package_name, path)
|
46
|
+
end
|
47
|
+
end
|
48
|
+
end
|
49
|
+
end
|
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.3.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-05-04 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: thor
|
16
|
-
requirement:
|
16
|
+
requirement: !ruby/object:Gem::Requirement
|
17
17
|
none: false
|
18
18
|
requirements:
|
19
19
|
- - ! '>='
|
@@ -21,10 +21,15 @@ dependencies:
|
|
21
21
|
version: '0'
|
22
22
|
type: :runtime
|
23
23
|
prerelease: false
|
24
|
-
version_requirements:
|
24
|
+
version_requirements: !ruby/object:Gem::Requirement
|
25
|
+
none: false
|
26
|
+
requirements:
|
27
|
+
- - ! '>='
|
28
|
+
- !ruby/object:Gem::Version
|
29
|
+
version: '0'
|
25
30
|
- !ruby/object:Gem::Dependency
|
26
31
|
name: bosh_cli
|
27
|
-
requirement:
|
32
|
+
requirement: !ruby/object:Gem::Requirement
|
28
33
|
none: false
|
29
34
|
requirements:
|
30
35
|
- - ! '>='
|
@@ -32,10 +37,15 @@ dependencies:
|
|
32
37
|
version: '0'
|
33
38
|
type: :runtime
|
34
39
|
prerelease: false
|
35
|
-
version_requirements:
|
40
|
+
version_requirements: !ruby/object:Gem::Requirement
|
41
|
+
none: false
|
42
|
+
requirements:
|
43
|
+
- - ! '>='
|
44
|
+
- !ruby/object:Gem::Version
|
45
|
+
version: '0'
|
36
46
|
- !ruby/object:Gem::Dependency
|
37
47
|
name: rake
|
38
|
-
requirement:
|
48
|
+
requirement: !ruby/object:Gem::Requirement
|
39
49
|
none: false
|
40
50
|
requirements:
|
41
51
|
- - ! '>='
|
@@ -43,7 +53,12 @@ dependencies:
|
|
43
53
|
version: '0'
|
44
54
|
type: :development
|
45
55
|
prerelease: false
|
46
|
-
version_requirements:
|
56
|
+
version_requirements: !ruby/object:Gem::Requirement
|
57
|
+
none: false
|
58
|
+
requirements:
|
59
|
+
- - ! '>='
|
60
|
+
- !ruby/object:Gem::Version
|
61
|
+
version: '0'
|
47
62
|
description: Generators for creating BOSH releases
|
48
63
|
email:
|
49
64
|
- drnicwilliams@gmail.com
|
@@ -64,13 +79,16 @@ files:
|
|
64
79
|
- lib/bosh/gen/cli.rb
|
65
80
|
- lib/bosh/gen/generators/job_generator.rb
|
66
81
|
- lib/bosh/gen/generators/job_generator/templates/.gitkeep
|
82
|
+
- lib/bosh/gen/generators/job_template_generator.rb
|
67
83
|
- lib/bosh/gen/generators/new_release_generator.rb
|
84
|
+
- lib/bosh/gen/generators/new_release_generator/templates/README.md.tt
|
68
85
|
- lib/bosh/gen/generators/new_release_generator/templates/blobs/.gitkeep
|
69
86
|
- lib/bosh/gen/generators/new_release_generator/templates/jobs/.gitkeep
|
70
87
|
- lib/bosh/gen/generators/new_release_generator/templates/packages/.gitkeep
|
71
88
|
- lib/bosh/gen/generators/new_release_generator/templates/src/.gitkeep
|
72
89
|
- lib/bosh/gen/generators/package_generator.rb
|
73
90
|
- lib/bosh/gen/generators/package_generator/templates/.gitkeep
|
91
|
+
- lib/bosh/gen/generators/package_source_generator.rb
|
74
92
|
- lib/bosh/gen/version.rb
|
75
93
|
homepage: https://github.com/drnic/bosh-gen
|
76
94
|
licenses: []
|
@@ -86,7 +104,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
86
104
|
version: '0'
|
87
105
|
segments:
|
88
106
|
- 0
|
89
|
-
hash:
|
107
|
+
hash: -3342967338916077757
|
90
108
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
91
109
|
none: false
|
92
110
|
requirements:
|
@@ -95,10 +113,10 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
95
113
|
version: '0'
|
96
114
|
segments:
|
97
115
|
- 0
|
98
|
-
hash:
|
116
|
+
hash: -3342967338916077757
|
99
117
|
requirements: []
|
100
118
|
rubyforge_project:
|
101
|
-
rubygems_version: 1.8.
|
119
|
+
rubygems_version: 1.8.23
|
102
120
|
signing_key:
|
103
121
|
specification_version: 3
|
104
122
|
summary: ''
|