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.
- checksums.yaml +4 -4
- data/.github/workflows/ci.yml +6 -1
- data/CLAUDE.md +76 -0
- data/MIGRATION_GUIDE.md +24 -9
- data/PLUGINS.md +99 -0
- data/README.md +14 -6
- data/Rakefile +3 -1
- data/bard.gemspec +2 -1
- data/cucumber.yml +1 -0
- data/features/ci.feature +63 -0
- data/features/data.feature +13 -0
- data/features/deploy.feature +14 -0
- data/features/deploy_git_workflow.feature +89 -0
- data/features/run.feature +14 -0
- data/features/step_definitions/bard_steps.rb +136 -0
- data/features/support/bard-coverage +16 -0
- data/features/support/env.rb +14 -39
- data/features/support/test_server.rb +216 -0
- data/lib/bard/cli.rb +14 -31
- data/lib/bard/command.rb +10 -69
- data/lib/bard/config.rb +40 -183
- data/lib/bard/copy.rb +28 -103
- data/lib/bard/plugins/data.rb +56 -0
- data/lib/bard/{ci → plugins/deploy/ci}/github_actions.rb +3 -4
- data/lib/bard/plugins/deploy/ci/jenkins.rb +176 -0
- data/lib/bard/{ci → plugins/deploy/ci}/local.rb +7 -7
- data/lib/bard/{ci → plugins/deploy/ci}/runner.rb +38 -4
- data/lib/bard/plugins/deploy/ci.rb +38 -0
- data/lib/bard/plugins/deploy/ssh_strategy.rb +27 -0
- data/lib/bard/{deploy_strategy.rb → plugins/deploy/strategy.rb} +1 -1
- data/lib/bard/plugins/deploy.rb +240 -0
- data/lib/bard/{git.rb → plugins/git.rb} +6 -3
- data/lib/bard/{github.rb → plugins/github.rb} +4 -6
- data/lib/bard/{deploy_strategy/github_pages.rb → plugins/github_pages/strategy.rb} +41 -13
- data/lib/bard/plugins/github_pages.rb +30 -0
- data/lib/bard/plugins/hurt.rb +13 -0
- data/{install_files → lib/bard/plugins/install}/.github/dependabot.yml +2 -1
- data/{install_files → lib/bard/plugins/install}/.github/workflows/cache-ci.yml +1 -1
- data/{install_files → lib/bard/plugins/install}/.github/workflows/ci.yml +2 -2
- data/lib/bard/plugins/install.rb +9 -0
- data/lib/bard/plugins/open.rb +20 -0
- data/lib/bard/{ping.rb → plugins/ping/check.rb} +4 -4
- data/lib/bard/plugins/ping/target_methods.rb +23 -0
- data/lib/bard/plugins/ping.rb +10 -0
- data/lib/bard/plugins/run.rb +19 -0
- data/lib/bard/plugins/setup.rb +54 -0
- data/lib/bard/plugins/ssh/connection.rb +75 -0
- data/lib/bard/plugins/ssh/copy.rb +95 -0
- data/lib/bard/{ssh_server.rb → plugins/ssh/server.rb} +17 -42
- data/lib/bard/plugins/ssh/target_methods.rb +20 -0
- data/lib/bard/plugins/ssh.rb +10 -0
- data/lib/bard/plugins/url/target_methods.rb +23 -0
- data/lib/bard/plugins/url.rb +1 -0
- data/lib/bard/plugins/vim.rb +6 -0
- data/lib/bard/retryable.rb +25 -0
- data/lib/bard/secrets.rb +10 -0
- data/lib/bard/target.rb +27 -185
- data/lib/bard/version.rb +1 -1
- data/lib/bard.rb +1 -3
- data/spec/acceptance/docker/Dockerfile +3 -2
- data/spec/bard/capability_spec.rb +8 -50
- data/spec/bard/ci/github_actions_spec.rb +117 -14
- data/spec/bard/ci/jenkins_spec.rb +139 -0
- data/spec/bard/ci/runner_spec.rb +61 -0
- data/spec/bard/ci_spec.rb +1 -1
- data/spec/bard/cli/ci_spec.rb +34 -27
- data/spec/bard/cli/data_spec.rb +7 -26
- data/spec/bard/cli/deploy_spec.rb +87 -46
- data/spec/bard/cli/hurt_spec.rb +3 -9
- data/spec/bard/cli/install_spec.rb +5 -11
- data/spec/bard/cli/master_key_spec.rb +5 -19
- data/spec/bard/cli/open_spec.rb +14 -30
- data/spec/bard/cli/ping_spec.rb +8 -23
- data/spec/bard/cli/run_spec.rb +27 -21
- data/spec/bard/cli/setup_spec.rb +10 -27
- data/spec/bard/cli/ssh_spec.rb +10 -25
- data/spec/bard/cli/stage_spec.rb +28 -23
- data/spec/bard/cli/vim_spec.rb +3 -9
- data/spec/bard/command_spec.rb +1 -8
- data/spec/bard/config_spec.rb +78 -98
- data/spec/bard/copy_spec.rb +54 -18
- data/spec/bard/deploy_strategy/ssh_spec.rb +65 -7
- data/spec/bard/deploy_strategy_spec.rb +1 -1
- data/spec/bard/dynamic_dsl_spec.rb +18 -98
- data/spec/bard/git_spec.rb +9 -5
- data/spec/bard/github_spec.rb +2 -2
- data/spec/bard/ping_spec.rb +5 -5
- data/spec/bard/ssh_copy_spec.rb +44 -0
- data/spec/bard/ssh_server_spec.rb +8 -101
- data/spec/bard/target_spec.rb +66 -109
- data/spec/spec_helper.rb +6 -1
- metadata +79 -143
- data/README.rdoc +0 -15
- data/features/bard_check.feature +0 -94
- data/features/bard_deploy.feature +0 -18
- data/features/bard_pull.feature +0 -112
- data/features/bard_push.feature +0 -112
- data/features/podman_testcontainers.feature +0 -16
- data/features/step_definitions/check_steps.rb +0 -47
- data/features/step_definitions/git_steps.rb +0 -73
- data/features/step_definitions/global_steps.rb +0 -56
- data/features/step_definitions/podman_steps.rb +0 -23
- data/features/step_definitions/rails_steps.rb +0 -44
- data/features/step_definitions/submodule_steps.rb +0 -110
- data/features/support/grit_ext.rb +0 -13
- data/features/support/io.rb +0 -32
- data/features/support/podman.rb +0 -153
- data/lib/bard/ci/jenkins.rb +0 -105
- data/lib/bard/ci/retryable.rb +0 -27
- data/lib/bard/ci.rb +0 -50
- data/lib/bard/cli/ci.rb +0 -66
- data/lib/bard/cli/command.rb +0 -26
- data/lib/bard/cli/data.rb +0 -45
- data/lib/bard/cli/deploy.rb +0 -85
- data/lib/bard/cli/hurt.rb +0 -20
- data/lib/bard/cli/install.rb +0 -16
- data/lib/bard/cli/master_key.rb +0 -17
- data/lib/bard/cli/new.rb +0 -101
- data/lib/bard/cli/new_rails_template.rb +0 -197
- data/lib/bard/cli/open.rb +0 -22
- data/lib/bard/cli/ping.rb +0 -18
- data/lib/bard/cli/provision.rb +0 -34
- data/lib/bard/cli/run.rb +0 -24
- data/lib/bard/cli/setup.rb +0 -56
- data/lib/bard/cli/ssh.rb +0 -14
- data/lib/bard/cli/stage.rb +0 -27
- data/lib/bard/cli/vim.rb +0 -13
- data/lib/bard/default_config.rb +0 -35
- data/lib/bard/deploy_strategy/ssh.rb +0 -19
- data/lib/bard/github_pages.rb +0 -134
- data/lib/bard/provision/app.rb +0 -10
- data/lib/bard/provision/apt.rb +0 -16
- data/lib/bard/provision/authorizedkeys.rb +0 -25
- data/lib/bard/provision/data.rb +0 -27
- data/lib/bard/provision/deploy.rb +0 -10
- data/lib/bard/provision/http.rb +0 -16
- data/lib/bard/provision/logrotation.rb +0 -30
- data/lib/bard/provision/masterkey.rb +0 -18
- data/lib/bard/provision/mysql.rb +0 -22
- data/lib/bard/provision/passenger.rb +0 -37
- data/lib/bard/provision/repo.rb +0 -72
- data/lib/bard/provision/rvm.rb +0 -22
- data/lib/bard/provision/ssh.rb +0 -72
- data/lib/bard/provision/swapfile.rb +0 -21
- data/lib/bard/provision/user.rb +0 -42
- data/lib/bard/provision.rb +0 -16
- data/lib/bard/server.rb +0 -117
- data/spec/bard/cli/command_spec.rb +0 -50
- data/spec/bard/cli/new_spec.rb +0 -73
- data/spec/bard/cli/provision_spec.rb +0 -42
- data/spec/bard/github_pages_spec.rb +0 -143
- data/spec/bard/provision/app_spec.rb +0 -33
- data/spec/bard/provision/apt_spec.rb +0 -39
- data/spec/bard/provision/authorizedkeys_spec.rb +0 -40
- data/spec/bard/provision/data_spec.rb +0 -54
- data/spec/bard/provision/deploy_spec.rb +0 -33
- data/spec/bard/provision/http_spec.rb +0 -57
- data/spec/bard/provision/logrotation_spec.rb +0 -34
- data/spec/bard/provision/masterkey_spec.rb +0 -63
- data/spec/bard/provision/mysql_spec.rb +0 -55
- data/spec/bard/provision/passenger_spec.rb +0 -81
- data/spec/bard/provision/repo_spec.rb +0 -208
- data/spec/bard/provision/rvm_spec.rb +0 -49
- data/spec/bard/provision/ssh_spec.rb +0 -229
- data/spec/bard/provision/swapfile_spec.rb +0 -32
- data/spec/bard/provision/user_spec.rb +0 -103
- data/spec/bard/provision_spec.rb +0 -28
- data/spec/bard/server_spec.rb +0 -127
- /data/lib/bard/{ci → plugins/deploy/ci}/state.rb +0 -0
- /data/{install_files → lib/bard/plugins/install}/apt_dependencies.rb +0 -0
- /data/{install_files → lib/bard/plugins/install}/ci +0 -0
- /data/{install_files → lib/bard/plugins/install}/setup +0 -0
- /data/{install_files → lib/bard/plugins/install}/specified_bundler.rb +0 -0
- /data/{install_files → lib/bard/plugins/install}/specified_ruby.rb +0 -0
data/spec/bard/target_spec.rb
CHANGED
|
@@ -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?(:
|
|
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
|
|
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
|
|
75
|
-
expect(target.
|
|
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 "
|
|
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 "
|
|
87
|
-
expect(target.
|
|
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 "#
|
|
93
|
-
it "enables
|
|
94
|
-
target.
|
|
95
|
-
expect(target.has_capability?(:
|
|
96
|
-
expect(target.
|
|
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"
|
|
101
|
-
expect(target.
|
|
102
|
-
|
|
103
|
-
|
|
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.
|
|
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 "
|
|
116
|
-
target.path("
|
|
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 "
|
|
127
|
-
|
|
128
|
-
|
|
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 "
|
|
132
|
-
|
|
133
|
-
|
|
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 "
|
|
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(
|
|
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 "
|
|
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(
|
|
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(
|
|
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
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.
|
|
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:
|
|
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:
|
|
41
|
+
name: rbnacl
|
|
42
42
|
requirement: !ruby/object:Gem::Requirement
|
|
43
43
|
requirements:
|
|
44
44
|
- - ">="
|
|
45
45
|
- !ruby/object:Gem::Version
|
|
46
|
-
version:
|
|
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:
|
|
53
|
+
version: '0'
|
|
54
54
|
- !ruby/object:Gem::Dependency
|
|
55
|
-
name:
|
|
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:
|
|
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: :
|
|
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:
|
|
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:
|
|
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:
|
|
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:
|
|
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:
|
|
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
|
-
-
|
|
175
|
-
- features/
|
|
176
|
-
- features/
|
|
177
|
-
- features/
|
|
178
|
-
- features/
|
|
179
|
-
- features/
|
|
180
|
-
- features/step_definitions/
|
|
181
|
-
- features/
|
|
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/
|
|
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/
|
|
227
|
-
- lib/bard/
|
|
228
|
-
- lib/bard/
|
|
229
|
-
- lib/bard/
|
|
230
|
-
- lib/bard/
|
|
231
|
-
- lib/bard/
|
|
232
|
-
- lib/bard/
|
|
233
|
-
- lib/bard/
|
|
234
|
-
- lib/bard/
|
|
235
|
-
- lib/bard/
|
|
236
|
-
- lib/bard/
|
|
237
|
-
- lib/bard/
|
|
238
|
-
- lib/bard/
|
|
239
|
-
- lib/bard/
|
|
240
|
-
- lib/bard/
|
|
241
|
-
- lib/bard/
|
|
242
|
-
- lib/bard/
|
|
243
|
-
- lib/bard/
|
|
244
|
-
- lib/bard/
|
|
245
|
-
- lib/bard/
|
|
246
|
-
- lib/bard/
|
|
247
|
-
- lib/bard/
|
|
248
|
-
- lib/bard/
|
|
249
|
-
- lib/bard/
|
|
250
|
-
- lib/bard/
|
|
251
|
-
- lib/bard/
|
|
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/
|
|
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: '
|
|
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/
|
|
333
|
-
- features/
|
|
334
|
-
- features/
|
|
335
|
-
- features/
|
|
336
|
-
- features/
|
|
337
|
-
- features/step_definitions/
|
|
338
|
-
- features/
|
|
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/
|
|
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/
|
|
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
|
-
|