50 lines
950 B
Ruby
50 lines
950 B
Ruby
|
require 'highline/import'
|
||
|
require 'yaml'
|
||
|
|
||
|
usage 'post [options]'
|
||
|
aliases :p
|
||
|
summary 'Add a new post'
|
||
|
description 'Adds a new post, filling in and validating metadata.'
|
||
|
|
||
|
def bold_say(str)
|
||
|
say "<%= color %(#{str}), :bold %>"
|
||
|
end
|
||
|
|
||
|
def bold_ask(str, *args)
|
||
|
ask "<%= color %(#{str}), :bold %>", *args
|
||
|
end
|
||
|
|
||
|
run do |_opts, _args, _cmd|
|
||
|
result_hash = {}
|
||
|
|
||
|
bold_say "Let's make a new post, shall we?"
|
||
|
bold_say('-' * 20)
|
||
|
|
||
|
puts
|
||
|
|
||
|
bold_say 'What kind of post will it be?'
|
||
|
|
||
|
type = choose do |menu|
|
||
|
default = :event
|
||
|
|
||
|
menu.prompt = "(default #{default})"
|
||
|
menu.choice :blog
|
||
|
menu.choice :event
|
||
|
menu.default = default
|
||
|
end
|
||
|
|
||
|
puts
|
||
|
|
||
|
result_hash['title'] = bold_ask 'What will the title be?'
|
||
|
|
||
|
puts
|
||
|
|
||
|
result_hash['time'] = bold_ask 'When will the event take place?', Date
|
||
|
|
||
|
puts
|
||
|
|
||
|
result_hash['banner'] = bold_ask 'Supply a link to the banner of the event, please' if type == :event
|
||
|
|
||
|
puts result_hash.to_yaml
|
||
|
end
|