frecon 1.2.0 → 1.3.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 32a4ee26258a1b975894a81d75809b24b43a9aa9
4
- data.tar.gz: 8f9606273f1db4c0dbf21530eed797f938ba1016
3
+ metadata.gz: 0c15dc8d788fbf1dad75cfa15fd8b55d65001061
4
+ data.tar.gz: f4990a2a88b29a723cb4ea4a004df2e88ab212ef
5
5
  SHA512:
6
- metadata.gz: a4eebfa9d7e7ae1e7de4d98dbd8ebe9f7f2a9fadda4dbccb17f69053aba542c1070fc24364b949e8e36a2205b014173c89da31ecc61d36de68246f5b88049b15
7
- data.tar.gz: 2a3a2cce693fe7d486957c8478314679f5f6ab00908fabdc56167c223975310e778cecd2024af165f5212e3eb260f6dde287eb93a0636d7645b8efbe55fb5c9f
6
+ metadata.gz: b38dbdbab7c04883d046ba31318f83b8bf29d3e963e5b91b13bd6bba64570f54cfe3709c93b74e360df89d8075eba44d429d660fcb784b5e36bc314a91466769
7
+ data.tar.gz: 288a1aee3ac64c651f629d56c363a35f46b09390b5d0fbeaee5a9848f9c45ef94329923b79f87b1c14bbf1521fac9265805ea0f9e45c1ec107822e56e1d2d862
data/bin/frecon CHANGED
@@ -19,11 +19,9 @@ require "optparse"
19
19
 
20
20
  options = {
21
21
  mode: :server,
22
- configuration: {}
22
+ environment: FReCon::ENVIRONMENT
23
23
  }
24
24
 
25
- defaults = FReCon::ConfigurationFile.default.read
26
-
27
25
  optparse = OptionParser.new do |opts|
28
26
  opts.banner = <<EOF
29
27
  Usage: #{$0} [OPTIONS] [MODE]
@@ -36,44 +34,21 @@ EOF
36
34
  opts.separator ""
37
35
  opts.separator "Server OPTIONS:"
38
36
 
39
- opts.on("-o", "--host HOST", "Bind to HOST (default: #{defaults["frecon"]["server"]["host"]})") do |host|
40
- options[:configuration] ||= {}
41
- options[:configuration]["frecon"] ||= {}
42
- options[:configuration]["frecon"]["server"] ||= {}
43
- options[:configuration]["frecon"]["server"]["host"] = host
37
+ opts.on("-o", "--host HOST", "Bind to HOST (default: #{options[:environment].server["host"]})") do |host|
38
+ options[:environment].server["host"] = host
44
39
  end
45
40
 
46
- opts.on("-p", "--port PORT", "Bind to port PORT (default: #{defaults["frecon"]["server"]["port"]})") do |port|
47
- options[:configuration] ||= {}
48
- options[:configuration]["frecon"] ||= {}
49
- options[:configuration]["frecon"]["server"] ||= {}
50
- options[:configuration]["frecon"]["server"]["port"] = port
41
+ opts.on("-p", "--port PORT", "Bind to port PORT (default: #{options[:environment].server["port"]})") do |port|
42
+ options[:environment].server["port"] = port
51
43
  end
52
44
 
53
45
  opts.separator ""
54
46
  opts.separator "General OPTIONS:"
55
47
 
56
- server_environment = defaults["frecon"]["server"]["environment"]
57
- console_environment = defaults["frecon"]["console"]["environment"]
58
- default_environment_string = server_environment == console_environment ? server_environment : "server: #{server_environment}, console: #{console_environment}"
59
-
60
- opts.on("-E", "--env ENVIRONMENT", "Run in the ENVIRONMENT environment (default: #{default_environment_string})") do |environment|
61
- options[:configuration] ||= {}
62
- options[:configuration]["frecon"] ||= {}
63
- options[:configuration]["frecon"]["server"] ||= {}
64
- options[:configuration]["frecon"]["server"]["environment"] = environment
65
- options[:configuration]["frecon"]["console"] ||= {}
66
- options[:configuration]["frecon"]["console"]["environment"] = environment
48
+ opts.on("-E", "--env ENVIRONMENT", "Run in the ENVIRONMENT environment (default: #{options[:environment].variable})") do |environment|
49
+ options[:environment].variable = environment.to_sym
67
50
  end
68
51
 
69
- # opts.on("-v", "--verbose", "Run more verbosely.") do
70
- # options[:output_level] = :verbose
71
- # end
72
-
73
- # opts.on("-d", "--debug", "Print debugging messages.") do
74
- # options[:output_level] = :debug
75
- # end
76
-
77
52
  opts.on("-h", "--help", "Print this usage message.") do
78
53
  puts opts
79
54
  exit
@@ -89,11 +64,9 @@ ARGV.select do |arg|
89
64
  end
90
65
  end
91
66
 
92
- configuration = FReCon::Configuration.construct!(argument_configuration: options[:configuration])
93
-
94
67
  case options[:mode]
95
68
  when :server
96
- FReCon::Server.start(configuration: configuration)
69
+ FReCon::Server.start
97
70
  when :console
98
- FReCon::Console.start(configuration: configuration)
71
+ FReCon::Console.start
99
72
  end
data/config/default.yml CHANGED
@@ -1,32 +1,29 @@
1
- frecon:
2
- server:
3
- host: "localhost"
4
- port: 4567
5
- environment: "development"
1
+ server:
2
+ host: "localhost"
3
+ port: 5080
6
4
 
7
- console:
8
- environment: "development"
5
+ console:
9
6
 
10
- database:
11
- mongoid:
12
- development:
13
- sessions:
14
- default:
15
- database: frecon
16
- hosts:
17
- - localhost:27017
7
+ database:
8
+ mongoid:
9
+ development:
10
+ sessions:
11
+ default:
12
+ database: "frecon"
13
+ hosts:
14
+ - "localhost:27017"
18
15
 
19
- options:
20
- use_utc: true
21
- raise_not_found_error: false
16
+ options:
17
+ use_utc: true
18
+ raise_not_found_error: false
22
19
 
23
- production:
24
- sessions:
25
- default:
26
- database: frecon
27
- hosts:
28
- - localhost:27017
20
+ production:
21
+ sessions:
22
+ default:
23
+ database: "frecon"
24
+ hosts:
25
+ - "localhost:27017"
29
26
 
30
- options:
31
- use_utc: true
32
- raise_not_found_error: false
27
+ options:
28
+ use_utc: true
29
+ raise_not_found_error: false
@@ -9,9 +9,11 @@
9
9
 
10
10
  # Public: An extension for the BSON module.
11
11
  module BSON
12
+
12
13
  # Public: A monkey-patch for the BSON::ObjectId class which introduces an
13
14
  # #as_json method.
14
15
  class ObjectId
16
+
15
17
  # Public: Get produce a JSON representation of this ObjectId.
16
18
  #
17
19
  # Since we don't want to produce a JSON Object for every ID, this method
@@ -21,5 +23,7 @@ module BSON
21
23
  def as_json(*args)
22
24
  to_s
23
25
  end
26
+
24
27
  end
28
+
25
29
  end
@@ -0,0 +1,173 @@
1
+ require "yaml"
2
+
3
+ module FReCon
4
+
5
+ # Public: A class to represent the operational constraints for the FReCon
6
+ # instance.
7
+ class Environment
8
+
9
+ # Public: The configuration Hash for the server-related configuration.
10
+ #
11
+ # Keys will typically include "port", "host", etc.
12
+ attr_accessor :server
13
+
14
+ # Public: The configuration Hash for the console-related configuration.
15
+ attr_accessor :console
16
+
17
+ # Public: The configuration Hash for the database-related configuration.
18
+ #
19
+ # Keys will typically include "mongoid", which should be a Hash
20
+ # representation of a valid mongoid.yml file.
21
+ attr_accessor :database
22
+
23
+ # Public: Get the configuration variable.
24
+ #
25
+ # Returns the value of @variable.
26
+ attr_reader :variable
27
+
28
+ # Public: Validate, then set the configuration variable.
29
+ def variable=(symbol)
30
+ @variable = symbol if validate_symbol(symbol)
31
+ end
32
+
33
+ # Public: Initialize an Environment.
34
+ def initialize(symbol, server: {}, console: {}, database: {})
35
+ @variable = symbol if validate_symbol(symbol)
36
+
37
+ read_configurations
38
+
39
+ @server = @server.merge(server)
40
+ @console = @console.merge(console)
41
+ @database = @database.merge(database)
42
+
43
+ @server = @server.merge(server_defaults)
44
+ @console = @console.merge(console_defaults)
45
+ @database = @database.merge(database_defaults)
46
+ end
47
+
48
+ # Public: Read the various configurations on a system.
49
+ #
50
+ # Reads, then merges, the configurations present on a system. Then, splices
51
+ # out the server, console, and database configurations and assigns them.
52
+ #
53
+ # If a configuration cannot be found, a value of {} is used for the merging,
54
+ # and it is considered to be simply noneffectual. Defaults should always be
55
+ # specified in the default configuration file.
56
+ #
57
+ # Returns the merged configuration.
58
+ def read_configurations
59
+ # Read the configurations
60
+ default = default_configuration
61
+ system = system_configuration
62
+ user = user_configuration
63
+
64
+ # Create a configuration, initialize it to the default configuration.
65
+ #
66
+ # Then, merge with the system configuration, then the user configuration.
67
+ configuration = default || {}
68
+ configuration.merge(system || {})
69
+ configuration.merge(user || {})
70
+
71
+ # Grab out the "server", "console", and "database" values from the
72
+ # configuration and store those in the appropriate instance variables.
73
+ @server = configuration["server"] || {}
74
+ @console = configuration["console"] || {}
75
+ @database = configuration["database"] || {}
76
+
77
+ configuration
78
+ end
79
+
80
+ # Public: Read a configuration from a given filename.
81
+ #
82
+ # Uses YAML to parse the given filename.
83
+ #
84
+ # filename - String containing the path to a file.
85
+ #
86
+ # Returns a Hash containing the parsed data from the given file.
87
+ def read_configuration(filename)
88
+ YAML.load_file(filename) if (filename &&
89
+ File.exist?(filename) &&
90
+ File.readable?(filename))
91
+ end
92
+
93
+
94
+ # Public: Read and parse the defaults configuration file.
95
+ def default_configuration
96
+ read_configuration(default_configuration_filename)
97
+ end
98
+
99
+ # Public: Read and parse the system configuration file.
100
+ def system_configuration
101
+ read_configuration(system_configuration_filename)
102
+ end
103
+
104
+ # Public: Read and parse the user configuration file.
105
+ def user_configuration
106
+ read_configuration(user_configuration_filename)
107
+ end
108
+
109
+ protected
110
+
111
+ # Public: Generate the filename for the defaults configuration file.
112
+ def default_configuration_filename
113
+ File.expand_path(File.join(File.dirname(__FILE__), "..", "..", "..", "config", "default.yml"))
114
+ end
115
+
116
+ # Public: Generate the filename for the system configuration file.
117
+ def system_configuration_filename
118
+ directories = (ENV['XDG_CONFIG_DIRS'] || '').split(':') ||
119
+ [File.join('', 'usr', 'share'),
120
+ File.join('', 'usr', 'local', 'share')]
121
+
122
+ file = nil
123
+
124
+ directories.each do |directory|
125
+ check_file = File.join(directory, 'frecon', 'config.yml')
126
+ file = check_file if File.exist?(check_file)
127
+ end
128
+
129
+ file
130
+ end
131
+
132
+ # Public: Generate the filename for the user configuration file.
133
+ def user_configuration_filename
134
+ configuration_home = ENV['XDG_CONFIG_HOME'] || File.join(Dir.home, '.config')
135
+
136
+ if File.exist?(file = File.join(configuration_home, 'frecon.yml'))
137
+ file
138
+ end
139
+ end
140
+
141
+ # Public: Validate a value for @variable.
142
+ #
143
+ # Checks the value for @variable against a list of valid environments.
144
+ def validate_symbol(symbol)
145
+ raise ArgumentError, "Environment variable is not one of #{self.valid_environments}" unless
146
+ valid_environments.include?(symbol)
147
+
148
+ true
149
+ end
150
+
151
+ # Public: Produce a list of valid environments.
152
+ def valid_environments
153
+ [:development, :production, :test]
154
+ end
155
+
156
+ # Public: Return a Hash representing the default server settings.
157
+ def server_defaults
158
+ {"host" => "localhost", "port" => 4567}
159
+ end
160
+
161
+ # Public: Return a Hash representing the default console settings.
162
+ def console_defaults
163
+ {}
164
+ end
165
+
166
+ # Public: Return a Hash representing the default database settings.
167
+ def database_defaults
168
+ {}
169
+ end
170
+
171
+ end
172
+
173
+ end
@@ -7,24 +7,13 @@
7
7
  # license with this program. If not, please see
8
8
  # <http://opensource.org/licenses/MIT>.
9
9
 
10
+ require "frecon/base/environment"
11
+
10
12
  # Public: The FReCon API module.
11
13
  module FReCon
12
14
  # Public: A String representing the current version of FReCon.
13
- VERSION = "1.2.0"
14
-
15
- @environment_variable = :development
16
-
17
- # Public: Returns the current environment.
18
- def self.environment
19
- @environment_variable
20
- end
15
+ VERSION = "1.3.0"
21
16
 
22
- # Public: Sets the environment.
23
- #
24
- # arg - The new environment.
25
- #
26
- # Returns the result from setting the current environment.
27
- def self.environment=(arg)
28
- @environment_variable = arg
29
- end
17
+ # Public: An Environment representing the system execution environment.
18
+ ENVIRONMENT = Environment.new(:development)
30
19
  end
data/lib/frecon/base.rb CHANGED
@@ -9,4 +9,5 @@
9
9
 
10
10
  require "frecon/base/bson"
11
11
  require "frecon/base/object"
12
+ require "frecon/base/environment"
12
13
  require "frecon/base/variables"
@@ -8,7 +8,6 @@
8
8
  # <http://opensource.org/licenses/MIT>.
9
9
 
10
10
  require "frecon/base/variables"
11
- require "frecon/configuration"
12
11
  require "frecon/database"
13
12
  require "frecon/server"
14
13
 
@@ -17,13 +16,9 @@ module FReCon
17
16
  class Console
18
17
  # Public: Starts the FReCon console.
19
18
  #
20
- # :configuration - The Configuration to use when starting the console.
21
- #
22
19
  # Returns the result of running pry on FReCon.
23
- def self.start(configuration: Configuration.construct!)
24
- environment = configuration["frecon"]["console"]["environment"]
25
- mongoid = configuration["frecon"]["database"]["mongoid"]
26
- Database.setup(environment, mongoid)
20
+ def self.start
21
+ Database.setup!
27
22
 
28
23
  require "pry"
29
24
 
@@ -9,6 +9,8 @@
9
9
 
10
10
  require "logger"
11
11
 
12
+ require "frecon/base/variables"
13
+
12
14
  require "mongoid"
13
15
  require "frecon/mongoid/criteria"
14
16
 
@@ -21,25 +23,10 @@ module FReCon
21
23
  # Public: A system to set up the database.
22
24
  class Database
23
25
  # Public: Set up the database.
24
- #
25
- # environment - Symbol containing environment to start the database in.
26
- # mongoid - Hash containing the configuration for Mongoid. If not
27
- # present, the lib/frecon/mongoid.yml file is given to
28
- # Mongoid.load!. If present, the Hash is dumped to a
29
- # tempfile which is given to Mongoid.load!.
30
- def self.setup(environment = FReCon.environment, mongoid = nil)
31
- if mongoid.is_a?(Hash)
32
- mongoid_tempfile = Tempfile.new("FReCon")
33
-
34
- mongoid_tempfile.write(mongoid.to_h.to_yaml)
35
- mongoid_tempfile.rewind
36
-
37
- Mongoid.load!(mongoid_tempfile.path, environment)
38
- else
39
- Mongoid.load!(File.join(File.dirname(__FILE__), "mongoid.yml"), environment)
40
- end
26
+ def self.setup!
27
+ Mongoid.load!(File.join(File.dirname(__FILE__), "mongoid.yml"), FReCon::ENVIRONMENT.variable)
41
28
 
42
- if environment == :development
29
+ if FReCon::ENVIRONMENT.console["level"]
43
30
  Mongoid.logger.level = Logger::DEBUG
44
31
  Mongoid.logger = Logger.new($stdout)
45
32
 
data/lib/frecon/server.rb CHANGED
@@ -10,7 +10,6 @@
10
10
  require "sinatra/base"
11
11
 
12
12
  require "frecon/base/variables"
13
- require "frecon/configuration"
14
13
  require "frecon/database"
15
14
  require "frecon/routes"
16
15
  require "frecon/controllers"
@@ -26,45 +25,32 @@ module FReCon
26
25
 
27
26
  # Public: Start the Server.
28
27
  #
29
- # keyword_arguments - The Hash of arguments to use.
30
- # :configuration - The Configuration to use when
31
- # setting up the server.
32
- #
33
28
  # Returns the result of starting the server.
34
- def self.start(**keyword_arguments)
35
- run!(**keyword_arguments)
29
+ def self.start(*arguments)
30
+ run!(*arguments)
36
31
  end
37
32
 
38
33
  protected
39
34
 
40
35
  # Internal: Set up the server.
41
36
  #
42
- # Sets the various Thin and Sinatra options, and sets up the database.
43
- #
44
- # :configuration - The Configuration to use when starting the server.
37
+ # Sets various Thin and Sinatra options, and sets up the database.
45
38
  #
46
39
  # Returns the result of setting up the database.
47
- def self.setup!(configuration: Configuration.construct!)
40
+ def self.setup!
48
41
  # Set the Thin and Sinatra options.
49
42
  set :server, %w[thin HTTP webrick]
50
- set :bind, configuration["frecon"]["server"]["host"]
51
- set :port, configuration["frecon"]["server"]["port"]
52
- set :environment, configuration["frecon"]["server"]["environment"]
53
-
54
- # Grab out the mongoid configuration.
55
- mongoid = configuration["frecon"]["database"]["mongoid"]
43
+ set :bind, FReCon::ENVIRONMENT.server["host"]
44
+ set :port, FReCon::ENVIRONMENT.server["port"]
45
+ set :environment, FReCon::ENVIRONMENT.variable.to_s
56
46
 
57
47
  # Set up the database.
58
- Database.setup(environment, mongoid)
48
+ Database.setup!
59
49
  end
60
50
 
61
51
  # Internal: Set up the server and start it.
62
- #
63
- # keyword_arguments - The Hash of arguments to use.
64
- # :configuration - The Configuration to use when
65
- # setting up the server.
66
- def self.run!(**keyword_arguments)
67
- setup!(**keyword_arguments)
52
+ def self.run!(*arguments)
53
+ setup!(*arguments)
68
54
 
69
55
  super
70
56
  end
data/lib/frecon.rb CHANGED
@@ -18,8 +18,6 @@ require "frecon/models"
18
18
  require "frecon/scraper"
19
19
  require "frecon/scrapers"
20
20
 
21
- require "frecon/configuration"
22
- require "frecon/configuration_file"
23
21
  require "frecon/match_number"
24
22
  require "frecon/position"
25
23
  require "frecon/request_error"
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: frecon
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.2.0
4
+ version: 1.3.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Sam Craig
@@ -13,7 +13,7 @@ authors:
13
13
  autorequire:
14
14
  bindir: bin
15
15
  cert_chain: []
16
- date: 2015-10-12 00:00:00.000000000 Z
16
+ date: 2015-10-29 00:00:00.000000000 Z
17
17
  dependencies:
18
18
  - !ruby/object:Gem::Dependency
19
19
  name: sinatra
@@ -184,10 +184,9 @@ files:
184
184
  - lib/frecon.rb
185
185
  - lib/frecon/base.rb
186
186
  - lib/frecon/base/bson.rb
187
+ - lib/frecon/base/environment.rb
187
188
  - lib/frecon/base/object.rb
188
189
  - lib/frecon/base/variables.rb
189
- - lib/frecon/configuration.rb
190
- - lib/frecon/configuration_file.rb
191
190
  - lib/frecon/console.rb
192
191
  - lib/frecon/controller.rb
193
192
  - lib/frecon/controllers.rb
@@ -1,91 +0,0 @@
1
- # lib/frecon/configuration.rb
2
- #
3
- # Copyright (C) 2015 Christopher Cooper, Sam Craig, Tiger Huang, Vincent Mai, Sam Mercier, and Kristofer Rye
4
- #
5
- # This file is part of FReCon, an API for scouting at FRC Competitions, which is
6
- # licensed under the MIT license. You should have received a copy of the MIT
7
- # license with this program. If not, please see
8
- # <http://opensource.org/licenses/MIT>.
9
-
10
- require "frecon/configuration_file"
11
-
12
- module FReCon
13
- # Public: A wrapper to allow the manipulation of configurations.
14
- class Configuration < Hash
15
- # Public: Initialize a Configuration.
16
- #
17
- # data - a Hash representing the data.
18
- def initialize(data)
19
- data.each do |key, value|
20
- self[key] = value
21
- end
22
- end
23
-
24
- # Public: Convert self to a Hash.
25
- #
26
- # Recursively converts instances of Configuration within self
27
- # to hashes by calling this method.
28
- #
29
- # Returns a Hash representing self.
30
- def to_h
31
- hash = {}
32
-
33
- self.each do |key, value|
34
- case value
35
- when Configuration
36
- hash[key] = value.to_h
37
- else
38
- hash[key] = value
39
- end
40
- end
41
-
42
- hash
43
- end
44
-
45
- # Public: Merge with another Configuration.
46
- #
47
- # Sets all key-value pairs within Configuration to the same within self.
48
- #
49
- # other - A Configuration or Hash to be merged with.
50
- def merge(other)
51
- case other
52
- when Configuration, Hash
53
- other.each do |key, value|
54
- case value
55
- when Configuration, Hash
56
- me = Configuration.new(self[key] || {})
57
- me.merge(Configuration.new(value))
58
- self[key] = me
59
- else
60
- self[key] = value
61
- end
62
- end
63
- when nil
64
- end
65
- end
66
-
67
- # Public: Constructs a configuration.
68
- #
69
- # options - A Hash containing various configurations.
70
- # :default_configuration - The default configuration's values
71
- # :system_configuration - The system's configuration's values
72
- # :user_configuration - The user's configuration's values
73
- # :argument_configuration - The configuration values from command-line arguments
74
- #
75
- # Returns a Configuration generated by merging all of the given
76
- # configurations together.
77
- def self.construct!(default_configuration: ConfigurationFile.default.read,
78
- system_configuration: ConfigurationFile.system.read,
79
- user_configuration: ConfigurationFile.user.read,
80
- argument_configuration: nil)
81
- configuration_hierarchy = [default_configuration, system_configuration, user_configuration, argument_configuration]
82
-
83
- configuration = Configuration.new({})
84
- configuration_hierarchy.each do |other_configuration|
85
- configuration.merge(other_configuration)
86
- end
87
-
88
- configuration
89
- end
90
- end
91
- end
@@ -1,68 +0,0 @@
1
- # lib/frecon/configuration_file.rb
2
- #
3
- # Copyright (C) 2015 Christopher Cooper, Sam Craig, Tiger Huang, Vincent Mai, Sam Mercier, and Kristofer Rye
4
- #
5
- # This file is part of FReCon, an API for scouting at FRC Competitions, which is
6
- # licensed under the MIT license. You should have received a copy of the MIT
7
- # license with this program. If not, please see
8
- # <http://opensource.org/licenses/MIT>.
9
-
10
- require "yaml"
11
- require "frecon/configuration"
12
-
13
- module FReCon
14
- # Public: A class to handle configuration files.
15
- class ConfigurationFile
16
- # Public: The filename for the file.
17
- attr_accessor :filename
18
-
19
- # Public: Initialize a ConfigurationFile.
20
- #
21
- # filename - The name of the file.
22
- def initialize(filename)
23
- @filename = filename
24
- end
25
-
26
- # Public: Read from the file and generate a Configuration
27
- # from the YAML data therein.
28
- #
29
- # Returns a Configuration representing the file's data or nil if it didn't
30
- # exist.
31
- def read
32
- begin
33
- data = open(@filename, "rb") do |io|
34
- io.read
35
- end
36
-
37
- Configuration.new(YAML.load(data))
38
- rescue Errno::ENOENT
39
- nil
40
- end
41
- end
42
-
43
- # Public: Create a new ConfigurationFile corresponding to the default
44
- # defaults configuration location.
45
- def self.default
46
- self.new(File.expand_path(File.join(File.dirname(__FILE__), "..", "..", "config", "default.yml")))
47
- end
48
-
49
- # Public: Create a new ConfigurationFile corresponding to the default
50
- # system configuration location.
51
- def self.system
52
- self.new(File.join("", "etc", "frecon", "config.yml"))
53
- end
54
-
55
- # Public: Create a new ConfigurationFile corresponding to the default
56
- # user configuration location.
57
- def self.user
58
- self.new(File.join(config_directory, "frecon.yml"))
59
- end
60
-
61
- protected
62
-
63
- # Public: Returns the User's config home directory.
64
- def self.config_directory
65
- ENV['XDG_CONFIG_HOME'] || File.join(Dir.home, '.config')
66
- end
67
- end
68
- end