Class: GraphQL::Modernize::CLI
- Inherits:
-
Object
- Object
- GraphQL::Modernize::CLI
- Defined in:
- lib/graphql/modernize/cli.rb
Constant Summary collapse
- COMMANDS =
%w[run list explain doctor version].freeze
- PACKAGE_ROOT =
File.("../../..", __dir__)
Class Method Summary collapse
Instance Method Summary collapse
- #doctor ⇒ Object
- #explain ⇒ Object
-
#initialize(arguments, out:, err:) ⇒ CLI
constructor
A new instance of CLI.
- #list ⇒ Object
- #run ⇒ Object
- #start ⇒ Object
- #version ⇒ Object
Constructor Details
#initialize(arguments, out:, err:) ⇒ CLI
Returns a new instance of CLI.
16 17 18 19 20 |
# File 'lib/graphql/modernize/cli.rb', line 16 def initialize(arguments, out:, err:) @arguments = arguments @out = out @err = err end |
Class Method Details
.start(arguments = ARGV, out: $stdout, err: $stderr) ⇒ Object
12 13 14 |
# File 'lib/graphql/modernize/cli.rb', line 12 def self.start(arguments = ARGV, out: $stdout, err: $stderr) new(arguments.dup, out: out, err: err).start end |
Instance Method Details
#doctor ⇒ Object
81 82 83 84 85 86 87 88 89 90 91 |
# File 'lib/graphql/modernize/cli.rb', line 81 def doctor ("doctor") config = Config.load(root: Dir.pwd) files = FileFinder.new(config).find @out.puts("configuration: ok") @out.puts("ruby: #{RUBY_VERSION}") @out.puts("astel: #{Astel::VERSION}") @out.puts("graphql: #{config.from_version || 'unknown'} -> #{config.target_version || 'unknown'}") @out.puts("files: #{files.length}") 0 end |
#explain ⇒ Object
66 67 68 69 70 71 72 73 74 75 76 77 78 79 |
# File 'lib/graphql/modernize/cli.rb', line 66 def explain parser = OptionParser.new { |opts| opts. = "Usage: graphql-modernize explain RULE_ID" } parser.parse!(@arguments) raise Error, "Specify exactly one RULE_ID" unless @arguments.one? = RuleRegistry.fetch(@arguments.first). @out.puts("#{.id}: #{.summary}") @out.puts("safety: #{.safety}") @out.puts("since: #{.since}") if .since @out.puts("removed_in: #{.removed_in}") if .removed_in docs = .docs && File.(.docs, PACKAGE_ROOT) @out.puts("\n#{File.read(docs)}") if docs && File.file?(docs) 0 end |
#list ⇒ Object
57 58 59 60 61 62 63 64 |
# File 'lib/graphql/modernize/cli.rb', line 57 def list ("list") RuleRegistry.all.each do |rule| = rule. @out.puts("#{.id}\t#{.safety}\t#{.summary}") end 0 end |
#run ⇒ Object
30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 |
# File 'lib/graphql/modernize/cli.rb', line 30 def run = { diff: true, format: "text", jobs: Etc.nprocessors, force: false, strict: false } parser = run_parser() paths = catch(:help) { parser.parse(@arguments) } return 0 if paths == :help config = Config.load(root: Dir.pwd, overrides: config_overrides()) rules = selected_rules(, config) application = Application.new(config: config, rules: rules, jobs: [:jobs], explicit_rule_ids: [:only] || []) application.ensure_write_safe!(paths: paths, force: [:force]) if [:write] result = application.run(paths) warn_parse_errors(result) unless %w[text json].include?([:format]) output = Reporter.render([:format], result, diff: [:diff]) if [:out] ensure_output_is_not_source!([:out], result) File.write([:out], output) else @out.write(output) end strict_failure = [:strict] && result.parse_errors.any? application.write(result) if [:write] && !strict_failure return 2 if strict_failure unresolved?(result, [:fail_level]) ? 1 : 0 end |
#start ⇒ Object
22 23 24 25 26 27 28 |
# File 'lib/graphql/modernize/cli.rb', line 22 def start command = COMMANDS.include?(@arguments.first) ? @arguments.shift : "run" public_send(command) rescue StandardError => e @err.puts("graphql-modernize: #{e.}") 2 end |