bleetz 2.0 → 2.1

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.
Files changed (3) hide show
  1. data/lib/bleetz.rb +24 -11
  2. data/lib/bleetz/conf.rb +38 -51
  3. metadata +47 -58
data/lib/bleetz.rb CHANGED
@@ -1,5 +1,6 @@
1
1
  require 'rubygems'
2
2
  require 'net/ssh'
3
+ require 'net/ssh/proxy/command'
3
4
  require 'yaml'
4
5
  require 'bleetz/conf.rb'
5
6
  require 'bleetz/object.rb'
@@ -127,18 +128,29 @@ EOF
127
128
  def connect
128
129
  abort "You have to configure SSH options." if @@options.empty?
129
130
  unless @ssh_test
130
- @@before[@action.to_sym].each { |b| execute!(b) } unless @@before[@action.to_sym].nil?
131
+ @@before[@action.to_sym].each { |b|
132
+ execute!(b) } unless @@before[@action.to_sym].nil?
131
133
  end
134
+ if @@options[:proxycmd]
135
+ cmd = @@options.delete(:proxycmd)
136
+ abort "You need specify a proxy command !" if cmd.nil?
137
+ begin
138
+ @@options[:proxy] = Net::SSH::Proxy::Command.new(cmd)
139
+ rescue Exception => e
140
+ abort "SSH proxy command error: #{e.message}"
141
+ end
142
+ end
143
+ @@options[:timeout] = 10 unless @@options[:timeout]
132
144
  begin
133
- Timeout::timeout(@@options.delete(:timeout) || 10) {
134
- Net::SSH.start(@@options.delete(:host), @@options.delete(:username), @@options) { |ssh|
135
- if !@cmd_to_exec.empty?
136
- @cmd_to_exec.each { |command|
137
- output = ssh.exec!(command)
138
- puts output if @verbose
139
- }
140
- end
141
- }
145
+ Net::SSH.start(@@options.delete(:host),
146
+ @@options.delete(:username),
147
+ @@options) { |ssh|
148
+ if !@cmd_to_exec.empty?
149
+ @cmd_to_exec.each { |command|
150
+ output = ssh.exec!(command)
151
+ puts output if @verbose
152
+ }
153
+ end
142
154
  }
143
155
  rescue NotImplementedError => e
144
156
  abort "SSH error: #{e.message}"
@@ -153,7 +165,8 @@ EOF
153
165
  abort "Timed out trying to get a connection."
154
166
  end
155
167
  unless @ssh_test
156
- @@after[@action.to_sym].each { |a| execute!(a) } unless @@after[@action.to_sym].nil?
168
+ @@after[@action.to_sym].each { |a|
169
+ execute!(a) } unless @@after[@action.to_sym].nil?
157
170
  end
158
171
  end
159
172
 
data/lib/bleetz/conf.rb CHANGED
@@ -8,6 +8,14 @@ end
8
8
 
9
9
  module Conf
10
10
 
11
+ MAIN_CALLS = {:func => ['action', 'before', 'after', 'set'],
12
+ :from => ['load']}
13
+
14
+ SUB_CALLS = {:shell => ['action', 'before', 'after'],
15
+ :call => ['action'],
16
+ :error => { :shell => "'shell'. 'shell' has to be called in 'action', 'before' or 'after' functions.",
17
+ :call => "'call'. 'call' has to be called in 'action' function."} }
18
+
11
19
  @@before = {}
12
20
  @@actions = {}
13
21
  @@after = {}
@@ -19,17 +27,8 @@ module Conf
19
27
  end
20
28
 
21
29
  def action(action, desc = "")
22
- check_main_call(:action)
23
- @cmds = []
24
- begin
25
- yield
26
- rescue Exception => e
27
- if e.class.eql? RuntimeError
28
- raise BleetzException.new(e.message)
29
- else
30
- raise BleetzException.new("#{e.class}: #{e.message} in #{e.backtrace[0]}")
31
- end
32
- end
30
+ check_call(:action)
31
+ load_conf { yield }
33
32
  h = { action.to_sym => @cmds }
34
33
  t = { action.to_sym => desc.to_s }
35
34
  @@actions = @@actions.merge(h)
@@ -37,17 +36,8 @@ module Conf
37
36
  end
38
37
 
39
38
  def before(action)
40
- check_main_call(:before)
41
- @before = []
42
- begin
43
- yield
44
- rescue Exception => e
45
- if e.class.eql? RuntimeError
46
- raise BleetzException.new(e.message)
47
- else
48
- raise BleetzException.new("#{e.class}: #{e.message} in #{e.backtrace[0]}")
49
- end
50
- end
39
+ check_call(:before)
40
+ load_conf { yield }
51
41
  h = { action.to_sym => @before }
52
42
  if @@before[action.to_sym].nil?
53
43
  @@before = @@before.merge(h)
@@ -57,17 +47,8 @@ module Conf
57
47
  end
58
48
 
59
49
  def after(action)
60
- @after = []
61
- check_main_call(:after)
62
- begin
63
- yield
64
- rescue Exception => e
65
- if e.class.eql? RuntimeError
66
- raise BleetzException.new(e.message)
67
- else
68
- raise BleetzException.new("#{e.class}: #{e.message} in #{e.backtrace[0]}")
69
- end
70
- end
50
+ check_call(:after)
51
+ load_conf { yield }
71
52
  h = { action.to_sym => @after }
72
53
  if @@before[action.to_sym].nil?
73
54
  @@after = @@after.merge(h)
@@ -77,7 +58,7 @@ module Conf
77
58
  end
78
59
 
79
60
  def shell(cmd)
80
- check_sub_call_for_shell
61
+ check_call(:shell)
81
62
  raise "'shell' needs a String as parameter." unless cmd.is_a? String
82
63
  if caller[1][/`([^']*)'/, 1].eql?("action")
83
64
  @cmds << cmd
@@ -89,36 +70,42 @@ module Conf
89
70
  end
90
71
 
91
72
  def call(action)
92
- check_sub_call(:call)
73
+ check_call(:call)
93
74
  raise "'call :action_name'. You didn't pass a Symbol." unless action.is_a? Symbol
94
75
  @cmds << action
95
76
  end
96
77
 
97
78
  def set(opt, value)
98
- check_main_call(:set)
79
+ check_call(:set)
99
80
  @@options[opt.to_sym] = value
100
81
  end
101
82
 
102
83
  private
103
84
 
104
- def check_main_call(func)
105
- method = caller[2][/`([^']*)'/, 1]
106
- unless method.eql?("load")
107
- raise "#{caller[1].split(" ")[0]} '#{func}'. Main functions cannot be called in functions."
108
- end
109
- end
110
-
111
- def check_sub_call_for_shell
112
- method = caller[2][/`([^']*)'/, 1]
113
- if !method.eql?("action") && !method.eql?("before") && !method.eql?("after")
114
- raise "#{caller[1].split(" ")[0]} 'shell'. 'shell' has to be called in 'action', 'before' or 'after' functions."
85
+ def check_call(func)
86
+ if MAIN_CALLS[:func].include?(func.to_s)
87
+ parent_call = caller[2][/`([^']*)'/, 1]
88
+ unless MAIN_CALLS[:from].include?(parent_call)
89
+ raise "#{caller[1].split(" ")[0]} '#{func}'. Main functions cannot be called in functions."
90
+ end
91
+ else
92
+ parent_call = caller[4][/`([^']*)'/, 1]
93
+ unless SUB_CALLS[func].include?(parent_call)
94
+ raise "#{caller[1].split(" ")[0]} #{SUB_CALLS[:error][func]}"
95
+ end
115
96
  end
116
97
  end
117
98
 
118
- def check_sub_call(func)
119
- method = caller[2][/`([^']*)'/, 1]
120
- unless method.eql?("action")
121
- raise "#{caller[1].split(" ")[0]} '#{func}'. '#{func}' has to be called in 'action' function."
99
+ def load_conf
100
+ @after = @cmds = @before = []
101
+ begin
102
+ yield
103
+ rescue Exception => e
104
+ if e.class.eql? RuntimeError
105
+ raise BleetzException.new(e.message)
106
+ else
107
+ raise BleetzException.new("#{e.class}: #{e.message} in #{e.backtrace[0]}")
108
+ end
122
109
  end
123
110
  end
124
111
 
metadata CHANGED
@@ -1,95 +1,84 @@
1
- --- !ruby/object:Gem::Specification
1
+ --- !ruby/object:Gem::Specification
2
2
  name: bleetz
3
- version: !ruby/object:Gem::Version
4
- hash: 3
3
+ version: !ruby/object:Gem::Version
4
+ version: '2.1'
5
5
  prerelease:
6
- segments:
7
- - 2
8
- - 0
9
- version: "2.0"
10
6
  platform: ruby
11
- authors:
7
+ authors:
12
8
  - Thibaut Deloffre
13
9
  autorequire:
14
10
  bindir: bin
15
11
  cert_chain: []
16
-
17
- date: 2013-01-02 00:00:00 Z
18
- dependencies:
19
- - !ruby/object:Gem::Dependency
12
+ date: 2013-01-28 00:00:00.000000000 Z
13
+ dependencies:
14
+ - !ruby/object:Gem::Dependency
20
15
  name: highline
21
- prerelease: false
22
- requirement: &id001 !ruby/object:Gem::Requirement
16
+ requirement: !ruby/object:Gem::Requirement
23
17
  none: false
24
- requirements:
25
- - - ">="
26
- - !ruby/object:Gem::Version
27
- hash: 3
28
- segments:
29
- - 0
30
- version: "0"
18
+ requirements:
19
+ - - ! '>='
20
+ - !ruby/object:Gem::Version
21
+ version: '0'
31
22
  type: :runtime
32
- version_requirements: *id001
33
- - !ruby/object:Gem::Dependency
34
- name: net-ssh
35
23
  prerelease: false
36
- requirement: &id002 !ruby/object:Gem::Requirement
24
+ version_requirements: !ruby/object:Gem::Requirement
25
+ none: false
26
+ requirements:
27
+ - - ! '>='
28
+ - !ruby/object:Gem::Version
29
+ version: '0'
30
+ - !ruby/object:Gem::Dependency
31
+ name: net-ssh
32
+ requirement: !ruby/object:Gem::Requirement
37
33
  none: false
38
- requirements:
39
- - - ">="
40
- - !ruby/object:Gem::Version
41
- hash: 3
42
- segments:
43
- - 0
44
- version: "0"
34
+ requirements:
35
+ - - ! '>='
36
+ - !ruby/object:Gem::Version
37
+ version: '0'
45
38
  type: :runtime
46
- version_requirements: *id002
39
+ prerelease: false
40
+ version_requirements: !ruby/object:Gem::Requirement
41
+ none: false
42
+ requirements:
43
+ - - ! '>='
44
+ - !ruby/object:Gem::Version
45
+ version: '0'
47
46
  description: Fast KISS deployment tool
48
47
  email: tib@rocknroot.org
49
- executables:
48
+ executables:
50
49
  - bleetz
51
50
  extensions: []
52
-
53
- extra_rdoc_files:
51
+ extra_rdoc_files:
54
52
  - LICENSE.txt
55
- files:
53
+ files:
56
54
  - lib/bleetz.rb
57
55
  - lib/bleetz/conf.rb
58
56
  - lib/bleetz/object.rb
59
57
  - LICENSE.txt
60
58
  - bin/bleetz
61
59
  homepage: https://github.com/TibshoOT/bleetz
62
- licenses:
60
+ licenses:
63
61
  - BSD
64
62
  post_install_message:
65
63
  rdoc_options: []
66
-
67
- require_paths:
64
+ require_paths:
68
65
  - lib
69
- required_ruby_version: !ruby/object:Gem::Requirement
66
+ required_ruby_version: !ruby/object:Gem::Requirement
70
67
  none: false
71
- requirements:
72
- - - ">="
73
- - !ruby/object:Gem::Version
74
- hash: 3
75
- segments:
76
- - 0
77
- version: "0"
78
- required_rubygems_version: !ruby/object:Gem::Requirement
68
+ requirements:
69
+ - - ! '>='
70
+ - !ruby/object:Gem::Version
71
+ version: '0'
72
+ required_rubygems_version: !ruby/object:Gem::Requirement
79
73
  none: false
80
- requirements:
81
- - - ">="
82
- - !ruby/object:Gem::Version
83
- hash: 3
84
- segments:
85
- - 0
86
- version: "0"
74
+ requirements:
75
+ - - ! '>='
76
+ - !ruby/object:Gem::Version
77
+ version: '0'
87
78
  requirements: []
88
-
89
79
  rubyforge_project:
90
80
  rubygems_version: 1.8.24
91
81
  signing_key:
92
82
  specification_version: 3
93
83
  summary: Fast KISS deployment tool
94
84
  test_files: []
95
-