tamashii-io/tamashii-manager

View on GitHub
exe/tamashii-manager

Summary

Maintainability
Test Coverage
#!/usr/bin/env ruby

require 'rack'
require 'optparse'
require 'tamashii/manager'

options = {
  Port: ENV['PORT'] || 3000,
  Host: '0.0.0.0',
  AccessLog: []
}

OptionParser.new do |opts|
  opts.on('-v', '--version', 'Display Tamashii::Manager version') do
    puts "Tamashii::Manager #{Tamashii::Manager::VERSION}"
    exit
  end

  opts.on('-h', '--help') do
    puts opts
    exit
  end

  # rubocop:disable Metrics/LineLength
  opts.separator ''
  opts.on('-s', '--server SERVER', 'Run Tamashii::Manager server') { |name| handlers.unshift(name.to_s) }
  opts.on('-o', '--host HOST', 'The listen on HOST (default: 0.0.0.0)') { |host| options[:Host] = host.to_s }
  opts.on('-p', '--port PORT', 'The listen on PORT (default: 3000)') { |port| options[:Port] = port.to_i }
  opts.on('-C', '--config FILE', 'The external configuration file') do |config|
    if File.exist? config
      require config
      options[:Port] = Tamashii::Manager::Config.port
    end
  end
  # rubocop:enable Metrics/LineLength

  opts.parse! ARGV
end

begin
  config = Tamashii::Manager::Config
  case config.auth_type
  when :token
    # rubocop:disable Metrics/LineLength
    raise LoadError, 'Token authorization require to set token' if config.token.nil?
    # rubocop:enable Metrics/LineLength
  end

  Rack::Handler.default.run Tamashii::Manager.server, options
rescue LoadError => e
  # TODO: Improve error message
  STDERR.puts e
end