chake 0.19 → 0.80

Sign up to get free protection for your applications and to get access to all the features.
Files changed (59) hide show
  1. checksums.yaml +4 -4
  2. data/.ackrc +1 -0
  3. data/.gitignore +2 -0
  4. data/.gitlab-ci.yml +21 -9
  5. data/.manifest +63 -0
  6. data/.rubocop.yml +53 -0
  7. data/.rubocop_todo.yml +40 -0
  8. data/ChangeLog.md +36 -0
  9. data/README.chef.md +70 -0
  10. data/README.itamae.md +58 -0
  11. data/README.md +124 -85
  12. data/README.shell.md +30 -0
  13. data/Rakefile +40 -13
  14. data/bin/chake +12 -1
  15. data/chake.gemspec +16 -16
  16. data/examples/test/.ssh_config +4 -0
  17. data/examples/test/Rakefile +1 -1
  18. data/examples/test/Vagrantfile +6 -0
  19. data/examples/test/config.rb +4 -4
  20. data/examples/test/cookbooks/basics/recipes/default.rb +1 -0
  21. data/examples/test/cookbooks/example/files/default/test +1 -0
  22. data/examples/test/cookbooks/example/files/{host-homer → host-lemur}/test.asc +0 -0
  23. data/lib/chake.rb +92 -168
  24. data/lib/chake/bootstrap/{01_debian.sh → chef/01_debian.sh} +0 -0
  25. data/lib/chake/bootstrap/{99_unsupported.sh → chef/99_unsupported.sh} +0 -0
  26. data/lib/chake/config.rb +16 -0
  27. data/lib/chake/config_manager.rb +93 -0
  28. data/lib/chake/config_manager/chef.rb +35 -0
  29. data/lib/chake/config_manager/itamae.rb +58 -0
  30. data/lib/chake/config_manager/shell.rb +34 -0
  31. data/lib/chake/config_manager/skel/chef/Rakefile +1 -0
  32. data/lib/chake/config_manager/skel/chef/config.rb +4 -0
  33. data/lib/chake/config_manager/skel/chef/cookbooks/basics/recipes/default.rb +1 -0
  34. data/lib/chake/config_manager/skel/chef/nodes.yaml +3 -0
  35. data/lib/chake/config_manager/skel/itamae/Rakefile +1 -0
  36. data/lib/chake/config_manager/skel/itamae/cookbooks/basics/default.rb +1 -0
  37. data/lib/chake/config_manager/skel/itamae/nodes.yaml +3 -0
  38. data/lib/chake/config_manager/skel/itamae/roles/basic.rb +1 -0
  39. data/lib/chake/config_manager/skel/shell/Rakefile +1 -0
  40. data/lib/chake/config_manager/skel/shell/nodes.yaml +3 -0
  41. data/lib/chake/connection.rb +83 -0
  42. data/lib/chake/{backend → connection}/local.rb +2 -8
  43. data/lib/chake/{backend → connection}/ssh.rb +6 -14
  44. data/lib/chake/node.rb +49 -29
  45. data/lib/chake/readline.rb +6 -10
  46. data/lib/chake/version.rb +1 -1
  47. data/man/Rakefile +27 -14
  48. data/man/readme2man.sed +5 -5
  49. data/spec/chake/backend/local_spec.rb +5 -6
  50. data/spec/chake/backend/ssh_spec.rb +8 -10
  51. data/spec/chake/backend_spec.rb +1 -2
  52. data/spec/chake/config_manager/chef_spec.rb +38 -0
  53. data/spec/chake/config_manager/itamae_spec.rb +69 -0
  54. data/spec/chake/config_manager/shell_spec.rb +54 -0
  55. data/spec/chake/config_manager_spec.rb +24 -0
  56. data/spec/chake/node_spec.rb +38 -15
  57. data/spec/spec_helper.rb +23 -19
  58. metadata +61 -14
  59. data/lib/chake/backend.rb +0 -78
@@ -1,42 +1,46 @@
1
1
  begin
2
2
  require 'simplecov'
3
- SimpleCov.start
3
+ SimpleCov.start do
4
+ minimum_coverage 35.3
5
+ track_files 'lib/**/*.rb'
6
+ add_filter %r{^/spec/}
7
+ add_filter %r{^/lib/chake/config_manager/skel/}
8
+ end
4
9
  rescue LoadError
5
10
  puts "W: simplecov not installed, we won't have a coverage report"
6
11
  end
7
12
 
8
13
  require 'chake/node'
9
- require 'chake/backend'
14
+ require 'chake/connection'
10
15
 
11
16
  require 'rspec/version'
12
17
  if RSpec::Version::STRING < '2.14'
13
- puts "Skipping tests, need RSpec >= 2.14"
18
+ puts 'Skipping tests, need RSpec >= 2.14'
14
19
  exit
15
20
  end
16
21
 
17
- shared_examples "Chake::Backend" do |backend_class|
18
-
19
- let(:backend) { backend_class.new(node) }
22
+ shared_examples 'Chake::Connection' do |connection_class|
23
+ let(:connection) { connection_class.new(node) }
20
24
 
21
25
  it('runs commands') do
22
- io = StringIO.new("line 1\nline 2\n")
23
- expect(IO).to receive(:popen).with(backend.command_runner + ['something'], Hash).and_return(io)
24
- expect(backend).to receive(:printf).with(anything, "myhost", "something")
25
- expect(backend).to receive(:printf).with(anything, "myhost", "line 1")
26
- expect(backend).to receive(:printf).with(anything, "myhost", "line 2")
27
- backend.run('something')
26
+ io = StringIO.new("line 1\n line 2\n")
27
+ expect(IO).to receive(:popen).with(connection.command_runner + ['/bin/sh'], 'w+', Hash).and_return(io)
28
+ expect(io).to receive(:write).with('something').ordered
29
+ expect(io).to receive(:close_write).ordered
30
+ expect(node).to receive(:log).with('$ something')
31
+ expect(node).to receive(:log).with('line 1')
32
+ expect(node).to receive(:log).with(' line 2')
33
+ connection.run('something')
28
34
  end
29
35
 
30
36
  it('runs as root') do
31
- expect(backend).to receive(:run).with('sudo something')
32
- backend.run_as_root('something')
37
+ expect(connection).to receive(:run).with('sudo something')
38
+ connection.run_as_root('something')
33
39
  end
34
40
 
35
41
  it('does not use sudo if already root') do
36
- allow(backend.node).to receive(:remote_username).and_return('root')
37
- expect(backend).to receive(:run).with('something')
38
- backend.run_as_root('something')
42
+ allow(connection.node).to receive(:remote_username).and_return('root')
43
+ expect(connection).to receive(:run).with('something')
44
+ connection.run_as_root('something')
39
45
  end
40
-
41
46
  end
42
-
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: chake
3
3
  version: !ruby/object:Gem::Version
4
- version: '0.19'
4
+ version: '0.80'
5
5
  platform: ruby
6
6
  authors:
7
7
  - Antonio Terceiro
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2019-08-17 00:00:00.000000000 Z
11
+ date: 2020-12-12 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -24,6 +24,20 @@ dependencies:
24
24
  - - "~>"
25
25
  - !ruby/object:Gem::Version
26
26
  version: '1.5'
27
+ - !ruby/object:Gem::Dependency
28
+ name: ronn-ng
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - ">="
32
+ - !ruby/object:Gem::Version
33
+ version: '0'
34
+ type: :development
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - ">="
39
+ - !ruby/object:Gem::Version
40
+ version: '0'
27
41
  - !ruby/object:Gem::Dependency
28
42
  name: rspec
29
43
  requirement: !ruby/object:Gem::Requirement
@@ -39,7 +53,7 @@ dependencies:
39
53
  - !ruby/object:Gem::Version
40
54
  version: '0'
41
55
  - !ruby/object:Gem::Dependency
42
- name: simplecov
56
+ name: rubocop
43
57
  requirement: !ruby/object:Gem::Requirement
44
58
  requirements:
45
59
  - - ">="
@@ -53,19 +67,19 @@ dependencies:
53
67
  - !ruby/object:Gem::Version
54
68
  version: '0'
55
69
  - !ruby/object:Gem::Dependency
56
- name: asciidoctor
70
+ name: simplecov
57
71
  requirement: !ruby/object:Gem::Requirement
58
72
  requirements:
59
73
  - - ">="
60
74
  - !ruby/object:Gem::Version
61
- version: 1.5.5
75
+ version: '0'
62
76
  type: :development
63
77
  prerelease: false
64
78
  version_requirements: !ruby/object:Gem::Requirement
65
79
  requirements:
66
80
  - - ">="
67
81
  - !ruby/object:Gem::Version
68
- version: 1.5.5
82
+ version: '0'
69
83
  - !ruby/object:Gem::Dependency
70
84
  name: rake
71
85
  requirement: !ruby/object:Gem::Requirement
@@ -92,27 +106,53 @@ executables:
92
106
  extensions: []
93
107
  extra_rdoc_files: []
94
108
  files:
109
+ - ".ackrc"
95
110
  - ".gitignore"
96
111
  - ".gitlab-ci.yml"
112
+ - ".manifest"
113
+ - ".rubocop.yml"
114
+ - ".rubocop_todo.yml"
97
115
  - ChangeLog.md
98
116
  - Gemfile
99
117
  - LICENSE.txt
118
+ - README.chef.md
119
+ - README.itamae.md
100
120
  - README.md
121
+ - README.shell.md
101
122
  - Rakefile
102
123
  - bin/chake
103
124
  - chake.gemspec
104
125
  - chake.spec.erb
126
+ - examples/test/.ssh_config
105
127
  - examples/test/Rakefile
128
+ - examples/test/Vagrantfile
106
129
  - examples/test/config.rb
107
- - examples/test/cookbooks/example/files/host-homer/test.asc
130
+ - examples/test/cookbooks/basics/recipes/default.rb
131
+ - examples/test/cookbooks/example/files/default/test
132
+ - examples/test/cookbooks/example/files/host-lemur/test.asc
108
133
  - examples/test/cookbooks/example/recipes/default.rb
109
134
  - lib/chake.rb
110
- - lib/chake/backend.rb
111
- - lib/chake/backend/local.rb
112
- - lib/chake/backend/ssh.rb
113
135
  - lib/chake/bootstrap/00_set_hostname.sh
114
- - lib/chake/bootstrap/01_debian.sh
115
- - lib/chake/bootstrap/99_unsupported.sh
136
+ - lib/chake/bootstrap/chef/01_debian.sh
137
+ - lib/chake/bootstrap/chef/99_unsupported.sh
138
+ - lib/chake/config.rb
139
+ - lib/chake/config_manager.rb
140
+ - lib/chake/config_manager/chef.rb
141
+ - lib/chake/config_manager/itamae.rb
142
+ - lib/chake/config_manager/shell.rb
143
+ - lib/chake/config_manager/skel/chef/Rakefile
144
+ - lib/chake/config_manager/skel/chef/config.rb
145
+ - lib/chake/config_manager/skel/chef/cookbooks/basics/recipes/default.rb
146
+ - lib/chake/config_manager/skel/chef/nodes.yaml
147
+ - lib/chake/config_manager/skel/itamae/Rakefile
148
+ - lib/chake/config_manager/skel/itamae/cookbooks/basics/default.rb
149
+ - lib/chake/config_manager/skel/itamae/nodes.yaml
150
+ - lib/chake/config_manager/skel/itamae/roles/basic.rb
151
+ - lib/chake/config_manager/skel/shell/Rakefile
152
+ - lib/chake/config_manager/skel/shell/nodes.yaml
153
+ - lib/chake/connection.rb
154
+ - lib/chake/connection/local.rb
155
+ - lib/chake/connection/ssh.rb
116
156
  - lib/chake/node.rb
117
157
  - lib/chake/readline.rb
118
158
  - lib/chake/tmpdir.rb
@@ -123,6 +163,10 @@ files:
123
163
  - spec/chake/backend/local_spec.rb
124
164
  - spec/chake/backend/ssh_spec.rb
125
165
  - spec/chake/backend_spec.rb
166
+ - spec/chake/config_manager/chef_spec.rb
167
+ - spec/chake/config_manager/itamae_spec.rb
168
+ - spec/chake/config_manager/shell_spec.rb
169
+ - spec/chake/config_manager_spec.rb
126
170
  - spec/chake/node_spec.rb
127
171
  - spec/spec_helper.rb
128
172
  homepage: https://gitlab.com/terceiro/chake
@@ -144,8 +188,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
144
188
  - !ruby/object:Gem::Version
145
189
  version: '0'
146
190
  requirements: []
147
- rubyforge_project:
148
- rubygems_version: 2.7.6.2
191
+ rubygems_version: 3.2.0.rc.2
149
192
  signing_key:
150
193
  specification_version: 4
151
194
  summary: serverless configuration management tool for chef
@@ -153,5 +196,9 @@ test_files:
153
196
  - spec/chake/backend/local_spec.rb
154
197
  - spec/chake/backend/ssh_spec.rb
155
198
  - spec/chake/backend_spec.rb
199
+ - spec/chake/config_manager/chef_spec.rb
200
+ - spec/chake/config_manager/itamae_spec.rb
201
+ - spec/chake/config_manager/shell_spec.rb
202
+ - spec/chake/config_manager_spec.rb
156
203
  - spec/chake/node_spec.rb
157
204
  - spec/spec_helper.rb
@@ -1,78 +0,0 @@
1
- module Chake
2
-
3
- class Backend < Struct.new(:node)
4
-
5
- class CommandFailed < Exception
6
- end
7
-
8
- def scp
9
- ['scp']
10
- end
11
-
12
- def scp_dest
13
- ''
14
- end
15
-
16
- def rsync
17
- ['rsync']
18
- end
19
-
20
- def rsync_dest
21
- node.path + '/'
22
- end
23
-
24
- def run(cmd)
25
- printf "%#{Node.max_node_name_length}s: $ %s\n", node.hostname, cmd
26
- output = IO.popen(command_runner + [cmd], err: [:child, :out])
27
- output.each_line do |line|
28
- printf "%#{Node.max_node_name_length}s: %s\n", node.hostname, line.strip
29
- end
30
- output.close
31
- if $?
32
- status = $?.exitstatus
33
- if status != 0
34
- raise CommandFailed.new([node.hostname, 'FAILED with exit status %d' % status].join(': '))
35
- end
36
- end
37
- end
38
-
39
- def run_shell
40
- system(*shell_command)
41
- end
42
-
43
- def run_as_root(cmd)
44
- if node.remote_username == 'root'
45
- run(cmd)
46
- else
47
- run('sudo ' + cmd)
48
- end
49
- end
50
-
51
- def to_s
52
- self.class.backend_name
53
- end
54
-
55
- def skip?
56
- false
57
- end
58
-
59
- def self.backend_name
60
- name.split("::").last.downcase
61
- end
62
-
63
- def self.inherited(subclass)
64
- @backends ||= []
65
- @backends << subclass
66
- end
67
-
68
- def self.get(name)
69
- backend = @backends.find { |b| b.backend_name == name }
70
- backend || raise(ArgumentError.new("Invalid backend name: #{name}"))
71
- end
72
-
73
- end
74
-
75
- end
76
-
77
- require 'chake/backend/ssh'
78
- require 'chake/backend/local'