tomo 1.19.0 → 1.20.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/exe/tomo +1 -0
- data/lib/tomo/cli/command.rb +2 -0
- data/lib/tomo/cli/common_options.rb +2 -0
- data/lib/tomo/cli/completions.rb +2 -0
- data/lib/tomo/cli/deploy_options.rb +2 -0
- data/lib/tomo/cli/error.rb +2 -0
- data/lib/tomo/cli/interrupted_error.rb +2 -0
- data/lib/tomo/cli/options.rb +2 -0
- data/lib/tomo/cli/parser.rb +2 -0
- data/lib/tomo/cli/project_options.rb +2 -0
- data/lib/tomo/cli/rules/argument.rb +2 -0
- data/lib/tomo/cli/rules/switch.rb +2 -0
- data/lib/tomo/cli/rules/value_switch.rb +2 -0
- data/lib/tomo/cli/rules.rb +2 -0
- data/lib/tomo/cli/rules_evaluator.rb +2 -0
- data/lib/tomo/cli/state.rb +2 -0
- data/lib/tomo/cli/usage.rb +2 -0
- data/lib/tomo/cli.rb +2 -0
- data/lib/tomo/colors.rb +2 -0
- data/lib/tomo/commands/completion_script.rb +2 -0
- data/lib/tomo/commands/default.rb +2 -0
- data/lib/tomo/commands/deploy.rb +2 -0
- data/lib/tomo/commands/help.rb +2 -0
- data/lib/tomo/commands/init.rb +2 -0
- data/lib/tomo/commands/run.rb +2 -0
- data/lib/tomo/commands/setup.rb +2 -0
- data/lib/tomo/commands/tasks.rb +2 -0
- data/lib/tomo/commands/version.rb +2 -0
- data/lib/tomo/commands.rb +2 -0
- data/lib/tomo/configuration/dsl/batch_block.rb +2 -0
- data/lib/tomo/configuration/dsl/config_file.rb +2 -0
- data/lib/tomo/configuration/dsl/environment_block.rb +2 -0
- data/lib/tomo/configuration/dsl/error_formatter.rb +3 -1
- data/lib/tomo/configuration/dsl/hosts_and_settings.rb +2 -0
- data/lib/tomo/configuration/dsl/tasks_block.rb +2 -0
- data/lib/tomo/configuration/dsl.rb +2 -0
- data/lib/tomo/configuration/environment.rb +2 -0
- data/lib/tomo/configuration/glob.rb +2 -0
- data/lib/tomo/configuration/plugin_file_not_found_error.rb +2 -0
- data/lib/tomo/configuration/plugins_registry/file_resolver.rb +2 -0
- data/lib/tomo/configuration/plugins_registry/gem_resolver.rb +3 -1
- data/lib/tomo/configuration/plugins_registry.rb +2 -0
- data/lib/tomo/configuration/project_not_found_error.rb +2 -0
- data/lib/tomo/configuration/role_based_task_filter.rb +2 -0
- data/lib/tomo/configuration/unknown_environment_error.rb +4 -2
- data/lib/tomo/configuration/unknown_plugin_error.rb +4 -2
- data/lib/tomo/configuration/unspecified_environment_error.rb +2 -0
- data/lib/tomo/configuration.rb +2 -0
- data/lib/tomo/console/key_reader.rb +4 -2
- data/lib/tomo/console/menu.rb +6 -4
- data/lib/tomo/console/non_interactive_error.rb +4 -2
- data/lib/tomo/console.rb +2 -0
- data/lib/tomo/error/suggestions.rb +2 -0
- data/lib/tomo/error.rb +2 -0
- data/lib/tomo/host.rb +2 -0
- data/lib/tomo/logger/tagged_io.rb +2 -0
- data/lib/tomo/logger.rb +2 -0
- data/lib/tomo/path.rb +2 -0
- data/lib/tomo/paths.rb +2 -0
- data/lib/tomo/plugin/bundler/helpers.rb +2 -0
- data/lib/tomo/plugin/bundler/tasks.rb +2 -0
- data/lib/tomo/plugin/bundler.rb +2 -0
- data/lib/tomo/plugin/core/helpers.rb +2 -0
- data/lib/tomo/plugin/core/tasks.rb +2 -0
- data/lib/tomo/plugin/core.rb +2 -0
- data/lib/tomo/plugin/env/tasks.rb +2 -0
- data/lib/tomo/plugin/env.rb +2 -0
- data/lib/tomo/plugin/git/helpers.rb +2 -0
- data/lib/tomo/plugin/git/tasks.rb +2 -0
- data/lib/tomo/plugin/git.rb +2 -0
- data/lib/tomo/plugin/nodenv/tasks.rb +2 -0
- data/lib/tomo/plugin/nodenv.rb +2 -0
- data/lib/tomo/plugin/puma/tasks.rb +2 -0
- data/lib/tomo/plugin/puma.rb +2 -0
- data/lib/tomo/plugin/rails/helpers.rb +2 -0
- data/lib/tomo/plugin/rails/tasks.rb +2 -0
- data/lib/tomo/plugin/rails.rb +2 -0
- data/lib/tomo/plugin/rbenv/tasks.rb +2 -0
- data/lib/tomo/plugin/rbenv.rb +2 -0
- data/lib/tomo/plugin/testing.rb +2 -0
- data/lib/tomo/plugin.rb +2 -0
- data/lib/tomo/plugin_dsl.rb +2 -0
- data/lib/tomo/remote.rb +2 -0
- data/lib/tomo/result.rb +3 -1
- data/lib/tomo/runtime/concurrent_ruby_load_error.rb +2 -0
- data/lib/tomo/runtime/concurrent_ruby_thread_pool.rb +2 -0
- data/lib/tomo/runtime/context.rb +2 -0
- data/lib/tomo/runtime/current.rb +2 -0
- data/lib/tomo/runtime/execution_plan.rb +2 -0
- data/lib/tomo/runtime/explanation.rb +3 -1
- data/lib/tomo/runtime/host_execution_step.rb +2 -0
- data/lib/tomo/runtime/inline_thread_pool.rb +2 -0
- data/lib/tomo/runtime/no_tasks_error.rb +2 -0
- data/lib/tomo/runtime/privileged_task.rb +2 -0
- data/lib/tomo/runtime/settings_interpolation.rb +3 -1
- data/lib/tomo/runtime/settings_required_error.rb +3 -1
- data/lib/tomo/runtime/task_aborted_error.rb +2 -0
- data/lib/tomo/runtime/task_runner.rb +2 -0
- data/lib/tomo/runtime/template_not_found_error.rb +2 -0
- data/lib/tomo/runtime/unknown_task_error.rb +3 -1
- data/lib/tomo/runtime.rb +2 -0
- data/lib/tomo/script.rb +2 -0
- data/lib/tomo/shell_builder.rb +2 -0
- data/lib/tomo/ssh/child_process.rb +2 -0
- data/lib/tomo/ssh/connection.rb +2 -0
- data/lib/tomo/ssh/connection_error.rb +2 -0
- data/lib/tomo/ssh/connection_validator.rb +2 -0
- data/lib/tomo/ssh/error.rb +2 -0
- data/lib/tomo/ssh/executable_error.rb +2 -0
- data/lib/tomo/ssh/options.rb +4 -2
- data/lib/tomo/ssh/permission_error.rb +2 -0
- data/lib/tomo/ssh/script_error.rb +2 -0
- data/lib/tomo/ssh/unknown_error.rb +2 -0
- data/lib/tomo/ssh/unsupported_version_error.rb +2 -0
- data/lib/tomo/ssh.rb +2 -0
- data/lib/tomo/task_api.rb +2 -0
- data/lib/tomo/task_library.rb +2 -0
- data/lib/tomo/testing/Dockerfile +1 -1
- data/lib/tomo/testing/cli_extensions.rb +2 -0
- data/lib/tomo/testing/cli_tester.rb +2 -0
- data/lib/tomo/testing/connection.rb +2 -0
- data/lib/tomo/testing/docker_image.rb +4 -2
- data/lib/tomo/testing/host_extensions.rb +3 -1
- data/lib/tomo/testing/local.rb +2 -0
- data/lib/tomo/testing/log_capturing.rb +2 -0
- data/lib/tomo/testing/mock_plugin_tester.rb +2 -0
- data/lib/tomo/testing/mocked_exec_error.rb +2 -0
- data/lib/tomo/testing/mocked_exit_error.rb +2 -0
- data/lib/tomo/testing/remote_extensions.rb +2 -0
- data/lib/tomo/testing/ssh_extensions.rb +2 -0
- data/lib/tomo/testing/systemctl.rb +1 -0
- data/lib/tomo/testing/ubuntu_setup.sh +3 -1
- data/lib/tomo/testing.rb +2 -0
- data/lib/tomo/version.rb +3 -1
- data/lib/tomo.rb +3 -1
- metadata +3 -3
    
        data/lib/tomo/plugin/rbenv.rb
    CHANGED
    
    
    
        data/lib/tomo/plugin/testing.rb
    CHANGED
    
    
    
        data/lib/tomo/plugin.rb
    CHANGED
    
    
    
        data/lib/tomo/plugin_dsl.rb
    CHANGED
    
    
    
        data/lib/tomo/remote.rb
    CHANGED
    
    
    
        data/lib/tomo/result.rb
    CHANGED
    
    
    
        data/lib/tomo/runtime/context.rb
    CHANGED
    
    
    
        data/lib/tomo/runtime/current.rb
    CHANGED
    
    
| @@ -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 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  | 
| 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 UnknownTaskError < Error
         | 
| @@ -10,7 +12,7 @@ module Tomo | |
| 10 12 | 
             
                    ERROR
         | 
| 11 13 |  | 
| 12 14 | 
             
                    sugg = spelling_suggestion || missing_plugin_suggestion
         | 
| 13 | 
            -
                    error  | 
| 15 | 
            +
                    error += sugg if sugg
         | 
| 14 16 | 
             
                    error
         | 
| 15 17 | 
             
                  end
         | 
| 16 18 |  | 
    
        data/lib/tomo/runtime.rb
    CHANGED
    
    
    
        data/lib/tomo/script.rb
    CHANGED
    
    
    
        data/lib/tomo/shell_builder.rb
    CHANGED
    
    
    
        data/lib/tomo/ssh/connection.rb
    CHANGED
    
    
    
        data/lib/tomo/ssh/error.rb
    CHANGED
    
    
    
        data/lib/tomo/ssh/options.rb
    CHANGED
    
    | @@ -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" | 
| 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" | 
| 12 | 
            +
                    ssh_strict_host_key_checking: "accept-new"
         | 
| 11 13 | 
             
                  }.freeze
         | 
| 12 14 |  | 
| 13 15 | 
             
                  attr_reader :executable
         | 
    
        data/lib/tomo/ssh.rb
    CHANGED
    
    
    
        data/lib/tomo/task_api.rb
    CHANGED
    
    
    
        data/lib/tomo/task_library.rb
    CHANGED
    
    
    
        data/lib/tomo/testing/Dockerfile
    CHANGED
    
    
| @@ -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: | 
| 73 | 
            -
                    Local.capture("docker pull ubuntu: | 
| 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 | 
| 19 | 
            +
                      Result.new(stdout: String.new(stdout), stderr: String.new(stderr), exit_status:)
         | 
| 18 20 | 
             
                    ]
         | 
| 19 21 | 
             
                  end
         | 
| 20 22 |  | 
    
        data/lib/tomo/testing/local.rb
    CHANGED
    
    
| @@ -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
    
    
    
        data/lib/tomo/version.rb
    CHANGED
    
    
    
        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" | 
| 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. | 
| 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- | 
| 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. | 
| 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 ✨
         |