tomo 1.0.0 → 1.3.0
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/README.md +5 -6
- data/lib/tomo/cli.rb +0 -2
- data/lib/tomo/cli/common_options.rb +4 -12
- data/lib/tomo/cli/deploy_options.rb +2 -7
- data/lib/tomo/cli/parser.rb +1 -6
- data/lib/tomo/cli/project_options.rb +1 -3
- data/lib/tomo/cli/rules.rb +4 -22
- data/lib/tomo/cli/rules/switch.rb +1 -5
- data/lib/tomo/cli/rules/value_switch.rb +1 -2
- data/lib/tomo/cli/rules_evaluator.rb +3 -13
- data/lib/tomo/cli/usage.rb +1 -3
- data/lib/tomo/commands/default.rb +1 -3
- data/lib/tomo/commands/init.rb +24 -1
- data/lib/tomo/commands/run.rb +1 -3
- data/lib/tomo/configuration.rb +5 -11
- data/lib/tomo/configuration/dsl/hosts_and_settings.rb +1 -2
- data/lib/tomo/configuration/plugin_resolver.rb +1 -1
- data/lib/tomo/configuration/plugins_registry.rb +1 -2
- data/lib/tomo/configuration/plugins_registry/gem_resolver.rb +1 -1
- data/lib/tomo/configuration/unknown_environment_error.rb +1 -4
- data/lib/tomo/console.rb +6 -11
- data/lib/tomo/console/menu.rb +1 -2
- data/lib/tomo/host.rb +1 -2
- data/lib/tomo/plugin/bundler/tasks.rb +2 -7
- data/lib/tomo/plugin/core/tasks.rb +3 -12
- data/lib/tomo/plugin/env/tasks.rb +32 -10
- data/lib/tomo/plugin/git.rb +1 -4
- data/lib/tomo/plugin/git/tasks.rb +4 -14
- data/lib/tomo/plugin/nodenv/tasks.rb +1 -3
- data/lib/tomo/plugin/puma.rb +0 -3
- data/lib/tomo/plugin/puma/systemd/service.erb +1 -1
- data/lib/tomo/plugin/puma/tasks.rb +6 -15
- data/lib/tomo/plugin/rails/helpers.rb +1 -1
- data/lib/tomo/plugin/rails/tasks.rb +6 -4
- data/lib/tomo/plugin/testing.rb +1 -3
- data/lib/tomo/remote.rb +1 -3
- data/lib/tomo/runtime.rb +3 -6
- data/lib/tomo/runtime/concurrent_ruby_thread_pool.rb +1 -4
- data/lib/tomo/runtime/execution_plan.rb +1 -4
- data/lib/tomo/runtime/explanation.rb +1 -7
- data/lib/tomo/runtime/settings_required_error.rb +1 -3
- data/lib/tomo/runtime/task_runner.rb +1 -5
- data/lib/tomo/runtime/unknown_task_error.rb +1 -4
- data/lib/tomo/script.rb +1 -5
- data/lib/tomo/shell_builder.rb +5 -10
- data/lib/tomo/ssh/child_process.rb +2 -7
- data/lib/tomo/ssh/connection.rb +3 -16
- data/lib/tomo/ssh/connection_validator.rb +1 -4
- data/lib/tomo/ssh/executable_error.rb +1 -2
- data/lib/tomo/ssh/options.rb +2 -5
- data/lib/tomo/task_api.rb +4 -15
- data/lib/tomo/templates/config.rb.erb +7 -1
- data/lib/tomo/testing.rb +0 -2
- data/lib/tomo/testing/Dockerfile +1 -3
- data/lib/tomo/testing/connection.rb +1 -6
- data/lib/tomo/testing/docker_image.rb +4 -17
- data/lib/tomo/testing/local.rb +1 -3
- data/lib/tomo/testing/mock_plugin_tester.rb +27 -4
- data/lib/tomo/testing/ubuntu_setup.sh +1 -2
- data/lib/tomo/version.rb +1 -1
- metadata +8 -150
- data/lib/tomo/testing/docker_plugin_tester.rb +0 -39
- data/lib/tomo/testing/plugin_tester.rb +0 -33
@@ -21,9 +21,7 @@ module Tomo
|
|
21
21
|
private
|
22
22
|
|
23
23
|
def settings_sentence
|
24
|
-
if settings.length == 1
|
25
|
-
return "a value for the #{yellow(settings.first.to_s)} setting."
|
26
|
-
end
|
24
|
+
return "a value for the #{yellow(settings.first.to_s)} setting." if settings.length == 1
|
27
25
|
|
28
26
|
sentence = "values for these settings:\n\n "
|
29
27
|
sentence << settings.map { |s| yellow(s.to_s) }.join("\n ")
|
@@ -19,11 +19,7 @@ module Tomo
|
|
19
19
|
def validate_task!(name)
|
20
20
|
return if tasks_by_name.key?(name)
|
21
21
|
|
22
|
-
UnknownTaskError.raise_with(
|
23
|
-
name,
|
24
|
-
unknown_task: name,
|
25
|
-
known_tasks: tasks_by_name.keys
|
26
|
-
)
|
22
|
+
UnknownTaskError.raise_with(name, unknown_task: name, known_tasks: tasks_by_name.keys)
|
27
23
|
end
|
28
24
|
|
29
25
|
def run(task:, remote:)
|
@@ -17,10 +17,7 @@ module Tomo
|
|
17
17
|
private
|
18
18
|
|
19
19
|
def spelling_suggestion
|
20
|
-
sugg = Error::Suggestions.new(
|
21
|
-
dictionary: known_tasks,
|
22
|
-
word: unknown_task
|
23
|
-
)
|
20
|
+
sugg = Error::Suggestions.new(dictionary: known_tasks, word: unknown_task)
|
24
21
|
sugg.to_console if sugg.any?
|
25
22
|
end
|
26
23
|
|
data/lib/tomo/script.rb
CHANGED
@@ -2,11 +2,7 @@ module Tomo
|
|
2
2
|
class Script
|
3
3
|
attr_reader :script
|
4
4
|
|
5
|
-
def initialize(script,
|
6
|
-
echo: true,
|
7
|
-
pty: false,
|
8
|
-
raise_on_error: true,
|
9
|
-
silent: false)
|
5
|
+
def initialize(script, echo: true, pty: false, raise_on_error: true, silent: false)
|
10
6
|
@script = script
|
11
7
|
@echo = echo
|
12
8
|
@pty = pty
|
data/lib/tomo/shell_builder.rb
CHANGED
@@ -3,8 +3,9 @@ require "shellwords"
|
|
3
3
|
module Tomo
|
4
4
|
class ShellBuilder
|
5
5
|
def self.raw(string)
|
6
|
-
string.
|
7
|
-
|
6
|
+
string.dup.tap do |raw_string|
|
7
|
+
raw_string.define_singleton_method(:shellescape) { string }
|
8
|
+
end
|
8
9
|
end
|
9
10
|
|
10
11
|
def initialize
|
@@ -45,9 +46,7 @@ module Tomo
|
|
45
46
|
end
|
46
47
|
|
47
48
|
def build(*command, default_chdir: nil)
|
48
|
-
if @chdir.empty? && default_chdir
|
49
|
-
return chdir(default_chdir) { build(*command) }
|
50
|
-
end
|
49
|
+
return chdir(default_chdir) { build(*command) } if @chdir.empty? && default_chdir
|
51
50
|
|
52
51
|
command_string = command_to_string(*command)
|
53
52
|
modifiers = [cd_chdir, unset_env, export_env, set_umask].compact.flatten
|
@@ -97,11 +96,7 @@ module Tomo
|
|
97
96
|
def set_umask
|
98
97
|
return if @umask.nil?
|
99
98
|
|
100
|
-
umask_value =
|
101
|
-
@umask.to_s(8).rjust(4, "0")
|
102
|
-
else
|
103
|
-
@umask
|
104
|
-
end
|
99
|
+
umask_value = @umask.is_a?(Integer) ? @umask.to_s(8).rjust(4, "0") : @umask
|
105
100
|
"umask #{umask_value.to_s.shellescape}"
|
106
101
|
end
|
107
102
|
end
|
@@ -30,17 +30,12 @@ module Tomo
|
|
30
30
|
end
|
31
31
|
|
32
32
|
def result
|
33
|
-
Result.new(
|
34
|
-
exit_status: exit_status,
|
35
|
-
stdout: stdout_buffer.string,
|
36
|
-
stderr: stderr_buffer.string
|
37
|
-
)
|
33
|
+
Result.new(exit_status: exit_status, stdout: stdout_buffer.string, stderr: stderr_buffer.string)
|
38
34
|
end
|
39
35
|
|
40
36
|
private
|
41
37
|
|
42
|
-
attr_reader :command, :exit_status, :on_data,
|
43
|
-
:stdout_buffer, :stderr_buffer
|
38
|
+
attr_reader :command, :exit_status, :on_data, :stdout_buffer, :stderr_buffer
|
44
39
|
|
45
40
|
def start_io_thread(source, buffer)
|
46
41
|
new_thread_inheriting_current_vars do
|
data/lib/tomo/ssh/connection.rb
CHANGED
@@ -6,12 +6,7 @@ module Tomo
|
|
6
6
|
module SSH
|
7
7
|
class Connection
|
8
8
|
def self.dry_run(host, options)
|
9
|
-
new(
|
10
|
-
host,
|
11
|
-
options,
|
12
|
-
exec_proc: proc { CLI.exit },
|
13
|
-
child_proc: proc { Result.empty_success }
|
14
|
-
)
|
9
|
+
new(host, options, exec_proc: proc { CLI.exit }, child_proc: proc { Result.empty_success })
|
15
10
|
end
|
16
11
|
|
17
12
|
attr_reader :host
|
@@ -38,9 +33,7 @@ module Tomo
|
|
38
33
|
result = child_proc.call(*ssh_args, on_data: handle_data)
|
39
34
|
logger.script_end(script, result)
|
40
35
|
|
41
|
-
if result.failure? && script.raise_on_error?
|
42
|
-
raise_run_error(script, ssh_args, result)
|
43
|
-
end
|
36
|
+
raise_run_error(script, ssh_args, result) if result.failure? && script.raise_on_error?
|
44
37
|
|
45
38
|
result
|
46
39
|
end
|
@@ -69,13 +62,7 @@ module Tomo
|
|
69
62
|
end
|
70
63
|
|
71
64
|
def raise_run_error(script, ssh_args, result)
|
72
|
-
ScriptError.raise_with(
|
73
|
-
result.output,
|
74
|
-
host: host,
|
75
|
-
result: result,
|
76
|
-
script: script,
|
77
|
-
ssh_args: ssh_args
|
78
|
-
)
|
65
|
+
ScriptError.raise_with(result.output, host: host, result: result, script: script, ssh_args: ssh_args)
|
79
66
|
end
|
80
67
|
end
|
81
68
|
end
|
@@ -27,10 +27,7 @@ module Tomo
|
|
27
27
|
end
|
28
28
|
|
29
29
|
def assert_valid_connection!
|
30
|
-
script = Script.new(
|
31
|
-
"echo hi",
|
32
|
-
silent: !Tomo.debug?, echo: false, raise_on_error: false
|
33
|
-
)
|
30
|
+
script = Script.new("echo hi", silent: !Tomo.debug?, echo: false, raise_on_error: false)
|
34
31
|
res = connection.ssh_subprocess(script, verbose: Tomo.debug?)
|
35
32
|
raise_connection_failure(res) if res.exit_status == 255
|
36
33
|
raise_unknown_error(res) if res.failure? || res.stdout.chomp != "hi"
|
@@ -7,8 +7,7 @@ module Tomo
|
|
7
7
|
hint = if executable.to_s.include?("/")
|
8
8
|
"Is the ssh binary properly installed in this location?"
|
9
9
|
else
|
10
|
-
"Is #{yellow(executable)} installed and in your "
|
11
|
-
"#{blue('$PATH')}?"
|
10
|
+
"Is #{yellow(executable)} installed and in your #{blue('$PATH')}?"
|
12
11
|
end
|
13
12
|
|
14
13
|
<<~ERROR
|
data/lib/tomo/ssh/options.rb
CHANGED
@@ -20,8 +20,7 @@ module Tomo
|
|
20
20
|
freeze
|
21
21
|
end
|
22
22
|
|
23
|
-
# rubocop:disable Metrics/AbcSize
|
24
|
-
def build_args(host, script, control_path, verbose)
|
23
|
+
def build_args(host, script, control_path, verbose) # rubocop:disable Metrics/AbcSize
|
25
24
|
args = [verbose ? "-v" : ["-o", "LogLevel=ERROR"]]
|
26
25
|
args << "-A" if forward_agent
|
27
26
|
args << connect_timeout_option
|
@@ -34,13 +33,11 @@ module Tomo
|
|
34
33
|
|
35
34
|
[executable, args, script.to_s].flatten
|
36
35
|
end
|
37
|
-
# rubocop:enable Metrics/AbcSize
|
38
36
|
|
39
37
|
private
|
40
38
|
|
41
39
|
attr_writer :executable
|
42
|
-
attr_accessor :connect_timeout, :extra_opts, :forward_agent,
|
43
|
-
:reuse_connections, :strict_host_key_checking
|
40
|
+
attr_accessor :connect_timeout, :extra_opts, :forward_agent, :reuse_connections, :strict_host_key_checking
|
44
41
|
|
45
42
|
def control_opts(path, verbose)
|
46
43
|
opts = [
|
data/lib/tomo/task_api.rb
CHANGED
@@ -9,11 +9,7 @@ module Tomo
|
|
9
9
|
def_delegators :context, :paths, :settings
|
10
10
|
|
11
11
|
def die(reason)
|
12
|
-
Runtime::TaskAbortedError.raise_with(
|
13
|
-
reason,
|
14
|
-
task: context.current_task,
|
15
|
-
host: remote.host
|
16
|
-
)
|
12
|
+
Runtime::TaskAbortedError.raise_with(reason, task: context.current_task, host: remote.host)
|
17
13
|
end
|
18
14
|
|
19
15
|
def dry_run?
|
@@ -26,13 +22,9 @@ module Tomo
|
|
26
22
|
|
27
23
|
def merge_template(path)
|
28
24
|
working_path = paths.tomo_config_file&.dirname
|
29
|
-
if working_path && path.start_with?(".")
|
30
|
-
path = File.expand_path(path, working_path)
|
31
|
-
end
|
25
|
+
path = File.expand_path(path, working_path) if working_path && path.start_with?(".")
|
32
26
|
|
33
|
-
unless File.file?(path)
|
34
|
-
Runtime::TemplateNotFoundError.raise_with(path: path)
|
35
|
-
end
|
27
|
+
Runtime::TemplateNotFoundError.raise_with(path: path) unless File.file?(path)
|
36
28
|
template = IO.read(path)
|
37
29
|
ERB.new(template).result(binding)
|
38
30
|
end
|
@@ -49,10 +41,7 @@ module Tomo
|
|
49
41
|
missing = names.flatten.select { |sett| settings[sett].nil? }
|
50
42
|
return if missing.empty?
|
51
43
|
|
52
|
-
Runtime::SettingsRequiredError.raise_with(
|
53
|
-
settings: missing,
|
54
|
-
task: context.current_task
|
55
|
-
)
|
44
|
+
Runtime::SettingsRequiredError.raise_with(settings: missing, task: context.current_task)
|
56
45
|
end
|
57
46
|
alias require_settings require_setting
|
58
47
|
end
|
@@ -1,3 +1,6 @@
|
|
1
|
+
<% if rubocop? -%>
|
2
|
+
# rubocop:disable Style/FormatStringToken
|
3
|
+
<% end -%>
|
1
4
|
plugin "git"
|
2
5
|
plugin "env"
|
3
6
|
plugin "bundler"
|
@@ -15,7 +18,7 @@ set rbenv_ruby_version: <%= RUBY_VERSION.inspect %>
|
|
15
18
|
set nodenv_node_version: <%= node_version&.inspect || "nil # FIXME" %>
|
16
19
|
set nodenv_yarn_version: <%= yarn_version.inspect %>
|
17
20
|
set git_url: <%= git_origin_url&.inspect || "nil # FIXME" %>
|
18
|
-
set git_branch: "
|
21
|
+
set git_branch: <%= git_branch&.inspect || "nil # FIXME" %>
|
19
22
|
set git_exclusions: %w[
|
20
23
|
.tomo/
|
21
24
|
spec/
|
@@ -72,3 +75,6 @@ deploy do
|
|
72
75
|
run "bundler:clean"
|
73
76
|
run "core:log_revision"
|
74
77
|
end
|
78
|
+
<% if rubocop? -%>
|
79
|
+
# rubocop:enable Style/FormatStringToken
|
80
|
+
<% end -%>
|
data/lib/tomo/testing.rb
CHANGED
@@ -6,14 +6,12 @@ module Tomo
|
|
6
6
|
autoload :CLITester, "tomo/testing/cli_tester"
|
7
7
|
autoload :Connection, "tomo/testing/connection"
|
8
8
|
autoload :DockerImage, "tomo/testing/docker_image"
|
9
|
-
autoload :DockerPluginTester, "tomo/testing/docker_plugin_tester"
|
10
9
|
autoload :HostExtensions, "tomo/testing/host_extensions"
|
11
10
|
autoload :Local, "tomo/testing/local"
|
12
11
|
autoload :LogCapturing, "tomo/testing/log_capturing"
|
13
12
|
autoload :MockedExecError, "tomo/testing/mocked_exec_error"
|
14
13
|
autoload :MockedExitError, "tomo/testing/mocked_exit_error"
|
15
14
|
autoload :MockPluginTester, "tomo/testing/mock_plugin_tester"
|
16
|
-
autoload :PluginTester, "tomo/testing/plugin_tester"
|
17
15
|
autoload :RemoteExtensions, "tomo/testing/remote_extensions"
|
18
16
|
autoload :SSHExtensions, "tomo/testing/ssh_extensions"
|
19
17
|
|
data/lib/tomo/testing/Dockerfile
CHANGED
@@ -1,10 +1,8 @@
|
|
1
|
-
FROM ubuntu:
|
1
|
+
FROM ubuntu:20.04
|
2
2
|
WORKDIR /provision
|
3
3
|
COPY ./tomo_test_ed25519.pub /root/.ssh/authorized_keys
|
4
4
|
COPY ./ubuntu_setup.sh ./
|
5
5
|
RUN ./ubuntu_setup.sh
|
6
|
-
COPY ./custom_setup.sh ./
|
7
|
-
RUN ./custom_setup.sh
|
8
6
|
COPY ./systemctl.rb /usr/local/bin/systemctl
|
9
7
|
RUN chmod a+x /usr/local/bin/systemctl
|
10
8
|
EXPOSE 22
|
@@ -2,12 +2,7 @@ module Tomo
|
|
2
2
|
module Testing
|
3
3
|
class Connection < Tomo::SSH::Connection
|
4
4
|
def initialize(host, options)
|
5
|
-
super(
|
6
|
-
host,
|
7
|
-
options,
|
8
|
-
exec_proc: proc { raise MockedExecError },
|
9
|
-
child_proc: method(:mock_child_process)
|
10
|
-
)
|
5
|
+
super(host, options, exec_proc: proc { raise MockedExecError }, child_proc: method(:mock_child_process))
|
11
6
|
end
|
12
7
|
|
13
8
|
def ssh_exec(script)
|
@@ -22,13 +22,8 @@ module Tomo
|
|
22
22
|
end
|
23
23
|
@running_images = []
|
24
24
|
|
25
|
-
attr_accessor :setup_script
|
26
25
|
attr_reader :host
|
27
26
|
|
28
|
-
def initialize
|
29
|
-
@setup_script = "#!/bin/bash\n"
|
30
|
-
end
|
31
|
-
|
32
27
|
def build_and_run
|
33
28
|
raise "Already running!" if frozen?
|
34
29
|
|
@@ -74,19 +69,13 @@ module Tomo
|
|
74
69
|
attr_reader :container_id, :image_id, :private_key_path
|
75
70
|
|
76
71
|
def pull_base_image_if_needed
|
77
|
-
images = Local.capture('docker images --format "{{.ID}}" ubuntu:
|
78
|
-
Local.capture("docker pull ubuntu:
|
72
|
+
images = Local.capture('docker images --format "{{.ID}}" ubuntu:20.04')
|
73
|
+
Local.capture("docker pull ubuntu:20.04") if images.strip.empty?
|
79
74
|
end
|
80
75
|
|
81
76
|
def set_up_private_key
|
82
|
-
@private_key_path = File.join(
|
83
|
-
|
84
|
-
"tomo_test_ed25519_#{SecureRandom.hex(8)}"
|
85
|
-
)
|
86
|
-
FileUtils.cp(
|
87
|
-
File.expand_path("tomo_test_ed25519", __dir__),
|
88
|
-
private_key_path
|
89
|
-
)
|
77
|
+
@private_key_path = File.join(Dir.tmpdir, "tomo_test_ed25519_#{SecureRandom.hex(8)}")
|
78
|
+
FileUtils.cp(File.expand_path("tomo_test_ed25519", __dir__), private_key_path)
|
90
79
|
FileUtils.chmod(0o600, private_key_path)
|
91
80
|
end
|
92
81
|
|
@@ -121,8 +110,6 @@ module Tomo
|
|
121
110
|
FILES_TO_COPY.each do |file|
|
122
111
|
FileUtils.cp(File.expand_path(file, __dir__), build_dir)
|
123
112
|
end
|
124
|
-
IO.write(File.join(build_dir, "custom_setup.sh"), setup_script)
|
125
|
-
FileUtils.chmod(0o755, File.join(build_dir, "custom_setup.sh"))
|
126
113
|
end
|
127
114
|
|
128
115
|
def build_dir
|
data/lib/tomo/testing/local.rb
CHANGED
@@ -41,9 +41,7 @@ module Tomo
|
|
41
41
|
progress(command_str) do
|
42
42
|
output, status = Open3.capture2e(*command)
|
43
43
|
|
44
|
-
if raise_on_error && !status.success?
|
45
|
-
raise "Command failed: #{command_str}\n#{output}"
|
46
|
-
end
|
44
|
+
raise "Command failed: #{command_str}\n#{output}" if raise_on_error && !status.success?
|
47
45
|
|
48
46
|
output
|
49
47
|
end
|
@@ -1,10 +1,29 @@
|
|
1
1
|
module Tomo
|
2
2
|
module Testing
|
3
|
-
class MockPluginTester
|
3
|
+
class MockPluginTester
|
4
|
+
include LogCapturing
|
5
|
+
|
4
6
|
def initialize(*plugin_names, settings: {}, release: {})
|
5
|
-
host = Host.parse("testing@host")
|
6
|
-
host.release.merge!(release)
|
7
|
-
|
7
|
+
@host = Host.parse("testing@host")
|
8
|
+
@host.release.merge!(release)
|
9
|
+
config = Configuration.new
|
10
|
+
config.hosts << @host
|
11
|
+
config.plugins.push(*plugin_names, "testing")
|
12
|
+
config.settings[:application] = "testing"
|
13
|
+
config.settings.merge!(settings)
|
14
|
+
@runtime = config.build_runtime
|
15
|
+
end
|
16
|
+
|
17
|
+
def call_helper(helper, *args, **kwargs)
|
18
|
+
run_task("testing:call_helper", helper, args, kwargs)
|
19
|
+
host.helper_values.pop
|
20
|
+
end
|
21
|
+
|
22
|
+
def run_task(task, *args)
|
23
|
+
capturing_logger_output do
|
24
|
+
runtime.run!(task, *args, privileged: false)
|
25
|
+
nil
|
26
|
+
end
|
8
27
|
end
|
9
28
|
|
10
29
|
def executed_script
|
@@ -21,6 +40,10 @@ module Tomo
|
|
21
40
|
host.mock(script, **kwargs)
|
22
41
|
self
|
23
42
|
end
|
43
|
+
|
44
|
+
private
|
45
|
+
|
46
|
+
attr_reader :host, :runtime
|
24
47
|
end
|
25
48
|
end
|
26
49
|
end
|
@@ -17,8 +17,7 @@ touch /var/lib/systemd/linger/deployer
|
|
17
17
|
|
18
18
|
# Packages needed for ruby, etc.
|
19
19
|
apt-get -y update
|
20
|
-
apt-get -y install build-essential zlib1g-dev libssl-dev libreadline-dev
|
21
|
-
git-core curl locales libsqlite3-dev
|
20
|
+
apt-get -y install build-essential zlib1g-dev libssl-dev libreadline-dev git-core curl locales libsqlite3-dev
|
22
21
|
|
23
22
|
apt-get -y install tzdata \
|
24
23
|
-o DPkg::options::="--force-confdef" \
|
data/lib/tomo/version.rb
CHANGED
metadata
CHANGED
@@ -1,155 +1,15 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: tomo
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.
|
4
|
+
version: 1.3.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Matt Brictson
|
8
|
-
autorequire:
|
8
|
+
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2020-
|
12
|
-
dependencies:
|
13
|
-
- !ruby/object:Gem::Dependency
|
14
|
-
name: bundler
|
15
|
-
requirement: !ruby/object:Gem::Requirement
|
16
|
-
requirements:
|
17
|
-
- - "~>"
|
18
|
-
- !ruby/object:Gem::Version
|
19
|
-
version: '2.0'
|
20
|
-
type: :development
|
21
|
-
prerelease: false
|
22
|
-
version_requirements: !ruby/object:Gem::Requirement
|
23
|
-
requirements:
|
24
|
-
- - "~>"
|
25
|
-
- !ruby/object:Gem::Version
|
26
|
-
version: '2.0'
|
27
|
-
- !ruby/object:Gem::Dependency
|
28
|
-
name: concurrent-ruby
|
29
|
-
requirement: !ruby/object:Gem::Requirement
|
30
|
-
requirements:
|
31
|
-
- - "~>"
|
32
|
-
- !ruby/object:Gem::Version
|
33
|
-
version: '1.1'
|
34
|
-
type: :development
|
35
|
-
prerelease: false
|
36
|
-
version_requirements: !ruby/object:Gem::Requirement
|
37
|
-
requirements:
|
38
|
-
- - "~>"
|
39
|
-
- !ruby/object:Gem::Version
|
40
|
-
version: '1.1'
|
41
|
-
- !ruby/object:Gem::Dependency
|
42
|
-
name: minitest
|
43
|
-
requirement: !ruby/object:Gem::Requirement
|
44
|
-
requirements:
|
45
|
-
- - "~>"
|
46
|
-
- !ruby/object:Gem::Version
|
47
|
-
version: '5.11'
|
48
|
-
type: :development
|
49
|
-
prerelease: false
|
50
|
-
version_requirements: !ruby/object:Gem::Requirement
|
51
|
-
requirements:
|
52
|
-
- - "~>"
|
53
|
-
- !ruby/object:Gem::Version
|
54
|
-
version: '5.11'
|
55
|
-
- !ruby/object:Gem::Dependency
|
56
|
-
name: minitest-ci
|
57
|
-
requirement: !ruby/object:Gem::Requirement
|
58
|
-
requirements:
|
59
|
-
- - "~>"
|
60
|
-
- !ruby/object:Gem::Version
|
61
|
-
version: '3.4'
|
62
|
-
type: :development
|
63
|
-
prerelease: false
|
64
|
-
version_requirements: !ruby/object:Gem::Requirement
|
65
|
-
requirements:
|
66
|
-
- - "~>"
|
67
|
-
- !ruby/object:Gem::Version
|
68
|
-
version: '3.4'
|
69
|
-
- !ruby/object:Gem::Dependency
|
70
|
-
name: minitest-hooks
|
71
|
-
requirement: !ruby/object:Gem::Requirement
|
72
|
-
requirements:
|
73
|
-
- - "~>"
|
74
|
-
- !ruby/object:Gem::Version
|
75
|
-
version: '1.5'
|
76
|
-
type: :development
|
77
|
-
prerelease: false
|
78
|
-
version_requirements: !ruby/object:Gem::Requirement
|
79
|
-
requirements:
|
80
|
-
- - "~>"
|
81
|
-
- !ruby/object:Gem::Version
|
82
|
-
version: '1.5'
|
83
|
-
- !ruby/object:Gem::Dependency
|
84
|
-
name: minitest-reporters
|
85
|
-
requirement: !ruby/object:Gem::Requirement
|
86
|
-
requirements:
|
87
|
-
- - "~>"
|
88
|
-
- !ruby/object:Gem::Version
|
89
|
-
version: '1.3'
|
90
|
-
type: :development
|
91
|
-
prerelease: false
|
92
|
-
version_requirements: !ruby/object:Gem::Requirement
|
93
|
-
requirements:
|
94
|
-
- - "~>"
|
95
|
-
- !ruby/object:Gem::Version
|
96
|
-
version: '1.3'
|
97
|
-
- !ruby/object:Gem::Dependency
|
98
|
-
name: rake
|
99
|
-
requirement: !ruby/object:Gem::Requirement
|
100
|
-
requirements:
|
101
|
-
- - "~>"
|
102
|
-
- !ruby/object:Gem::Version
|
103
|
-
version: '13.0'
|
104
|
-
type: :development
|
105
|
-
prerelease: false
|
106
|
-
version_requirements: !ruby/object:Gem::Requirement
|
107
|
-
requirements:
|
108
|
-
- - "~>"
|
109
|
-
- !ruby/object:Gem::Version
|
110
|
-
version: '13.0'
|
111
|
-
- !ruby/object:Gem::Dependency
|
112
|
-
name: rubocop
|
113
|
-
requirement: !ruby/object:Gem::Requirement
|
114
|
-
requirements:
|
115
|
-
- - '='
|
116
|
-
- !ruby/object:Gem::Version
|
117
|
-
version: 0.81.0
|
118
|
-
type: :development
|
119
|
-
prerelease: false
|
120
|
-
version_requirements: !ruby/object:Gem::Requirement
|
121
|
-
requirements:
|
122
|
-
- - '='
|
123
|
-
- !ruby/object:Gem::Version
|
124
|
-
version: 0.81.0
|
125
|
-
- !ruby/object:Gem::Dependency
|
126
|
-
name: rubocop-minitest
|
127
|
-
requirement: !ruby/object:Gem::Requirement
|
128
|
-
requirements:
|
129
|
-
- - '='
|
130
|
-
- !ruby/object:Gem::Version
|
131
|
-
version: 0.8.1
|
132
|
-
type: :development
|
133
|
-
prerelease: false
|
134
|
-
version_requirements: !ruby/object:Gem::Requirement
|
135
|
-
requirements:
|
136
|
-
- - '='
|
137
|
-
- !ruby/object:Gem::Version
|
138
|
-
version: 0.8.1
|
139
|
-
- !ruby/object:Gem::Dependency
|
140
|
-
name: rubocop-performance
|
141
|
-
requirement: !ruby/object:Gem::Requirement
|
142
|
-
requirements:
|
143
|
-
- - '='
|
144
|
-
- !ruby/object:Gem::Version
|
145
|
-
version: 1.5.2
|
146
|
-
type: :development
|
147
|
-
prerelease: false
|
148
|
-
version_requirements: !ruby/object:Gem::Requirement
|
149
|
-
requirements:
|
150
|
-
- - '='
|
151
|
-
- !ruby/object:Gem::Version
|
152
|
-
version: 1.5.2
|
11
|
+
date: 2020-08-08 00:00:00.000000000 Z
|
12
|
+
dependencies: []
|
153
13
|
description: Tomo is a feature-rich deployment tool that contains everything you need
|
154
14
|
to deploy a basic Rails app out of the box. It has an opinionated, production-tested
|
155
15
|
set of defaults, but is easily extensible via a well-documented plugin system. Unlike
|
@@ -292,14 +152,12 @@ files:
|
|
292
152
|
- lib/tomo/testing/cli_tester.rb
|
293
153
|
- lib/tomo/testing/connection.rb
|
294
154
|
- lib/tomo/testing/docker_image.rb
|
295
|
-
- lib/tomo/testing/docker_plugin_tester.rb
|
296
155
|
- lib/tomo/testing/host_extensions.rb
|
297
156
|
- lib/tomo/testing/local.rb
|
298
157
|
- lib/tomo/testing/log_capturing.rb
|
299
158
|
- lib/tomo/testing/mock_plugin_tester.rb
|
300
159
|
- lib/tomo/testing/mocked_exec_error.rb
|
301
160
|
- lib/tomo/testing/mocked_exit_error.rb
|
302
|
-
- lib/tomo/testing/plugin_tester.rb
|
303
161
|
- lib/tomo/testing/remote_extensions.rb
|
304
162
|
- lib/tomo/testing/ssh_extensions.rb
|
305
163
|
- lib/tomo/testing/systemctl.rb
|
@@ -314,9 +172,9 @@ metadata:
|
|
314
172
|
bug_tracker_uri: https://github.com/mattbrictson/tomo/issues
|
315
173
|
changelog_uri: https://github.com/mattbrictson/tomo/releases
|
316
174
|
source_code_uri: https://github.com/mattbrictson/tomo
|
317
|
-
homepage_uri: https://
|
175
|
+
homepage_uri: https://github.com/mattbrictson/tomo
|
318
176
|
documentation_uri: https://tomo-deploy.com/
|
319
|
-
post_install_message:
|
177
|
+
post_install_message:
|
320
178
|
rdoc_options: []
|
321
179
|
require_paths:
|
322
180
|
- lib
|
@@ -331,8 +189,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
331
189
|
- !ruby/object:Gem::Version
|
332
190
|
version: '0'
|
333
191
|
requirements: []
|
334
|
-
rubygems_version: 3.1.
|
335
|
-
signing_key:
|
192
|
+
rubygems_version: 3.1.4
|
193
|
+
signing_key:
|
336
194
|
specification_version: 4
|
337
195
|
summary: A friendly CLI for deploying Rails apps ✨
|
338
196
|
test_files: []
|