Sha256: 31e8a56717bda833aa57221786f5db3f7f815a8be443a98db6c8505d5bb63e40

Contents?: true

Size: 1.62 KB

Versions: 5

Compression:

Stored size: 1.62 KB

Contents

require 'govspeak/version'
require 'govspeak'
require 'commander'

module Govspeak
  class CLI
    include Commander::Methods

    def run
      program(:name, 'Govspeak')
      program(:version, Govspeak::VERSION)
      program(:description, "A tool for rendering the GOV.UK dialect of markdown into HTML")
      default_command(:render)
      command(:render) do |command|
        command.syntax = "govspeak render [options] <input>"
        command.description = "Render Govspeak into HTML, can be sourced from stdin, as an argument or from a file"
        command.option("--file FILENAME", String, "File to render")
        command.option("--options JSON", String, "JSON to use as options")
        command.option("--options-file FILENAME", String, "A file of JSON options")
        command.action do |args, options|
          input = get_input($stdin, args, options)
          raise "Nothing to render. Use --help for assistance" unless input

          puts Govspeak::Document.new(input, govspeak_options(options)).to_html
        end
      end
      run!
    end

  private

    def get_input(stdin, args, options)
      return stdin.read unless stdin.tty?
      return read_file(options.file) if options.file

      args.empty? ? nil : args.join(" ")
    end

    def read_file(file_path)
      path = Pathname.new(file_path).realpath
      File.read(path)
    end

    def govspeak_options(command_options)
      string = if command_options.options_file
                 read_file(command_options.options_file)
               else
                 command_options.options
               end
      string ? JSON.parse(string) : {}
    end
  end
end

Version data entries

5 entries across 5 versions & 1 rubygems

Version Path
govspeak-5.9.1 lib/govspeak/cli.rb
govspeak-5.9.0 lib/govspeak/cli.rb
govspeak-5.8.0 lib/govspeak/cli.rb
govspeak-5.7.1 lib/govspeak/cli.rb
govspeak-5.7.0 lib/govspeak/cli.rb