tomo 1.19.0 → 1.20.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (137) hide show
  1. checksums.yaml +4 -4
  2. data/exe/tomo +1 -0
  3. data/lib/tomo/cli/command.rb +2 -0
  4. data/lib/tomo/cli/common_options.rb +2 -0
  5. data/lib/tomo/cli/completions.rb +2 -0
  6. data/lib/tomo/cli/deploy_options.rb +2 -0
  7. data/lib/tomo/cli/error.rb +2 -0
  8. data/lib/tomo/cli/interrupted_error.rb +2 -0
  9. data/lib/tomo/cli/options.rb +2 -0
  10. data/lib/tomo/cli/parser.rb +2 -0
  11. data/lib/tomo/cli/project_options.rb +2 -0
  12. data/lib/tomo/cli/rules/argument.rb +2 -0
  13. data/lib/tomo/cli/rules/switch.rb +2 -0
  14. data/lib/tomo/cli/rules/value_switch.rb +2 -0
  15. data/lib/tomo/cli/rules.rb +2 -0
  16. data/lib/tomo/cli/rules_evaluator.rb +2 -0
  17. data/lib/tomo/cli/state.rb +2 -0
  18. data/lib/tomo/cli/usage.rb +2 -0
  19. data/lib/tomo/cli.rb +2 -0
  20. data/lib/tomo/colors.rb +2 -0
  21. data/lib/tomo/commands/completion_script.rb +2 -0
  22. data/lib/tomo/commands/default.rb +2 -0
  23. data/lib/tomo/commands/deploy.rb +2 -0
  24. data/lib/tomo/commands/help.rb +2 -0
  25. data/lib/tomo/commands/init.rb +2 -0
  26. data/lib/tomo/commands/run.rb +2 -0
  27. data/lib/tomo/commands/setup.rb +2 -0
  28. data/lib/tomo/commands/tasks.rb +2 -0
  29. data/lib/tomo/commands/version.rb +2 -0
  30. data/lib/tomo/commands.rb +2 -0
  31. data/lib/tomo/configuration/dsl/batch_block.rb +2 -0
  32. data/lib/tomo/configuration/dsl/config_file.rb +2 -0
  33. data/lib/tomo/configuration/dsl/environment_block.rb +2 -0
  34. data/lib/tomo/configuration/dsl/error_formatter.rb +3 -1
  35. data/lib/tomo/configuration/dsl/hosts_and_settings.rb +2 -0
  36. data/lib/tomo/configuration/dsl/tasks_block.rb +2 -0
  37. data/lib/tomo/configuration/dsl.rb +2 -0
  38. data/lib/tomo/configuration/environment.rb +2 -0
  39. data/lib/tomo/configuration/glob.rb +2 -0
  40. data/lib/tomo/configuration/plugin_file_not_found_error.rb +2 -0
  41. data/lib/tomo/configuration/plugins_registry/file_resolver.rb +2 -0
  42. data/lib/tomo/configuration/plugins_registry/gem_resolver.rb +3 -1
  43. data/lib/tomo/configuration/plugins_registry.rb +2 -0
  44. data/lib/tomo/configuration/project_not_found_error.rb +2 -0
  45. data/lib/tomo/configuration/role_based_task_filter.rb +2 -0
  46. data/lib/tomo/configuration/unknown_environment_error.rb +4 -2
  47. data/lib/tomo/configuration/unknown_plugin_error.rb +4 -2
  48. data/lib/tomo/configuration/unspecified_environment_error.rb +2 -0
  49. data/lib/tomo/configuration.rb +2 -0
  50. data/lib/tomo/console/key_reader.rb +4 -2
  51. data/lib/tomo/console/menu.rb +6 -4
  52. data/lib/tomo/console/non_interactive_error.rb +4 -2
  53. data/lib/tomo/console.rb +2 -0
  54. data/lib/tomo/error/suggestions.rb +2 -0
  55. data/lib/tomo/error.rb +2 -0
  56. data/lib/tomo/host.rb +2 -0
  57. data/lib/tomo/logger/tagged_io.rb +2 -0
  58. data/lib/tomo/logger.rb +2 -0
  59. data/lib/tomo/path.rb +2 -0
  60. data/lib/tomo/paths.rb +2 -0
  61. data/lib/tomo/plugin/bundler/helpers.rb +2 -0
  62. data/lib/tomo/plugin/bundler/tasks.rb +2 -0
  63. data/lib/tomo/plugin/bundler.rb +2 -0
  64. data/lib/tomo/plugin/core/helpers.rb +2 -0
  65. data/lib/tomo/plugin/core/tasks.rb +2 -0
  66. data/lib/tomo/plugin/core.rb +2 -0
  67. data/lib/tomo/plugin/env/tasks.rb +2 -0
  68. data/lib/tomo/plugin/env.rb +2 -0
  69. data/lib/tomo/plugin/git/helpers.rb +2 -0
  70. data/lib/tomo/plugin/git/tasks.rb +2 -0
  71. data/lib/tomo/plugin/git.rb +2 -0
  72. data/lib/tomo/plugin/nodenv/tasks.rb +2 -0
  73. data/lib/tomo/plugin/nodenv.rb +2 -0
  74. data/lib/tomo/plugin/puma/tasks.rb +2 -0
  75. data/lib/tomo/plugin/puma.rb +2 -0
  76. data/lib/tomo/plugin/rails/helpers.rb +2 -0
  77. data/lib/tomo/plugin/rails/tasks.rb +2 -0
  78. data/lib/tomo/plugin/rails.rb +2 -0
  79. data/lib/tomo/plugin/rbenv/tasks.rb +2 -0
  80. data/lib/tomo/plugin/rbenv.rb +2 -0
  81. data/lib/tomo/plugin/testing.rb +2 -0
  82. data/lib/tomo/plugin.rb +2 -0
  83. data/lib/tomo/plugin_dsl.rb +2 -0
  84. data/lib/tomo/remote.rb +2 -0
  85. data/lib/tomo/result.rb +3 -1
  86. data/lib/tomo/runtime/concurrent_ruby_load_error.rb +2 -0
  87. data/lib/tomo/runtime/concurrent_ruby_thread_pool.rb +2 -0
  88. data/lib/tomo/runtime/context.rb +2 -0
  89. data/lib/tomo/runtime/current.rb +2 -0
  90. data/lib/tomo/runtime/execution_plan.rb +2 -0
  91. data/lib/tomo/runtime/explanation.rb +3 -1
  92. data/lib/tomo/runtime/host_execution_step.rb +2 -0
  93. data/lib/tomo/runtime/inline_thread_pool.rb +2 -0
  94. data/lib/tomo/runtime/no_tasks_error.rb +2 -0
  95. data/lib/tomo/runtime/privileged_task.rb +2 -0
  96. data/lib/tomo/runtime/settings_interpolation.rb +3 -1
  97. data/lib/tomo/runtime/settings_required_error.rb +3 -1
  98. data/lib/tomo/runtime/task_aborted_error.rb +2 -0
  99. data/lib/tomo/runtime/task_runner.rb +2 -0
  100. data/lib/tomo/runtime/template_not_found_error.rb +2 -0
  101. data/lib/tomo/runtime/unknown_task_error.rb +3 -1
  102. data/lib/tomo/runtime.rb +2 -0
  103. data/lib/tomo/script.rb +2 -0
  104. data/lib/tomo/shell_builder.rb +2 -0
  105. data/lib/tomo/ssh/child_process.rb +2 -0
  106. data/lib/tomo/ssh/connection.rb +2 -0
  107. data/lib/tomo/ssh/connection_error.rb +2 -0
  108. data/lib/tomo/ssh/connection_validator.rb +2 -0
  109. data/lib/tomo/ssh/error.rb +2 -0
  110. data/lib/tomo/ssh/executable_error.rb +2 -0
  111. data/lib/tomo/ssh/options.rb +4 -2
  112. data/lib/tomo/ssh/permission_error.rb +2 -0
  113. data/lib/tomo/ssh/script_error.rb +2 -0
  114. data/lib/tomo/ssh/unknown_error.rb +2 -0
  115. data/lib/tomo/ssh/unsupported_version_error.rb +2 -0
  116. data/lib/tomo/ssh.rb +2 -0
  117. data/lib/tomo/task_api.rb +2 -0
  118. data/lib/tomo/task_library.rb +2 -0
  119. data/lib/tomo/testing/Dockerfile +1 -1
  120. data/lib/tomo/testing/cli_extensions.rb +2 -0
  121. data/lib/tomo/testing/cli_tester.rb +2 -0
  122. data/lib/tomo/testing/connection.rb +2 -0
  123. data/lib/tomo/testing/docker_image.rb +4 -2
  124. data/lib/tomo/testing/host_extensions.rb +3 -1
  125. data/lib/tomo/testing/local.rb +2 -0
  126. data/lib/tomo/testing/log_capturing.rb +2 -0
  127. data/lib/tomo/testing/mock_plugin_tester.rb +2 -0
  128. data/lib/tomo/testing/mocked_exec_error.rb +2 -0
  129. data/lib/tomo/testing/mocked_exit_error.rb +2 -0
  130. data/lib/tomo/testing/remote_extensions.rb +2 -0
  131. data/lib/tomo/testing/ssh_extensions.rb +2 -0
  132. data/lib/tomo/testing/systemctl.rb +1 -0
  133. data/lib/tomo/testing/ubuntu_setup.sh +3 -1
  134. data/lib/tomo/testing.rb +2 -0
  135. data/lib/tomo/version.rb +3 -1
  136. data/lib/tomo.rb +3 -1
  137. metadata +3 -3
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require "shellwords"
2
4
 
3
5
  module Tomo::Plugin::Rbenv
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require_relative "rbenv/tasks"
2
4
 
3
5
  module Tomo::Plugin
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  raise "The testing plugin cannot be used outside of unit tests" unless defined?(Tomo::Testing)
2
4
 
3
5
  module Tomo::Plugin
data/lib/tomo/plugin.rb CHANGED
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module Tomo
2
4
  module Plugin
3
5
  end
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module Tomo
2
4
  module PluginDSL
3
5
  def self.extended(mod)
data/lib/tomo/remote.rb CHANGED
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require "forwardable"
2
4
 
3
5
  module Tomo
data/lib/tomo/result.rb CHANGED
@@ -1,7 +1,9 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module Tomo
2
4
  class Result
3
5
  def self.empty_success
4
- new(stdout: "", stderr: "", exit_status: 0)
6
+ new(stdout: +"", stderr: +"", exit_status: 0)
5
7
  end
6
8
 
7
9
  attr_reader :stdout, :stderr, :exit_status
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module Tomo
2
4
  class Runtime
3
5
  class ConcurrentRubyLoadError < Tomo::Error
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  concurrent_ver = "~> 1.1"
2
4
 
3
5
  begin
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module Tomo
2
4
  class Runtime
3
5
  class Context
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module Tomo
2
4
  class Runtime
3
5
  module Current
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require "forwardable"
2
4
 
3
5
  module Tomo
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module Tomo
2
4
  class Runtime
3
5
  class Explanation
@@ -22,7 +24,7 @@ module Tomo
22
24
  indent = threads > 1 ? " = " : ""
23
25
  if threads > 1 && step.applicable_tasks.length > 1
24
26
  desc << "#{indent}IN SEQUENCE:"
25
- indent.sub!("=", " ")
27
+ indent = indent.sub("=", " ")
26
28
  end
27
29
  desc << step.explain.gsub(/^/, indent)
28
30
  end
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module Tomo
2
4
  class Runtime
3
5
  class HostExecutionStep
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module Tomo
2
4
  class Runtime
3
5
  class InlineThreadPool
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module Tomo
2
4
  class Runtime
3
5
  class NoTasksError < Error
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module Tomo
2
4
  class Runtime
3
5
  module PrivilegedTask
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module Tomo
2
4
  class Runtime
3
5
  class SettingsInterpolation
@@ -40,7 +42,7 @@ module Tomo
40
42
 
41
43
  def dump_settings(hash)
42
44
  key_len = hash.keys.map { |k| k.to_s.length }.max
43
- dump = "Settings: {\n"
45
+ dump = +"Settings: {\n"
44
46
  hash.to_a.sort_by(&:first).each do |key, value|
45
47
  justified_key = "#{key}:".ljust(key_len + 1)
46
48
  dump << " #{justified_key} #{value.inspect},\n"
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module Tomo
2
4
  class Runtime
3
5
  class SettingsRequiredError < Tomo::Error
@@ -24,7 +26,7 @@ module Tomo
24
26
  return "a value for the #{yellow(settings.first.to_s)} setting." if settings.length == 1
25
27
 
26
28
  sentence = "values for these settings:\n\n "
27
- sentence << settings.map { |s| yellow(s.to_s) }.join("\n ")
29
+ sentence + settings.map { |s| yellow(s.to_s) }.join("\n ")
28
30
  end
29
31
  end
30
32
  end
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module Tomo
2
4
  class Runtime
3
5
  class TaskAbortedError < Tomo::Error
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module Tomo
2
4
  class Runtime
3
5
  class TaskRunner
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module Tomo
2
4
  class Runtime
3
5
  class TemplateNotFoundError < Error
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module Tomo
2
4
  class Runtime
3
5
  class UnknownTaskError < Error
@@ -10,7 +12,7 @@ module Tomo
10
12
  ERROR
11
13
 
12
14
  sugg = spelling_suggestion || missing_plugin_suggestion
13
- error << sugg if sugg
15
+ error += sugg if sugg
14
16
  error
15
17
  end
16
18
 
data/lib/tomo/runtime.rb CHANGED
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require "time"
2
4
 
3
5
  module Tomo
data/lib/tomo/script.rb CHANGED
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module Tomo
2
4
  class Script
3
5
  attr_reader :script
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require "shellwords"
2
4
 
3
5
  module Tomo
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require "open3"
2
4
  require "shellwords"
3
5
  require "stringio"
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require "fileutils"
2
4
  require "securerandom"
3
5
  require "tmpdir"
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module Tomo
2
4
  module SSH
3
5
  class ConnectionError < Error
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require "forwardable"
2
4
 
3
5
  module Tomo
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module Tomo
2
4
  module SSH
3
5
  class Error < Tomo::Error
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module Tomo
2
4
  module SSH
3
5
  class ExecutableError < Error
@@ -1,13 +1,15 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module Tomo
2
4
  module SSH
3
5
  class Options
4
6
  DEFAULTS = {
5
7
  ssh_connect_timeout: 5,
6
- ssh_executable: "ssh".freeze,
8
+ ssh_executable: "ssh",
7
9
  ssh_extra_opts: %w[-o PasswordAuthentication=no].map(&:freeze),
8
10
  ssh_forward_agent: true,
9
11
  ssh_reuse_connections: true,
10
- ssh_strict_host_key_checking: "accept-new".freeze
12
+ ssh_strict_host_key_checking: "accept-new"
11
13
  }.freeze
12
14
 
13
15
  attr_reader :executable
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module Tomo
2
4
  module SSH
3
5
  class PermissionError < Error
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require "shellwords"
2
4
 
3
5
  module Tomo
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module Tomo
2
4
  module SSH
3
5
  class UnknownError < Error
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module Tomo
2
4
  module SSH
3
5
  class UnsupportedVersionError < Error
data/lib/tomo/ssh.rb CHANGED
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module Tomo
2
4
  module SSH
3
5
  autoload :ChildProcess, "tomo/ssh/child_process"
data/lib/tomo/task_api.rb CHANGED
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require "erb"
2
4
 
3
5
  module Tomo
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module Tomo
2
4
  class TaskLibrary
3
5
  include TaskAPI
@@ -1,4 +1,4 @@
1
- FROM ubuntu:22.04
1
+ FROM ubuntu:24.04
2
2
  WORKDIR /provision
3
3
  COPY ./tomo_test_ed25519.pub /root/.ssh/authorized_keys
4
4
  COPY ./ubuntu_setup.sh ./
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module Tomo
2
4
  module Testing
3
5
  module CLIExtensions
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require "securerandom"
2
4
 
3
5
  module Tomo
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module Tomo
2
4
  module Testing
3
5
  class Connection < Tomo::SSH::Connection
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require "fileutils"
2
4
  require "open3"
3
5
  require "securerandom"
@@ -69,8 +71,8 @@ module Tomo
69
71
  attr_reader :container_id, :image_id, :private_key_path
70
72
 
71
73
  def pull_base_image_if_needed
72
- images = Local.capture('docker images --format "{{.ID}}" ubuntu:22.04')
73
- Local.capture("docker pull ubuntu:22.04") if images.strip.empty?
74
+ images = Local.capture('docker images --format "{{.ID}}" ubuntu:24.04')
75
+ Local.capture("docker pull ubuntu:24.04") if images.strip.empty?
74
76
  end
75
77
 
76
78
  def set_up_private_key
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module Tomo
2
4
  module Testing
3
5
  module HostExtensions
@@ -14,7 +16,7 @@ module Tomo
14
16
  def mock(script, stdout: "", stderr: "", exit_status: 0)
15
17
  mocks << [
16
18
  script.is_a?(Regexp) ? script : /\A#{Regexp.quote(script)}\z/,
17
- Result.new(stdout:, stderr:, exit_status:)
19
+ Result.new(stdout: String.new(stdout), stderr: String.new(stderr), exit_status:)
18
20
  ]
19
21
  end
20
22
 
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require "bundler"
2
4
  require "fileutils"
3
5
  require "open3"
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require "stringio"
2
4
 
3
5
  module Tomo
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module Tomo
2
4
  module Testing
3
5
  class MockPluginTester
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module Tomo
2
4
  module Testing
3
5
  class MockedExecError < Exception # rubocop:disable Lint/InheritException
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module Tomo
2
4
  module Testing
3
5
  class MockedExitError < Exception # rubocop:disable Lint/InheritException
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module Tomo
2
4
  module Testing
3
5
  module RemoteExtensions
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module Tomo
2
4
  module Testing
3
5
  module SSHExtensions
@@ -1,4 +1,5 @@
1
1
  #!/usr/bin/env ruby
2
+ # frozen_string_literal: true
2
3
 
3
4
  # THIS SCRIPT IS FOR TESTING PURPOSES ONLY.
4
5
  #
@@ -4,6 +4,9 @@ set -e
4
4
 
5
5
  export DEBIAN_FRONTEND=noninteractive
6
6
 
7
+ apt-get -y update
8
+ apt-get -y install adduser
9
+
7
10
  # Create `deployer` user
8
11
  adduser --disabled-password deployer < /dev/null
9
12
  mkdir -p /home/deployer/.ssh
@@ -16,7 +19,6 @@ mkdir -p /var/lib/systemd/linger
16
19
  touch /var/lib/systemd/linger/deployer
17
20
 
18
21
  # Packages needed for ruby, etc.
19
- apt-get -y update
20
22
  apt-get -y install autoconf \
21
23
  bison \
22
24
  build-essential \
data/lib/tomo/testing.rb CHANGED
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require "tomo"
2
4
 
3
5
  module Tomo
data/lib/tomo/version.rb CHANGED
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module Tomo
2
- VERSION = "1.19.0".freeze
4
+ VERSION = "1.20.0"
3
5
  end
data/lib/tomo.rb CHANGED
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module Tomo
2
4
  autoload :CLI, "tomo/cli"
3
5
  autoload :Colors, "tomo/colors"
@@ -21,7 +23,7 @@ module Tomo
21
23
  autoload :TaskLibrary, "tomo/task_library"
22
24
  autoload :VERSION, "tomo/version"
23
25
 
24
- DEFAULT_CONFIG_PATH = ".tomo/config.rb".freeze
26
+ DEFAULT_CONFIG_PATH = ".tomo/config.rb"
25
27
 
26
28
  class << self
27
29
  attr_accessor :logger
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: tomo
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.19.0
4
+ version: 1.20.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Matt Brictson
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2024-05-25 00:00:00.000000000 Z
11
+ date: 2024-09-01 00:00:00.000000000 Z
12
12
  dependencies: []
13
13
  description: Tomo is a feature-rich deployment tool that contains everything you need
14
14
  to deploy a basic Rails app out of the box. It has an opinionated, production-tested
@@ -190,7 +190,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
190
190
  - !ruby/object:Gem::Version
191
191
  version: '0'
192
192
  requirements: []
193
- rubygems_version: 3.5.10
193
+ rubygems_version: 3.5.18
194
194
  signing_key:
195
195
  specification_version: 4
196
196
  summary: A friendly CLI for deploying Rails apps ✨