Class: RBS::Trace::CLI::Inline
- Inherits:
-
Object
- Object
- RBS::Trace::CLI::Inline
- Defined in:
- lib/rbs/trace/cli/inline.rb
Constant Summary collapse
- BANNER =
"Usage: rbs-trace inline --sig-dir=DIR --rb-dir=DIR --comment-format=FORMAT\n\nInsert RBS inline comments from RBS files.\n\nExamples:\n # Insert inline comments to `app/**/*.rb`.\n $ rbs-trace inline --sig-dir=sig --rb-dir=app\n\nOptions:\n --comment-format FORMAT: Format for comments (`rbs_keyword` or `rbs_colon`, default: `rbs_keyword`)\n"
Instance Method Summary collapse
Instance Method Details
#run(args) ⇒ Object
21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 |
# File 'lib/rbs/trace/cli/inline.rb', line 21 def run(args) # rubocop:disable Metrics sig_dir = Pathname.pwd.join("sig").to_s rb_dirs = [] #: Array[String] comment_format = :rbs_keyword opts = OptionParser.new(BANNER) opts.on("--sig-dir DIR") { |dir| sig_dir = dir } opts.on("--rb-dir DIR") { |dir| rb_dirs << dir } opts.on("--comment-format FORMAT") { |format| comment_format = format.to_sym } opts.parse!(args) if rb_dirs.empty? puts opts.help else env = load_env(sig_dir) # steep:ignore ArgumentTypeMismatch decls = env.class_decls.transform_values { |v| v.primary.decl } rb_files = rb_dirs.flat_map { |rb_dir| Dir.glob("#{rb_dir}/**/*.rb") } rb_files.each do |path| file = File.new(path, decls) file.rewrite(comment_format) end end end |