Sha256: fa2a8a7509c551055abade591dd666e4a42433b3cf95fda6a9da94cfad0b53dd

Contents?: true

Size: 1.65 KB

Versions: 3

Compression:

Stored size: 1.65 KB

Contents

#!/usr/bin/env ruby -W1

$LOAD_PATH.unshift File.join(__dir__, '..', 'lib')
require 'journal-cli'
require 'optparse'

trap('SIGINT') { exit! }

module Journal
  class << self
    def usage
      puts 'Usage: journal [type] [date]'
      puts
      puts 'Available journal types:'
      list_journals
    end

    def list_journals
      config = Journal.config
      puts config['journals'].keys
    end

    def run(args)
      if args.count.zero?
        puts "No journal specified"
        usage
        Process.exit 1
      end

      journal = args.shift

      date = if args.length.positive?
               Chronic.parse(args.join(' '), future: false)
             else
               Time.now
             end

      Journal.date = date

      if Journal.config['journals'].key?(journal)
        checkin = Journal::Checkin.new(journal)
        checkin.go
      else
        puts "Journal #{journal} not found"
        usage
        Process.exit 1
      end
    end
  end
end

optparse = OptionParser.new do |opts|
  opts.banner = 'Usage: journal JOURNAL_KEY [NATURAL LANGUAGE DATE]'

  opts.on('-v', '--version', 'Display version') do
    puts "journal v#{Journal::VERSION}"
    Process.exit 0
  end

  opts.on('-l', '--list', 'List available journals') do
    Journal.list_journals
    Process.exit 0
  end

  Color.coloring = $stdout.isatty
  opts.on('--[no-]color', 'Colorize output') do |c|
    Color.coloring = c
  end

  opts.on('-h', '--help', 'Display help') do
    puts opts
    puts
    puts 'Available journal types:'
    config = Journal.config
    puts(config['journals'].keys.map { |k| "- #{k}" })
    Process.exit 0
  end
end

optparse.parse!

Journal.run(ARGV)

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
journal-cli-1.0.36 bin/journal
journal-cli-1.0.35 bin/journal
journal-cli-1.0.34 bin/journal