bosh-gen 0.4.0 → 0.5.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -1,5 +1,11 @@
1
1
  # Change Log
2
2
 
3
+ ## v0.5.0
4
+
5
+ * `job` - takes a COMMAND argument
6
+ * `source --blob/-b` - file stored in blobs/ folder instead of src/
7
+ * `source` - packaging script includes standard configure/make/make install if .tar.gz or .tgz
8
+
3
9
  ## v0.4
4
10
 
5
11
  * `job` - added --ruby flag to include a ruby/rack-specifc ctl script
@@ -33,27 +33,34 @@ module Bosh
33
33
  end
34
34
 
35
35
  desc "source NAME", "Downloads a source item into the named project"
36
+ method_option :blob, :aliases => ['-b'], :type => :boolean, :desc => "Store file in blobstore"
36
37
  def source(name, uri)
38
+ flags = { :blob => options[:blob] || false }
37
39
  dir = Dir.mktmpdir
38
40
  files = []
39
- say "Downloading #{uri}..."
40
- FileUtils.chdir(dir) do
41
- `wget '#{uri}'`
42
- files = Dir['*'].map {|f| File.expand_path(f)}
41
+ if File.exist?(uri)
42
+ files = [uri]
43
+ else
44
+ say "Downloading #{uri}..."
45
+ FileUtils.chdir(dir) do
46
+ `wget '#{uri}'`
47
+ files = Dir['*'].map {|f| File.expand_path(f)}
48
+ end
43
49
  end
44
50
 
45
51
  require 'bosh/gen/generators/package_source_generator'
46
- Bosh::Gen::Generators::PackageSourceGenerator.start([name, files])
52
+ Bosh::Gen::Generators::PackageSourceGenerator.start([name, files, flags])
47
53
  end
48
54
 
49
- desc "job NAME", "Create a new job"
55
+ desc "job NAME COMMAND", "Create a new job to run 'COMMAND' to launch the process"
50
56
  method_option :dependencies, :aliases => ['-d'], :type => :array, :desc => "List of package dependencies"
51
57
  method_option :ruby, :type => :boolean, :desc => "Use templates for running Ruby/Rack process"
52
- def job(name)
58
+ def job(name, command=nil)
59
+ command ||= 'EXECUTABLE_SERVER'
53
60
  flags = { :ruby => options["ruby"] || false }
54
61
  dependencies = options[:dependencies] || []
55
62
  require 'bosh/gen/generators/job_generator'
56
- Bosh::Gen::Generators::JobGenerator.start([name, dependencies, flags])
63
+ Bosh::Gen::Generators::JobGenerator.start([name, command, dependencies, flags])
57
64
  end
58
65
 
59
66
  desc "template JOB FILE_PATH", "Add a Job template (example FILE_PATH: config/httpd.conf)"
@@ -7,6 +7,7 @@ module Bosh::Gen
7
7
  include Thor::Actions
8
8
 
9
9
  argument :job_name
10
+ argument :command
10
11
  argument :dependencies, :type => :array
11
12
  argument :flags, :type => :hash
12
13
 
@@ -12,9 +12,9 @@
12
12
  #
13
13
  # Clear logs:
14
14
  # jobs/<%= job_name %>/templates/<%= job_name %>_ctl clearlogs
15
-
15
+ <% if command == "EXECUTABLE_SERVER" %>
16
16
  # TODO - change "EXECUTABLE_SERVER" to the command to run
17
-
17
+ <% end %>
18
18
  RUN_DIR=/var/vcap/sys/run/<%= job_name %>
19
19
  LOG_DIR=/var/vcap/sys/log/<%= job_name %>
20
20
  STORE=/var/vcap/store/<%= job_name %>
@@ -22,7 +22,7 @@ PIDFILE=$RUN_DIR/<%= job_name %>.pid
22
22
 
23
23
  export PATH=/var/vcap/packages/ruby/bin:$PATH
24
24
 
25
- COMMAND=${COMMAND:-/var/vcap/packages/<%= job_name %>/bin/EXECUTABLE_SERVER}
25
+ COMMAND=${COMMAND:-/var/vcap/packages/<%= job_name %>/bin/<%= command %>}
26
26
  HOME=${HOME:-/home/vcap}
27
27
 
28
28
  case $1 in
@@ -8,6 +8,7 @@ module Bosh::Gen
8
8
 
9
9
  argument :package_name
10
10
  argument :file_paths
11
+ argument :flags, :type => :hash
11
12
 
12
13
  def check_root_is_release
13
14
  unless File.exist?("jobs") && File.exist?("packages")
@@ -36,13 +37,46 @@ module Bosh::Gen
36
37
  end
37
38
  end
38
39
 
40
+ # Add a guess about the packaging/compilation of the file
41
+ def packaging
42
+ packaging_for_files = ""
43
+ file_paths.each do |path|
44
+ filename = File.basename(path)
45
+ if filename =~ /^(.*)(\.tar\.gz|\.tgz)$/
46
+ package_dir = $1
47
+ # assume its a standard installable source package
48
+ packaging_for_files += <<-BASH.gsub(/^\s{12}/, '')
49
+ tar xfz #{package_name}/#{filename}
50
+ (
51
+ cd #{package_dir}
52
+ ./configure --prefix=$BOSH_INSTALL_TARGET
53
+ make
54
+ make install
55
+ )
56
+
57
+ BASH
58
+ end
59
+ end
60
+ append_file "packages/#{package_name}/packaging", packaging_for_files
61
+ end
62
+
63
+ def readme
64
+ if flags[:blob]
65
+ say_status "readme", "Upload blobs with 'bosh upload blobs'"
66
+ end
67
+ end
68
+
39
69
  private
40
70
  def package_dir(path)
41
71
  File.join("packages", package_name, path)
42
72
  end
43
73
 
44
74
  def source_dir(path)
45
- File.join("src", package_name, path)
75
+ if flags[:blob]
76
+ File.join("blobs", package_name, path)
77
+ else
78
+ File.join("src", package_name, path)
79
+ end
46
80
  end
47
81
  end
48
82
  end
@@ -1,5 +1,5 @@
1
1
  module Bosh
2
2
  module Gen
3
- VERSION = "0.4.0"
3
+ VERSION = "0.5.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.4.0
4
+ version: 0.5.0
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2012-05-12 00:00:00.000000000 Z
12
+ date: 2012-05-13 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: thor
@@ -172,7 +172,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
172
172
  version: '0'
173
173
  segments:
174
174
  - 0
175
- hash: -3504528361068900288
175
+ hash: -3354968755098444003
176
176
  required_rubygems_version: !ruby/object:Gem::Requirement
177
177
  none: false
178
178
  requirements:
@@ -181,7 +181,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
181
181
  version: '0'
182
182
  segments:
183
183
  - 0
184
- hash: -3504528361068900288
184
+ hash: -3354968755098444003
185
185
  requirements: []
186
186
  rubyforge_project:
187
187
  rubygems_version: 1.8.23