Sha256: 31859fce3081ff604005821d705f1a46f5e1183e4d84537527d9c240a10167af

Contents?: true

Size: 1.31 KB

Versions: 29

Compression:

Stored size: 1.31 KB

Contents

command 'write' do |c|
  c.syntax = 'brief write MODEL_TYPE [OPTIONS]'
  c.description = 'Create a new document for a given model type'

  # TODO
  # We could potential query the available model classes we are aware of
  # and determine which CLI arguments those model classes may ask for.
  c.action do |args, options|
    options.default(root: Pathname(Brief.pwd))
    briefcase = Brief.case = Brief::Briefcase.new(root: options.root)
    type_alias = args.first

    model_class = briefcase.model_classes.find {|c| c.type_alias == type_alias }

    content = if model_class.nil?
      model_class = briefcase.schema_map.fetch(type_alias, nil)
      ask_editor(model_class.example)
    else
      ask_editor(model_class.new_doc_template)
    end

    raise "Inavlid model class. Run the schema command to see what is available." if model_class.nil?


    file = ask("Enter a filename: ") { |q| q.default = model_class.new_doc_name }

    if file.to_s.length == 0
      rand_token = rand(36**36).to_s(36).slice(0,3)
      file = "new-#{ type_alias }-#{ rand_token }.md"
    end

    folder = briefcase.docs_path.join(type_alias.pluralize)
    folder = folder.exist? ? folder : briefcase.docs_path

    folder.join(file).open("w+") do |fh|
      fh.write(content)
    end

    puts "== Successfully created #{ folder.join(file) }"
  end
end

Version data entries

29 entries across 29 versions & 1 rubygems

Version Path
brief-1.17.14 lib/brief/cli/write.rb
brief-1.17.13 lib/brief/cli/write.rb
brief-1.17.12 lib/brief/cli/write.rb
brief-1.17.11 lib/brief/cli/write.rb
brief-1.17.10 lib/brief/cli/write.rb
brief-1.17.9 lib/brief/cli/write.rb
brief-1.17.8 lib/brief/cli/write.rb
brief-1.17.7 lib/brief/cli/write.rb
brief-1.17.5 lib/brief/cli/write.rb
brief-1.17.4 lib/brief/cli/write.rb
brief-1.17.3 lib/brief/cli/write.rb
brief-1.17.2 lib/brief/cli/write.rb
brief-1.17.1 lib/brief/cli/write.rb
brief-1.17.0 lib/brief/cli/write.rb
brief-1.16.2 lib/brief/cli/write.rb
brief-1.16.1 lib/brief/cli/write.rb
brief-1.16.0 lib/brief/cli/write.rb
brief-1.15.5 lib/brief/cli/write.rb
brief-1.15.4 lib/brief/cli/write.rb
brief-1.15.3 lib/brief/cli/write.rb