require_relative 'server' require 'logger' module Woyo class Runner def self.run args, out: $stdout, err: $stderr @args = args.dup @out = out @err = err $stderr = @err if @err $stdout = @out if @out code = case @args.first when 'new' then mode_new when 'server' then mode_server when 'console' then mode_console end return code if code if @args.empty? || @args.include?('-h') || @args.include?('--help') print_help return 0 end if @args.include?('-v') || @args.include?('--version') print_version return 0 end end def self.fail msg, code print_error msg return code end def self.mode_new if @args.include?('-h') || @args.include?('--help') print_help_new return 0 end mode, dir = @args.shift 2 if dir.nil? print_error 'No directory provided' return -1 end if Dir.exists? dir unless @args.include?('-f') || @args.include?('--force') print_error 'Directory already exists' return -2 end end if File.exists? dir unless @args.include?('-f') || @args.include?('--force') print_error 'File exists with same name' return -3 end end FileUtils.mkdir_p dir [ 'public', 'views', 'world' ].each do |subdir| FileUtils.cp_r File.join( __dir__, '../../', subdir ), dir end return 0 end def self.mode_server if @args.include?('-h') || @args.include?('--help') print_help_server return 0 end Woyo::Server.run! return 0 end def self.mode_console if @args.include?('-h') || @args.include?('--help') print_help_console return 0 end end def self.print_help @err.puts "Usage: woyo ..." @err.puts @err.puts "............." @err.puts "............." @err.puts "............." end def self.print_help_new @err.puts "Usage: woyo new ..." @err.puts @err.puts "............." @err.puts "............." @err.puts "............." end def self.print_help_server @err.puts "Usage: woyo server ..." @err.puts @err.puts "............." @err.puts "............." @err.puts "............." end def self.print_help_console @err.puts "Usage: woyo console ..." @err.puts @err.puts "............." @err.puts "............." @err.puts "............." end def self.print_error msg @err.puts "Error: #{msg}" end def self.print_version @err.puts "woyo server version #{Woyo::SERVER_VERSION}" @err.puts "woyo world version #{Woyo::WORLD_VERSION}" end end end