chake 0.19 → 0.80

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 (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'