module RdocGenerate
RdocGenerate — run rake doc and return structured results for !rdoc. Public: parse_action, build_argv, default_run, generate, handle Depends: RdocReport Tests: test/lib/rdoc_generate_test.rb, test/plugins/rdoc_test.rb
Constants
- DOC_DIR
- INDEX_FILE
Public Instance Methods
Source
# File lib/rdoc_generate.rb, line 25 def build_argv %w[bundle exec rake doc] end
Source
# File lib/rdoc_generate.rb, line 29 def default_run lambda do |argv, root:| Dir.chdir(root) { Open3.capture3(*argv) } end end
Source
# File lib/rdoc_generate.rb, line 35 def generate(root:, run: default_run) stdout, stderr, status = run.call(build_argv, root: root) index_rel = INDEX_FILE index_abs = File.join(root, index_rel) unless status.success? return { status: :error, stderr: [stderr, stdout].join("\n").strip } end unless File.file?(index_abs) return { status: :error, stderr: "rake doc finished but #{index_rel} was not created" } end { status: :ok, index_path: index_rel } end
Source
# File lib/rdoc_generate.rb, line 57 def handle(args, root:, admin_allowed:, run: default_run) return [:error, RdocReport.denial] unless admin_allowed case parse_action(args) when :generate [:async, RdocReport.started, -> { generate(root: root, run: run) }] when :usage [:error, RdocReport.usage] end end
Source
# File lib/rdoc_generate.rb, line 17 def parse_action(args) token = args.to_s.strip.downcase return :generate if token.empty? return :generate if token == "update" :usage end