bard 2.0.0.beta → 2.0.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 (174) hide show
  1. checksums.yaml +4 -4
  2. data/.github/workflows/ci.yml +6 -1
  3. data/CLAUDE.md +76 -0
  4. data/MIGRATION_GUIDE.md +24 -9
  5. data/PLUGINS.md +99 -0
  6. data/README.md +14 -6
  7. data/Rakefile +3 -1
  8. data/bard.gemspec +2 -1
  9. data/cucumber.yml +1 -0
  10. data/features/ci.feature +63 -0
  11. data/features/data.feature +13 -0
  12. data/features/deploy.feature +14 -0
  13. data/features/deploy_git_workflow.feature +89 -0
  14. data/features/run.feature +14 -0
  15. data/features/step_definitions/bard_steps.rb +136 -0
  16. data/features/support/bard-coverage +16 -0
  17. data/features/support/env.rb +14 -39
  18. data/features/support/test_server.rb +216 -0
  19. data/lib/bard/cli.rb +14 -31
  20. data/lib/bard/command.rb +10 -69
  21. data/lib/bard/config.rb +40 -183
  22. data/lib/bard/copy.rb +28 -103
  23. data/lib/bard/plugins/data.rb +56 -0
  24. data/lib/bard/{ci → plugins/deploy/ci}/github_actions.rb +3 -4
  25. data/lib/bard/plugins/deploy/ci/jenkins.rb +176 -0
  26. data/lib/bard/{ci → plugins/deploy/ci}/local.rb +7 -7
  27. data/lib/bard/{ci → plugins/deploy/ci}/runner.rb +38 -4
  28. data/lib/bard/plugins/deploy/ci.rb +38 -0
  29. data/lib/bard/plugins/deploy/ssh_strategy.rb +27 -0
  30. data/lib/bard/{deploy_strategy.rb → plugins/deploy/strategy.rb} +1 -1
  31. data/lib/bard/plugins/deploy.rb +240 -0
  32. data/lib/bard/{git.rb → plugins/git.rb} +6 -3
  33. data/lib/bard/{github.rb → plugins/github.rb} +4 -6
  34. data/lib/bard/{deploy_strategy/github_pages.rb → plugins/github_pages/strategy.rb} +41 -13
  35. data/lib/bard/plugins/github_pages.rb +30 -0
  36. data/lib/bard/plugins/hurt.rb +13 -0
  37. data/{install_files → lib/bard/plugins/install}/.github/dependabot.yml +2 -1
  38. data/{install_files → lib/bard/plugins/install}/.github/workflows/cache-ci.yml +1 -1
  39. data/{install_files → lib/bard/plugins/install}/.github/workflows/ci.yml +2 -2
  40. data/lib/bard/plugins/install.rb +9 -0
  41. data/lib/bard/plugins/open.rb +20 -0
  42. data/lib/bard/{ping.rb → plugins/ping/check.rb} +4 -4
  43. data/lib/bard/plugins/ping/target_methods.rb +23 -0
  44. data/lib/bard/plugins/ping.rb +10 -0
  45. data/lib/bard/plugins/run.rb +19 -0
  46. data/lib/bard/plugins/setup.rb +54 -0
  47. data/lib/bard/plugins/ssh/connection.rb +75 -0
  48. data/lib/bard/plugins/ssh/copy.rb +95 -0
  49. data/lib/bard/{ssh_server.rb → plugins/ssh/server.rb} +17 -42
  50. data/lib/bard/plugins/ssh/target_methods.rb +20 -0
  51. data/lib/bard/plugins/ssh.rb +10 -0
  52. data/lib/bard/plugins/url/target_methods.rb +23 -0
  53. data/lib/bard/plugins/url.rb +1 -0
  54. data/lib/bard/plugins/vim.rb +6 -0
  55. data/lib/bard/retryable.rb +25 -0
  56. data/lib/bard/secrets.rb +10 -0
  57. data/lib/bard/target.rb +27 -185
  58. data/lib/bard/version.rb +1 -1
  59. data/lib/bard.rb +1 -3
  60. data/spec/acceptance/docker/Dockerfile +3 -2
  61. data/spec/bard/capability_spec.rb +8 -50
  62. data/spec/bard/ci/github_actions_spec.rb +117 -14
  63. data/spec/bard/ci/jenkins_spec.rb +139 -0
  64. data/spec/bard/ci/runner_spec.rb +61 -0
  65. data/spec/bard/ci_spec.rb +1 -1
  66. data/spec/bard/cli/ci_spec.rb +34 -27
  67. data/spec/bard/cli/data_spec.rb +7 -26
  68. data/spec/bard/cli/deploy_spec.rb +87 -46
  69. data/spec/bard/cli/hurt_spec.rb +3 -9
  70. data/spec/bard/cli/install_spec.rb +5 -11
  71. data/spec/bard/cli/master_key_spec.rb +5 -19
  72. data/spec/bard/cli/open_spec.rb +14 -30
  73. data/spec/bard/cli/ping_spec.rb +8 -23
  74. data/spec/bard/cli/run_spec.rb +27 -21
  75. data/spec/bard/cli/setup_spec.rb +10 -27
  76. data/spec/bard/cli/ssh_spec.rb +10 -25
  77. data/spec/bard/cli/stage_spec.rb +28 -23
  78. data/spec/bard/cli/vim_spec.rb +3 -9
  79. data/spec/bard/command_spec.rb +1 -8
  80. data/spec/bard/config_spec.rb +78 -98
  81. data/spec/bard/copy_spec.rb +54 -18
  82. data/spec/bard/deploy_strategy/ssh_spec.rb +65 -7
  83. data/spec/bard/deploy_strategy_spec.rb +1 -1
  84. data/spec/bard/dynamic_dsl_spec.rb +18 -98
  85. data/spec/bard/git_spec.rb +9 -5
  86. data/spec/bard/github_spec.rb +2 -2
  87. data/spec/bard/ping_spec.rb +5 -5
  88. data/spec/bard/ssh_copy_spec.rb +44 -0
  89. data/spec/bard/ssh_server_spec.rb +8 -101
  90. data/spec/bard/target_spec.rb +66 -109
  91. data/spec/spec_helper.rb +6 -1
  92. metadata +79 -143
  93. data/README.rdoc +0 -15
  94. data/features/bard_check.feature +0 -94
  95. data/features/bard_deploy.feature +0 -18
  96. data/features/bard_pull.feature +0 -112
  97. data/features/bard_push.feature +0 -112
  98. data/features/podman_testcontainers.feature +0 -16
  99. data/features/step_definitions/check_steps.rb +0 -47
  100. data/features/step_definitions/git_steps.rb +0 -73
  101. data/features/step_definitions/global_steps.rb +0 -56
  102. data/features/step_definitions/podman_steps.rb +0 -23
  103. data/features/step_definitions/rails_steps.rb +0 -44
  104. data/features/step_definitions/submodule_steps.rb +0 -110
  105. data/features/support/grit_ext.rb +0 -13
  106. data/features/support/io.rb +0 -32
  107. data/features/support/podman.rb +0 -153
  108. data/lib/bard/ci/jenkins.rb +0 -105
  109. data/lib/bard/ci/retryable.rb +0 -27
  110. data/lib/bard/ci.rb +0 -50
  111. data/lib/bard/cli/ci.rb +0 -66
  112. data/lib/bard/cli/command.rb +0 -26
  113. data/lib/bard/cli/data.rb +0 -45
  114. data/lib/bard/cli/deploy.rb +0 -85
  115. data/lib/bard/cli/hurt.rb +0 -20
  116. data/lib/bard/cli/install.rb +0 -16
  117. data/lib/bard/cli/master_key.rb +0 -17
  118. data/lib/bard/cli/new.rb +0 -101
  119. data/lib/bard/cli/new_rails_template.rb +0 -197
  120. data/lib/bard/cli/open.rb +0 -22
  121. data/lib/bard/cli/ping.rb +0 -18
  122. data/lib/bard/cli/provision.rb +0 -34
  123. data/lib/bard/cli/run.rb +0 -24
  124. data/lib/bard/cli/setup.rb +0 -56
  125. data/lib/bard/cli/ssh.rb +0 -14
  126. data/lib/bard/cli/stage.rb +0 -27
  127. data/lib/bard/cli/vim.rb +0 -13
  128. data/lib/bard/default_config.rb +0 -35
  129. data/lib/bard/deploy_strategy/ssh.rb +0 -19
  130. data/lib/bard/github_pages.rb +0 -134
  131. data/lib/bard/provision/app.rb +0 -10
  132. data/lib/bard/provision/apt.rb +0 -16
  133. data/lib/bard/provision/authorizedkeys.rb +0 -25
  134. data/lib/bard/provision/data.rb +0 -27
  135. data/lib/bard/provision/deploy.rb +0 -10
  136. data/lib/bard/provision/http.rb +0 -16
  137. data/lib/bard/provision/logrotation.rb +0 -30
  138. data/lib/bard/provision/masterkey.rb +0 -18
  139. data/lib/bard/provision/mysql.rb +0 -22
  140. data/lib/bard/provision/passenger.rb +0 -37
  141. data/lib/bard/provision/repo.rb +0 -72
  142. data/lib/bard/provision/rvm.rb +0 -22
  143. data/lib/bard/provision/ssh.rb +0 -72
  144. data/lib/bard/provision/swapfile.rb +0 -21
  145. data/lib/bard/provision/user.rb +0 -42
  146. data/lib/bard/provision.rb +0 -16
  147. data/lib/bard/server.rb +0 -117
  148. data/spec/bard/cli/command_spec.rb +0 -50
  149. data/spec/bard/cli/new_spec.rb +0 -73
  150. data/spec/bard/cli/provision_spec.rb +0 -42
  151. data/spec/bard/github_pages_spec.rb +0 -143
  152. data/spec/bard/provision/app_spec.rb +0 -33
  153. data/spec/bard/provision/apt_spec.rb +0 -39
  154. data/spec/bard/provision/authorizedkeys_spec.rb +0 -40
  155. data/spec/bard/provision/data_spec.rb +0 -54
  156. data/spec/bard/provision/deploy_spec.rb +0 -33
  157. data/spec/bard/provision/http_spec.rb +0 -57
  158. data/spec/bard/provision/logrotation_spec.rb +0 -34
  159. data/spec/bard/provision/masterkey_spec.rb +0 -63
  160. data/spec/bard/provision/mysql_spec.rb +0 -55
  161. data/spec/bard/provision/passenger_spec.rb +0 -81
  162. data/spec/bard/provision/repo_spec.rb +0 -208
  163. data/spec/bard/provision/rvm_spec.rb +0 -49
  164. data/spec/bard/provision/ssh_spec.rb +0 -229
  165. data/spec/bard/provision/swapfile_spec.rb +0 -32
  166. data/spec/bard/provision/user_spec.rb +0 -103
  167. data/spec/bard/provision_spec.rb +0 -28
  168. data/spec/bard/server_spec.rb +0 -127
  169. /data/lib/bard/{ci → plugins/deploy/ci}/state.rb +0 -0
  170. /data/{install_files → lib/bard/plugins/install}/apt_dependencies.rb +0 -0
  171. /data/{install_files → lib/bard/plugins/install}/ci +0 -0
  172. /data/{install_files → lib/bard/plugins/install}/setup +0 -0
  173. /data/{install_files → lib/bard/plugins/install}/specified_bundler.rb +0 -0
  174. /data/{install_files → lib/bard/plugins/install}/specified_ruby.rb +0 -0
@@ -1,5 +1,9 @@
1
1
  require "spec_helper"
2
+ require "shellwords"
2
3
  require "bard/target"
4
+ require "bard/plugins/url/target_methods"
5
+ require "bard/plugins/ssh/target_methods"
6
+ require "bard/plugins/ping/target_methods"
3
7
 
4
8
  describe Bard::Target do
5
9
  let(:config) { double("config", project_name: "testapp") }
@@ -16,12 +20,9 @@ describe Bard::Target do
16
20
 
17
21
  it "initializes with no capabilities" do
18
22
  expect(target.has_capability?(:ssh)).to be false
19
- expect(target.has_capability?(:ping)).to be false
23
+ expect(target.has_capability?(:url)).to be false
20
24
  end
21
25
 
22
- it "initializes with no deploy strategy" do
23
- expect(target.deploy_strategy).to be_nil
24
- end
25
26
  end
26
27
 
27
28
  describe "#ssh" do
@@ -37,7 +38,11 @@ describe Bard::Target do
37
38
  end
38
39
 
39
40
  it "parses SSH URI" do
40
- expect(target.ssh_uri).to eq("deploy@example.com:22")
41
+ expect(target.ssh_uri).to be_a(URI::Generic)
42
+ expect(target.ssh_uri.scheme).to eq("ssh")
43
+ expect(target.ssh_uri.user).to eq("deploy")
44
+ expect(target.ssh_uri.host).to eq("example.com")
45
+ expect(target.ssh_uri.port).to eq(22)
41
46
  end
42
47
  end
43
48
 
@@ -71,50 +76,67 @@ describe Bard::Target do
71
76
  expect(target.env).to eq("RAILS_ENV=production")
72
77
  end
73
78
 
74
- it "auto-configures ping URL from hostname" do
75
- expect(target.ping_urls).to include("example.com")
79
+ it "auto-configures url from hostname" do
80
+ expect(target.url).to eq("https://example.com")
76
81
  end
77
82
  end
78
83
 
79
- context "with false value" do
80
- before { target.ssh(false) }
81
-
84
+ context "without ssh configured" do
82
85
  it "does not enable SSH capability" do
83
86
  expect(target.has_capability?(:ssh)).to be false
84
87
  end
85
88
 
86
- it "sets server to nil" do
87
- expect(target.server).to be_nil
89
+ it "returns nil from ssh getter" do
90
+ expect(target.ssh).to be_nil
88
91
  end
89
92
  end
90
93
  end
91
94
 
92
- describe "#ping" do
93
- it "enables ping capability with single URL" do
94
- target.ping("https://example.com")
95
- expect(target.has_capability?(:ping)).to be true
96
- expect(target.ping_urls).to include("https://example.com")
95
+ describe "#url" do
96
+ it "enables url capability" do
97
+ target.url("https://example.com")
98
+ expect(target.has_capability?(:url)).to be true
99
+ expect(target.url).to eq("https://example.com")
100
+ end
101
+
102
+ it "normalizes URLs without scheme" do
103
+ target.url("example.com")
104
+ expect(target.url).to eq("https://example.com")
97
105
  end
98
106
 
107
+ it "disables url with false" do
108
+ target.url("https://example.com")
109
+ target.url(false)
110
+ expect(target.has_capability?(:url)).to be false
111
+ expect(target.url).to be_nil
112
+ end
113
+ end
114
+
115
+ describe "#ping" do
99
116
  it "accepts multiple URLs" do
100
- target.ping("https://example.com", "/health", "/status")
101
- expect(target.ping_urls).to include("https://example.com")
102
- expect(target.ping_urls).to include("/health")
103
- expect(target.ping_urls).to include("/status")
117
+ target.ping("https://example.com", "https://example.com/health")
118
+ expect(target.ping).to eq(["https://example.com", "https://example.com/health"])
119
+ end
120
+
121
+ it "defaults to url when not explicitly set" do
122
+ target.url("https://example.com")
123
+ expect(target.ping).to eq(["https://example.com"])
124
+ end
125
+
126
+ it "returns empty array when no url or ping configured" do
127
+ expect(target.ping).to eq([])
104
128
  end
105
129
 
106
130
  it "disables ping with false" do
107
131
  target.ping("https://example.com")
108
132
  target.ping(false)
109
- expect(target.has_capability?(:ping)).to be false
110
- expect(target.ping_urls).to be_empty
133
+ expect(target.ping).to be_empty
111
134
  end
112
135
  end
113
136
 
114
137
  describe "#path" do
115
- it "stores and retrieves path" do
116
- target.path("/var/www/app")
117
- expect(target.path).to eq("/var/www/app")
138
+ it "defaults to project name" do
139
+ expect(target.path).to eq("testapp")
118
140
  end
119
141
 
120
142
  it "can be set via ssh options" do
@@ -123,108 +145,43 @@ describe Bard::Target do
123
145
  end
124
146
  end
125
147
 
126
- describe "remote command execution" do
127
- before do
128
- target.ssh("deploy@example.com:22", path: "/app")
148
+ describe "command execution" do
149
+ describe "local (base)" do
150
+ it "runs commands locally" do
151
+ expect(Bard::Command).to receive(:run!)
152
+ .with("ls", verbose: false, quiet: false)
153
+ target.run!("ls")
154
+ end
129
155
  end
130
156
 
131
- describe "#run!" do
132
- it "requires SSH capability" do
133
- target_without_ssh = described_class.new(:local, config)
134
- expect { target_without_ssh.run!("ls") }
135
- .to raise_error(/SSH not configured/)
157
+ describe "remote (SSH)" do
158
+ before do
159
+ target.ssh("deploy@example.com:22", path: "/app")
136
160
  end
137
161
 
138
- it "executes command on remote server" do
162
+ it "runs commands on remote server" do
163
+ expected_cmd = "ssh -tt -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null -o LogLevel=ERROR deploy@example.com #{Shellwords.shellescape("cd /app && ls")}"
139
164
  expect(Bard::Command).to receive(:run!)
140
- .with("ls", on: target.server, home: false, verbose: false, quiet: false)
165
+ .with(expected_cmd, verbose: false, quiet: false)
141
166
  target.run!("ls")
142
167
  end
143
- end
144
-
145
- describe "#run" do
146
- it "requires SSH capability" do
147
- target_without_ssh = described_class.new(:local, config)
148
- expect { target_without_ssh.run("ls") }
149
- .to raise_error(/SSH not configured/)
150
- end
151
168
 
152
- it "executes command on remote server without raising" do
169
+ it "runs commands without raising on remote server" do
170
+ expected_cmd = "ssh -tt -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null -o LogLevel=ERROR deploy@example.com #{Shellwords.shellescape("cd /app && ls")}"
153
171
  expect(Bard::Command).to receive(:run)
154
- .with("ls", on: target.server, home: false, verbose: false, quiet: false)
172
+ .with(expected_cmd, verbose: false, quiet: false)
155
173
  target.run("ls")
156
174
  end
157
- end
158
-
159
- describe "#exec!" do
160
- it "requires SSH capability" do
161
- target_without_ssh = described_class.new(:local, config)
162
- expect { target_without_ssh.exec!("ls") }
163
- .to raise_error(/SSH not configured/)
164
- end
165
175
 
166
176
  it "replaces process with remote command" do
177
+ expected_cmd = "ssh -tt -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null -o LogLevel=ERROR deploy@example.com #{Shellwords.shellescape("cd /app && ls")}"
167
178
  expect(Bard::Command).to receive(:exec!)
168
- .with("ls", on: target.server, home: false)
179
+ .with(expected_cmd)
169
180
  target.exec!("ls")
170
181
  end
171
182
  end
172
183
  end
173
184
 
174
- describe "file transfer" do
175
- let(:source_target) do
176
- t = described_class.new(:source, config)
177
- t.ssh("source@example.com:22", path: "/source")
178
- t
179
- end
180
-
181
- let(:dest_target) do
182
- t = described_class.new(:dest, config)
183
- t.ssh("dest@example.com:22", path: "/dest")
184
- t
185
- end
186
-
187
- describe "#copy_file" do
188
- it "requires SSH capability on source" do
189
- target_without_ssh = described_class.new(:local, config)
190
- expect { target_without_ssh.copy_file("test.txt", to: dest_target) }
191
- .to raise_error(/SSH not configured/)
192
- end
193
-
194
- it "requires SSH capability on destination" do
195
- target_without_ssh = described_class.new(:local, config)
196
- expect { source_target.copy_file("test.txt", to: target_without_ssh) }
197
- .to raise_error(/SSH not configured/)
198
- end
199
-
200
- it "copies file via SCP" do
201
- expect(Bard::Copy).to receive(:file)
202
- .with("test.txt", from: source_target, to: dest_target, verbose: false)
203
- source_target.copy_file("test.txt", to: dest_target)
204
- end
205
- end
206
-
207
- describe "#copy_dir" do
208
- it "requires SSH capability on source" do
209
- target_without_ssh = described_class.new(:local, config)
210
- expect { target_without_ssh.copy_dir("test/", to: dest_target) }
211
- .to raise_error(/SSH not configured/)
212
- end
213
-
214
- it "requires SSH capability on destination" do
215
- target_without_ssh = described_class.new(:local, config)
216
- expect { source_target.copy_dir("test/", to: target_without_ssh) }
217
- .to raise_error(/SSH not configured/)
218
- end
219
-
220
- it "syncs directory via rsync" do
221
- expect(Bard::Copy).to receive(:dir)
222
- .with("test/", from: source_target, to: dest_target, verbose: false)
223
- source_target.copy_dir("test/", to: dest_target)
224
- end
225
- end
226
- end
227
-
228
185
  describe "#to_s" do
229
186
  it "returns the target key as string" do
230
187
  expect(target.to_s).to eq("production")
data/spec/spec_helper.rb CHANGED
@@ -1,5 +1,10 @@
1
1
  require "simplecov"
2
- SimpleCov.start
2
+ SimpleCov.start do
3
+ command_name "RSpec"
4
+ track_files "lib/**/*.rb"
5
+ add_filter "spec/"
6
+ add_filter "features/"
7
+ end
3
8
 
4
9
  require "webmock/rspec"
5
10
 
metadata CHANGED
@@ -1,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: bard
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.0.0.beta
4
+ version: 2.0.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Micah Geisel
8
8
  bindir: bin
9
9
  cert_chain: []
10
- date: 2025-12-18 00:00:00.000000000 Z
10
+ date: 2026-05-19 00:00:00.000000000 Z
11
11
  dependencies:
12
12
  - !ruby/object:Gem::Dependency
13
13
  name: thor
@@ -38,21 +38,21 @@ dependencies:
38
38
  - !ruby/object:Gem::Version
39
39
  version: '0'
40
40
  - !ruby/object:Gem::Dependency
41
- name: term-ansicolor
41
+ name: rbnacl
42
42
  requirement: !ruby/object:Gem::Requirement
43
43
  requirements:
44
44
  - - ">="
45
45
  - !ruby/object:Gem::Version
46
- version: 1.0.3
46
+ version: '0'
47
47
  type: :runtime
48
48
  prerelease: false
49
49
  version_requirements: !ruby/object:Gem::Requirement
50
50
  requirements:
51
51
  - - ">="
52
52
  - !ruby/object:Gem::Version
53
- version: 1.0.3
53
+ version: '0'
54
54
  - !ruby/object:Gem::Dependency
55
- name: rbnacl
55
+ name: base64
56
56
  requirement: !ruby/object:Gem::Requirement
57
57
  requirements:
58
58
  - - ">="
@@ -66,13 +66,13 @@ dependencies:
66
66
  - !ruby/object:Gem::Version
67
67
  version: '0'
68
68
  - !ruby/object:Gem::Dependency
69
- name: base64
69
+ name: rake
70
70
  requirement: !ruby/object:Gem::Requirement
71
71
  requirements:
72
72
  - - ">="
73
73
  - !ruby/object:Gem::Version
74
74
  version: '0'
75
- type: :runtime
75
+ type: :development
76
76
  prerelease: false
77
77
  version_requirements: !ruby/object:Gem::Requirement
78
78
  requirements:
@@ -80,7 +80,7 @@ dependencies:
80
80
  - !ruby/object:Gem::Version
81
81
  version: '0'
82
82
  - !ruby/object:Gem::Dependency
83
- name: rake
83
+ name: rspec
84
84
  requirement: !ruby/object:Gem::Requirement
85
85
  requirements:
86
86
  - - ">="
@@ -94,7 +94,7 @@ dependencies:
94
94
  - !ruby/object:Gem::Version
95
95
  version: '0'
96
96
  - !ruby/object:Gem::Dependency
97
- name: rspec
97
+ name: debug
98
98
  requirement: !ruby/object:Gem::Requirement
99
99
  requirements:
100
100
  - - ">="
@@ -108,7 +108,7 @@ dependencies:
108
108
  - !ruby/object:Gem::Version
109
109
  version: '0'
110
110
  - !ruby/object:Gem::Dependency
111
- name: debug
111
+ name: cucumber
112
112
  requirement: !ruby/object:Gem::Requirement
113
113
  requirements:
114
114
  - - ">="
@@ -122,7 +122,7 @@ dependencies:
122
122
  - !ruby/object:Gem::Version
123
123
  version: '0'
124
124
  - !ruby/object:Gem::Dependency
125
- name: cucumber
125
+ name: testcontainers
126
126
  requirement: !ruby/object:Gem::Requirement
127
127
  requirements:
128
128
  - - ">="
@@ -136,7 +136,7 @@ dependencies:
136
136
  - !ruby/object:Gem::Version
137
137
  version: '0'
138
138
  - !ruby/object:Gem::Dependency
139
- name: testcontainers
139
+ name: ostruct
140
140
  requirement: !ruby/object:Gem::Requirement
141
141
  requirements:
142
142
  - - ">="
@@ -161,94 +161,72 @@ files:
161
161
  - ".gitmodules"
162
162
  - ".rspec"
163
163
  - ARCHITECTURE.md
164
+ - CLAUDE.md
164
165
  - CUSTOM_STRATEGIES.md
165
166
  - Gemfile
166
167
  - LICENSE
167
168
  - MIGRATION_GUIDE.md
169
+ - PLUGINS.md
168
170
  - README.md
169
- - README.rdoc
170
171
  - Rakefile
171
172
  - bard.gemspec
172
173
  - bin/bard
173
174
  - bin/setup
174
- - features/bard_check.feature
175
- - features/bard_deploy.feature
176
- - features/bard_pull.feature
177
- - features/bard_push.feature
178
- - features/podman_testcontainers.feature
179
- - features/step_definitions/check_steps.rb
180
- - features/step_definitions/git_steps.rb
181
- - features/step_definitions/global_steps.rb
182
- - features/step_definitions/podman_steps.rb
183
- - features/step_definitions/rails_steps.rb
184
- - features/step_definitions/submodule_steps.rb
175
+ - cucumber.yml
176
+ - features/ci.feature
177
+ - features/data.feature
178
+ - features/deploy.feature
179
+ - features/deploy_git_workflow.feature
180
+ - features/run.feature
181
+ - features/step_definitions/bard_steps.rb
182
+ - features/support/bard-coverage
185
183
  - features/support/env.rb
186
- - features/support/grit_ext.rb
187
- - features/support/io.rb
188
- - features/support/podman.rb
189
- - install_files/.github/dependabot.yml
190
- - install_files/.github/workflows/cache-ci.yml
191
- - install_files/.github/workflows/ci.yml
192
- - install_files/apt_dependencies.rb
193
- - install_files/ci
194
- - install_files/setup
195
- - install_files/specified_bundler.rb
196
- - install_files/specified_ruby.rb
184
+ - features/support/test_server.rb
197
185
  - lib/bard.rb
198
- - lib/bard/ci.rb
199
- - lib/bard/ci/github_actions.rb
200
- - lib/bard/ci/jenkins.rb
201
- - lib/bard/ci/local.rb
202
- - lib/bard/ci/retryable.rb
203
- - lib/bard/ci/runner.rb
204
- - lib/bard/ci/state.rb
205
186
  - lib/bard/cli.rb
206
- - lib/bard/cli/ci.rb
207
- - lib/bard/cli/command.rb
208
- - lib/bard/cli/data.rb
209
- - lib/bard/cli/deploy.rb
210
- - lib/bard/cli/hurt.rb
211
- - lib/bard/cli/install.rb
212
- - lib/bard/cli/master_key.rb
213
- - lib/bard/cli/new.rb
214
- - lib/bard/cli/new_rails_template.rb
215
- - lib/bard/cli/open.rb
216
- - lib/bard/cli/ping.rb
217
- - lib/bard/cli/provision.rb
218
- - lib/bard/cli/run.rb
219
- - lib/bard/cli/setup.rb
220
- - lib/bard/cli/ssh.rb
221
- - lib/bard/cli/stage.rb
222
- - lib/bard/cli/vim.rb
223
187
  - lib/bard/command.rb
224
188
  - lib/bard/config.rb
225
189
  - lib/bard/copy.rb
226
- - lib/bard/default_config.rb
227
- - lib/bard/deploy_strategy.rb
228
- - lib/bard/deploy_strategy/github_pages.rb
229
- - lib/bard/deploy_strategy/ssh.rb
230
- - lib/bard/git.rb
231
- - lib/bard/github.rb
232
- - lib/bard/github_pages.rb
233
- - lib/bard/ping.rb
234
- - lib/bard/provision.rb
235
- - lib/bard/provision/app.rb
236
- - lib/bard/provision/apt.rb
237
- - lib/bard/provision/authorizedkeys.rb
238
- - lib/bard/provision/data.rb
239
- - lib/bard/provision/deploy.rb
240
- - lib/bard/provision/http.rb
241
- - lib/bard/provision/logrotation.rb
242
- - lib/bard/provision/masterkey.rb
243
- - lib/bard/provision/mysql.rb
244
- - lib/bard/provision/passenger.rb
245
- - lib/bard/provision/repo.rb
246
- - lib/bard/provision/rvm.rb
247
- - lib/bard/provision/ssh.rb
248
- - lib/bard/provision/swapfile.rb
249
- - lib/bard/provision/user.rb
250
- - lib/bard/server.rb
251
- - lib/bard/ssh_server.rb
190
+ - lib/bard/plugins/data.rb
191
+ - lib/bard/plugins/deploy.rb
192
+ - lib/bard/plugins/deploy/ci.rb
193
+ - lib/bard/plugins/deploy/ci/github_actions.rb
194
+ - lib/bard/plugins/deploy/ci/jenkins.rb
195
+ - lib/bard/plugins/deploy/ci/local.rb
196
+ - lib/bard/plugins/deploy/ci/runner.rb
197
+ - lib/bard/plugins/deploy/ci/state.rb
198
+ - lib/bard/plugins/deploy/ssh_strategy.rb
199
+ - lib/bard/plugins/deploy/strategy.rb
200
+ - lib/bard/plugins/git.rb
201
+ - lib/bard/plugins/github.rb
202
+ - lib/bard/plugins/github_pages.rb
203
+ - lib/bard/plugins/github_pages/strategy.rb
204
+ - lib/bard/plugins/hurt.rb
205
+ - lib/bard/plugins/install.rb
206
+ - lib/bard/plugins/install/.github/dependabot.yml
207
+ - lib/bard/plugins/install/.github/workflows/cache-ci.yml
208
+ - lib/bard/plugins/install/.github/workflows/ci.yml
209
+ - lib/bard/plugins/install/apt_dependencies.rb
210
+ - lib/bard/plugins/install/ci
211
+ - lib/bard/plugins/install/setup
212
+ - lib/bard/plugins/install/specified_bundler.rb
213
+ - lib/bard/plugins/install/specified_ruby.rb
214
+ - lib/bard/plugins/open.rb
215
+ - lib/bard/plugins/ping.rb
216
+ - lib/bard/plugins/ping/check.rb
217
+ - lib/bard/plugins/ping/target_methods.rb
218
+ - lib/bard/plugins/run.rb
219
+ - lib/bard/plugins/setup.rb
220
+ - lib/bard/plugins/ssh.rb
221
+ - lib/bard/plugins/ssh/connection.rb
222
+ - lib/bard/plugins/ssh/copy.rb
223
+ - lib/bard/plugins/ssh/server.rb
224
+ - lib/bard/plugins/ssh/target_methods.rb
225
+ - lib/bard/plugins/url.rb
226
+ - lib/bard/plugins/url/target_methods.rb
227
+ - lib/bard/plugins/vim.rb
228
+ - lib/bard/retryable.rb
229
+ - lib/bard/secrets.rb
252
230
  - lib/bard/target.rb
253
231
  - lib/bard/version.rb
254
232
  - spec/acceptance/.gitignore
@@ -257,18 +235,17 @@ files:
257
235
  - spec/acceptance/docker/test_key.pub
258
236
  - spec/bard/capability_spec.rb
259
237
  - spec/bard/ci/github_actions_spec.rb
238
+ - spec/bard/ci/jenkins_spec.rb
239
+ - spec/bard/ci/runner_spec.rb
260
240
  - spec/bard/ci_spec.rb
261
241
  - spec/bard/cli/ci_spec.rb
262
- - spec/bard/cli/command_spec.rb
263
242
  - spec/bard/cli/data_spec.rb
264
243
  - spec/bard/cli/deploy_spec.rb
265
244
  - spec/bard/cli/hurt_spec.rb
266
245
  - spec/bard/cli/install_spec.rb
267
246
  - spec/bard/cli/master_key_spec.rb
268
- - spec/bard/cli/new_spec.rb
269
247
  - spec/bard/cli/open_spec.rb
270
248
  - spec/bard/cli/ping_spec.rb
271
- - spec/bard/cli/provision_spec.rb
272
249
  - spec/bard/cli/run_spec.rb
273
250
  - spec/bard/cli/setup_spec.rb
274
251
  - spec/bard/cli/ssh_spec.rb
@@ -281,26 +258,9 @@ files:
281
258
  - spec/bard/deploy_strategy_spec.rb
282
259
  - spec/bard/dynamic_dsl_spec.rb
283
260
  - spec/bard/git_spec.rb
284
- - spec/bard/github_pages_spec.rb
285
261
  - spec/bard/github_spec.rb
286
262
  - spec/bard/ping_spec.rb
287
- - spec/bard/provision/app_spec.rb
288
- - spec/bard/provision/apt_spec.rb
289
- - spec/bard/provision/authorizedkeys_spec.rb
290
- - spec/bard/provision/data_spec.rb
291
- - spec/bard/provision/deploy_spec.rb
292
- - spec/bard/provision/http_spec.rb
293
- - spec/bard/provision/logrotation_spec.rb
294
- - spec/bard/provision/masterkey_spec.rb
295
- - spec/bard/provision/mysql_spec.rb
296
- - spec/bard/provision/passenger_spec.rb
297
- - spec/bard/provision/repo_spec.rb
298
- - spec/bard/provision/rvm_spec.rb
299
- - spec/bard/provision/ssh_spec.rb
300
- - spec/bard/provision/swapfile_spec.rb
301
- - spec/bard/provision/user_spec.rb
302
- - spec/bard/provision_spec.rb
303
- - spec/bard/server_spec.rb
263
+ - spec/bard/ssh_copy_spec.rb
304
264
  - spec/bard/ssh_server_spec.rb
305
265
  - spec/bard/target_spec.rb
306
266
  - spec/bard_spec.rb
@@ -318,7 +278,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
318
278
  requirements:
319
279
  - - ">="
320
280
  - !ruby/object:Gem::Version
321
- version: '0'
281
+ version: '3.3'
322
282
  required_rubygems_version: !ruby/object:Gem::Requirement
323
283
  requirements:
324
284
  - - ">="
@@ -329,39 +289,32 @@ rubygems_version: 3.6.2
329
289
  specification_version: 4
330
290
  summary: CLI to automate common development tasks.
331
291
  test_files:
332
- - features/bard_check.feature
333
- - features/bard_deploy.feature
334
- - features/bard_pull.feature
335
- - features/bard_push.feature
336
- - features/podman_testcontainers.feature
337
- - features/step_definitions/check_steps.rb
338
- - features/step_definitions/git_steps.rb
339
- - features/step_definitions/global_steps.rb
340
- - features/step_definitions/podman_steps.rb
341
- - features/step_definitions/rails_steps.rb
342
- - features/step_definitions/submodule_steps.rb
292
+ - features/ci.feature
293
+ - features/data.feature
294
+ - features/deploy.feature
295
+ - features/deploy_git_workflow.feature
296
+ - features/run.feature
297
+ - features/step_definitions/bard_steps.rb
298
+ - features/support/bard-coverage
343
299
  - features/support/env.rb
344
- - features/support/grit_ext.rb
345
- - features/support/io.rb
346
- - features/support/podman.rb
300
+ - features/support/test_server.rb
347
301
  - spec/acceptance/.gitignore
348
302
  - spec/acceptance/docker/Dockerfile
349
303
  - spec/acceptance/docker/test_key
350
304
  - spec/acceptance/docker/test_key.pub
351
305
  - spec/bard/capability_spec.rb
352
306
  - spec/bard/ci/github_actions_spec.rb
307
+ - spec/bard/ci/jenkins_spec.rb
308
+ - spec/bard/ci/runner_spec.rb
353
309
  - spec/bard/ci_spec.rb
354
310
  - spec/bard/cli/ci_spec.rb
355
- - spec/bard/cli/command_spec.rb
356
311
  - spec/bard/cli/data_spec.rb
357
312
  - spec/bard/cli/deploy_spec.rb
358
313
  - spec/bard/cli/hurt_spec.rb
359
314
  - spec/bard/cli/install_spec.rb
360
315
  - spec/bard/cli/master_key_spec.rb
361
- - spec/bard/cli/new_spec.rb
362
316
  - spec/bard/cli/open_spec.rb
363
317
  - spec/bard/cli/ping_spec.rb
364
- - spec/bard/cli/provision_spec.rb
365
318
  - spec/bard/cli/run_spec.rb
366
319
  - spec/bard/cli/setup_spec.rb
367
320
  - spec/bard/cli/ssh_spec.rb
@@ -374,26 +327,9 @@ test_files:
374
327
  - spec/bard/deploy_strategy_spec.rb
375
328
  - spec/bard/dynamic_dsl_spec.rb
376
329
  - spec/bard/git_spec.rb
377
- - spec/bard/github_pages_spec.rb
378
330
  - spec/bard/github_spec.rb
379
331
  - spec/bard/ping_spec.rb
380
- - spec/bard/provision/app_spec.rb
381
- - spec/bard/provision/apt_spec.rb
382
- - spec/bard/provision/authorizedkeys_spec.rb
383
- - spec/bard/provision/data_spec.rb
384
- - spec/bard/provision/deploy_spec.rb
385
- - spec/bard/provision/http_spec.rb
386
- - spec/bard/provision/logrotation_spec.rb
387
- - spec/bard/provision/masterkey_spec.rb
388
- - spec/bard/provision/mysql_spec.rb
389
- - spec/bard/provision/passenger_spec.rb
390
- - spec/bard/provision/repo_spec.rb
391
- - spec/bard/provision/rvm_spec.rb
392
- - spec/bard/provision/ssh_spec.rb
393
- - spec/bard/provision/swapfile_spec.rb
394
- - spec/bard/provision/user_spec.rb
395
- - spec/bard/provision_spec.rb
396
- - spec/bard/server_spec.rb
332
+ - spec/bard/ssh_copy_spec.rb
397
333
  - spec/bard/ssh_server_spec.rb
398
334
  - spec/bard/target_spec.rb
399
335
  - spec/bard_spec.rb
data/README.rdoc DELETED
@@ -1,15 +0,0 @@
1
- = BARD
2
-
3
- This is a collection of tools designed to ease collaboration within Bot and Rose Design.
4
- It wraps git, capistrano, and rake to make things as simple as:
5
-
6
- bard stage
7
- bard deploy
8
-
9
- Seed database from staging or production:
10
- bard data
11
-
12
- == Copyright
13
-
14
- Copyright (c) 2018 Micah Geisel. See LICENSE for details.
15
-