Sha256: 98145024d9f31138a785a797a1d96ce86846fd0319a3e979ef27df7fa26e6f82

Contents?: true

Size: 1.55 KB

Versions: 4

Compression:

Stored size: 1.55 KB

Contents

require 'launchy'
require 'thor'

module DevTrainingBot
  class Cli < Thor
    def self.exit_on_failure?
      true
    end

    map %w[--version -v] => :version

    desc 'version', 'Show version'
    def version
      say "v#{VERSION}"
    end

    desc 'open', 'Open Dev Training document in your browser'
    def open
      Launchy.open GoogleDriveService::DOC_URL
    end

    desc 'save <file>', 'Save Dev Training document to disk'
    method_option :format,
                  aliases: '-f',
                  desc: 'Specify the format of the document',
                  default: 'text',
                  enum: GoogleDriveService.formats
    def save(file)
      mime = GoogleDriveService.mime(options[:format])
      drive_service.export_file(ENV['FILE_ID'], mime, download_dest: file)
      say 'Successfully saved the document!', :green
    end

    desc 'publish', "Send a poll to the #{ENV['SLACK_CHANNEL']} channel"
    def publish
      slack_service.create_poll(topic_service.to_poll)
      slack_service.link_doc
      say 'Successfully published the poll!', :green
    end

    desc 'list', 'Show the list of available topics'
    def list
      topics_table = topic_service.topics.map do |topic|
        ['', set_color(topic.author, :blue), topic.title]
      end

      print_table topics_table
    end

    private

    def drive_service
      @drive_service ||= GoogleDriveService.new
    end

    def topic_service
      @topic_service ||= TopicService.new(drive_service)
    end

    def slack_service
      @slack_service ||= SlackService.new
    end
  end
end

Version data entries

4 entries across 4 versions & 1 rubygems

Version Path
dev_training_bot-1.0.5 lib/dev_training_bot/cli.rb
dev_training_bot-1.0.4 lib/dev_training_bot/cli.rb
dev_training_bot-1.0.3 lib/dev_training_bot/cli.rb
dev_training_bot-1.0.2 lib/dev_training_bot/cli.rb