Commit 37f5791

mokha <mokha@cisco.com>
2018-05-09 02:00:25
load .delrc as yaml rather than using dotenv.
1 parent a5cad86
lib/del/cli.rb
@@ -1,18 +1,17 @@
 require "del"
 require "pathname"
 require "thor"
-require 'yaml'
 
 module Del
   class CLI < Thor
     DEFAULT_RC=Pathname.new(Dir.home).join(".delrc")
-    class_option :dotenv_file, default: ENV.fetch("DELRC", DEFAULT_RC)
+    class_option :configuration_file, default: ENV.fetch("DELRC", DEFAULT_RC)
     class_option :socket_file, default: Del::Configuration::SOCKET_FILE
 
     desc "server <routes.rb>", "start server"
     def server(startup_file = nil)
       Del.start(
-        dotenv_file: options[:dotenv_file],
+        configuration_file: options[:configuration_file],
         socket_file: options[:socket_file],
         startup_file: startup_file,
       )
@@ -34,18 +33,18 @@ module Del
 
     desc "setup", "setup your $HOME/.delrc"
     def setup
-      configuration = {}
-      configuration[:host] = ask("Where is your xmpp server? (E.g. 'chat.hipchat.com')")
-      configuration[:jid] = ask("What is your jabber Id?")
-      configuration[:muc_domain] = ask("What is your MUC domain? (E.g. 'conf.hipchat.com')")
-      configuration[:full_name] = ask("What is your name?")
-      configuration[:password] = ask("What is your password?", echo: false)
+      settings = {}
+      settings[:host] = ask("Where is your xmpp server? (E.g. 'chat.hipchat.com')")
+      settings[:jid] = ask("What is your jabber Id?")
+      settings[:muc_domain] = ask("What is your MUC domain? (E.g. 'conf.hipchat.com')")
+      settings[:full_name] = ask("What is your name?")
+      settings[:password] = ask("What is your password?", echo: false)
 
       say ""
-      say "Writing your configuration to: #{DEFAULT_RC}", :green
-      yaml = YAML.dump(configuration)
-      IO.write(DEFAULT_RC, yaml)
-      File.chmod(0600, DEFAULT_RC)
+      say "Writing your configuration to: #{options[:configuration_file]}", :green
+      yaml = YAML.dump(settings)
+      IO.write(options[:configuration_file], yaml)
+      File.chmod(0600, options[:configuration_file])
     end
 
     desc "version", "Print the version of this gem"
lib/del/configuration.rb
@@ -14,15 +14,15 @@ module Del
     attr_accessor :users
     attr_accessor :socket_file
 
-    def initialize
-      @default_rooms = ENV.fetch("DEL_ROOMS", '').split(',')
-      @host = ENV.fetch("DEL_HOST", 'chat.hipchat.com')
-      @jid = ENV.fetch("DEL_JID")
+    def initialize(settings = {})
+      @default_rooms = settings[:rooms]
+      @host = settings.fetch(:host, 'chat.hipchat.com')
+      @jid = settings.fetch(:jid)
       @logger = Logger.new(STDOUT)
-      @logger.level = ENV.fetch('LOG_LEVEL', Logger::INFO).to_i
-      @muc_domain = ENV.fetch("DEL_MUC_DOMAIN", "conf.hipchat.com")
-      @name = ENV.fetch("DEL_FULL_NAME")
-      @password = ENV.fetch("DEL_PASSWORD")
+      @logger.level = settings.fetch(:log_level, Logger::INFO).to_i
+      @muc_domain = settings.fetch(:muc_domain, "conf.hipchat.com")
+      @name = settings.fetch(:full_name)
+      @password = settings.fetch(:password)
       @rooms = Repository.new
       @router = DefaultRouter.new
       @socket_file = SOCKET_FILE
lib/del.rb
@@ -1,4 +1,3 @@
-require "dotenv"
 require "json"
 require "logger"
 require "socket"
@@ -6,6 +5,7 @@ require "xmpp4r"
 require "xmpp4r/muc/helper/mucbrowser"
 require "xmpp4r/muc/helper/simplemucclient"
 require "xmpp4r/roster/helper/roster"
+require "yaml"
 
 require "del/configuration"
 require "del/connection"
@@ -20,9 +20,9 @@ require "del/user"
 require "del/version"
 
 module Del
-  def self.start(dotenv_file:, startup_file: nil, start_server: true, socket_file: nil)
-    puts "Loading... #{dotenv_file}"
-    Dotenv.load(dotenv_file.to_s)
+  def self.start(configuration_file:, startup_file: nil, start_server: true, socket_file: nil)
+    puts "Loading... #{configuration_file}"
+    @configuration ||= Configuration.new(YAML.load(IO.read(configuration_file)))
     Del.configure do |config|
       config.socket_file = socket_file if socket_file
       config.router.register(/.*/) do |message|
@@ -39,7 +39,7 @@ module Del
   end
 
   def self.configuration
-    @configuration ||= Configuration.new
+    @configuration ||= Configuration.new({})
   end
 
   def self.logger
del.gemspec
@@ -21,7 +21,6 @@ Gem::Specification.new do |spec|
   spec.executables   = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
   spec.require_paths = ["lib"]
 
-  spec.add_dependency "dotenv", "~> 2.4"
   spec.add_dependency "xmpp4r", "~> 0.5"
   spec.add_dependency "thor", "~> 0.20"
   spec.add_development_dependency "bundler", "~> 1.16"