settings.cr 1.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071
  1. require 'singleton'
  2. require 'optparse'
  3. VERSION = '0.1.0'
  4. module Woe
  5. class Settings
  6. include Singleton
  7. attr_reader :data_dir
  8. attr_reader :port
  9. def initialize
  10. @data_dir = 'data'
  11. @port = 7000
  12. end
  13. def var_dir
  14. File.join(@data_dir, 'var')
  15. end
  16. def script_dir
  17. File.join(@data_dir, 'script')
  18. end
  19. def parse_args
  20. oparser = OptionParser.new do |opt|
  21. opt.banner = "Usage woe [options]"
  22. opt.on('-p', '--port [PORT]', "Port at which the WOE server should listen.") do | port |
  23. @port = port.to_i
  24. end
  25. opt.on('-d', '--data [DIR]', "Directory where the data and scripts of the server are installed.") do | dir |
  26. @data_dir = dir
  27. end
  28. opt.on('-h', '--help', "Show this message.") do
  29. puts opt
  30. exit
  31. end
  32. opt.on('-v', '--version', "Show the version of WOE.") do
  33. puts VERSION
  34. exit
  35. end
  36. end
  37. oparser.parse!
  38. end
  39. def self.parse_args
  40. self.instance.parse_args
  41. end
  42. def self.port
  43. self.instance.port
  44. end
  45. def self.data_dir
  46. self.instance.data_dir
  47. end
  48. def self.var_dir
  49. self.instance.var_dir
  50. end
  51. def self.script_dir
  52. self.instance.script_dir
  53. end
  54. end # class
  55. end # module Woe