teleport 1.0.5 → 1.0.6

Sign up to get free protection for your applications and to get access to all the features.
@@ -23,6 +23,16 @@ module Teleport
23
23
  @config.dsl.extend(Util)
24
24
  @config.dsl.run_verbose!
25
25
 
26
+ # handle CONFIG_RECIPE
27
+ if @config_file[:recipe]
28
+ _with_callback(:install) do
29
+ _with_callback(:recipes) do
30
+ _recipe(@config_file[:recipe])
31
+ end
32
+ end
33
+ return
34
+ end
35
+
26
36
  _with_callback(:install) do
27
37
  _gems
28
38
  _hostname
@@ -49,13 +59,13 @@ module Teleport
49
59
 
50
60
  def _read_config
51
61
  # read DIR/config to get CONFIG_HOST (and set @host)
52
- config_file = { }
62
+ @config_file = { }
53
63
  File.readlines("config").each do |i|
54
64
  if i =~ /CONFIG_([^=]+)='([^']*)'/
55
- config_file[$1.downcase.to_sym] = $2
65
+ @config_file[$1.downcase.to_sym] = $2
56
66
  end
57
67
  end
58
- @host = config_file[:host]
68
+ @host = @config_file[:host]
59
69
 
60
70
  # do we have a server object?
61
71
  @server = @config.server(@host)
@@ -92,19 +102,21 @@ module Teleport
92
102
  list += @server.recipes if @server
93
103
 
94
104
  banner "Recipes..."
95
- list.each do |recipe|
96
- path = "#{DATA}/recipes/#{recipe}"
97
- if File.exists?(path)
98
- banner "#{recipe}..."
99
- # eval ruby files instead of running them
100
- if path =~ /\.rb$/
101
- eval(File.read(path), nil, path)
102
- else
103
- run path
104
- end
105
+ list.each { |i| _recipe(i) }
106
+ end
107
+
108
+ def _recipe(recipe)
109
+ path = "#{DATA}/recipes/#{recipe}"
110
+ if File.exists?(path)
111
+ banner "#{recipe}..."
112
+ # eval ruby files instead of running them
113
+ if path =~ /\.rb$/
114
+ eval(File.read(path), nil, path)
105
115
  else
106
- fatal "Recipe '#{recipe}' does not exist inside recipes/"
116
+ run path
107
117
  end
118
+ else
119
+ fatal "Recipe '#{recipe}' does not exist inside recipes/"
108
120
  end
109
121
  end
110
122
 
@@ -33,6 +33,9 @@ module Teleport
33
33
  o.on("-i", "--infer", "infer a new Telfile from YOUR machine") do |f|
34
34
  @options[:cmd] = :infer
35
35
  end
36
+ o.on("-r", "--recipe [RECIPE]", "run a single recipe instead of a full install") do |f|
37
+ @options[:recipe] = f
38
+ end
36
39
  o.on_tail("-h", "--help", "print this help text") do
37
40
  puts opt
38
41
  exit(0)
@@ -63,6 +66,11 @@ module Teleport
63
66
  fatal("Sadly, I can't find Telfile here. Please create one.")
64
67
  end
65
68
  @config = Config.new("Telfile")
69
+
70
+ # check if recipe exists
71
+ if @options[:recipe] && !File.exists?("recipes/#{@options[:recipe]}")
72
+ fatal "I couldn't find recipe #{@options[:recipe].inspect}. Oops."
73
+ end
66
74
  end
67
75
 
68
76
  # Assemble the the tgz before we teleport to the host
@@ -83,7 +91,8 @@ module Teleport
83
91
  File.open("#{DIR}/config", "w") do |f|
84
92
  f.puts("CONFIG_HOST='#{@options[:host]}'")
85
93
  f.puts("CONFIG_RUBY='#{@config.ruby}'")
86
- f.puts("CONFIG_RUBYGEMS='#{RUBYGEMS}'")
94
+ f.puts("CONFIG_RUBYGEMS='#{RUBYGEMS}'")
95
+ f.puts("CONFIG_RECIPE='#{@options[:recipe]}'") if @options[:recipe]
87
96
  end
88
97
  # keys
89
98
  if ssh_key = @config.ssh_key
@@ -1,4 +1,4 @@
1
1
  module Teleport
2
2
  # Gem version
3
- VERSION = "1.0.5"
3
+ VERSION = "1.0.6"
4
4
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: teleport
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.5
4
+ version: 1.0.6
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-04-17 00:00:00.000000000 Z
12
+ date: 2012-05-04 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: amazon-ec2
@@ -136,7 +136,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
136
136
  version: '0'
137
137
  segments:
138
138
  - 0
139
- hash: -562607455023534771
139
+ hash: -2626968326399993902
140
140
  required_rubygems_version: !ruby/object:Gem::Requirement
141
141
  none: false
142
142
  requirements:
@@ -145,7 +145,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
145
145
  version: '0'
146
146
  segments:
147
147
  - 0
148
- hash: -562607455023534771
148
+ hash: -2626968326399993902
149
149
  requirements: []
150
150
  rubyforge_project: teleport
151
151
  rubygems_version: 1.8.21