bosh-gen 0.2.0 → 0.3.0
Sign up to get free protection for your applications and to get access to all the features.
- 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: ''
|