lib/spoom/cli.rb in spoom-1.0.4 vs lib/spoom/cli.rb in spoom-1.0.5

- old
+ new

@@ -1,28 +1,63 @@ # typed: true # frozen_string_literal: true require "thor" -require_relative "cli/commands/config" -require_relative "cli/commands/lsp" -require_relative "cli/commands/run" +require_relative 'cli/helper' +require_relative "cli/bump" +require_relative "cli/config" +require_relative "cli/lsp" +require_relative "cli/coverage" +require_relative "cli/run" + module Spoom module Cli class Main < Thor extend T::Sig + include Helper - class_option :no_color, desc: "Don't use colors", type: :boolean + class_option :color, desc: "Use colors", type: :boolean, default: true + class_option :path, desc: "Run spoom in a specific path", type: :string, default: ".", aliases: :p + map T.unsafe(%w[--version -v] => :__print_version) + desc "bump", "bump Sorbet sigils from `false` to `true` when no errors" + subcommand "bump", Spoom::Cli::Bump + desc "config", "manage Sorbet config" - subcommand "config", Spoom::Cli::Commands::Config + subcommand "config", Spoom::Cli::Config + desc "coverage", "collect metrics related to Sorbet coverage" + subcommand "coverage", Spoom::Cli::Coverage + desc "lsp", "send LSP requests to Sorbet" - subcommand "lsp", Spoom::Cli::Commands::LSP + subcommand "lsp", Spoom::Cli::LSP desc "tc", "run Sorbet and parses its output" - subcommand "tc", Spoom::Cli::Commands::Run + subcommand "tc", Spoom::Cli::Run + + desc "files", "list all the files typechecked by Sorbet" + def files + in_sorbet_project! + + path = exec_path + config = Spoom::Sorbet::Config.parse_file(sorbet_config) + files = Spoom::Sorbet.srb_files(config, path: path) + + say("Files matching `#{sorbet_config}`:") + if files.empty? + say(" NONE") + else + tree = FileTree.new(files, strip_prefix: path) + tree.print(colors: options[:color], indent_level: 2) + end + end + + desc "--version", "show version" + def __print_version + puts "Spoom v#{Spoom::VERSION}" + end # Utils def self.exit_on_failure? true