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