user-configurations 0.0.1.pre
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +7 -0
- data/.gitignore +22 -0
- data/.rspec +1 -0
- data/.rubocop.yml +19 -0
- data/.rubocop_todo.yml +11 -0
- data/Gemfile +4 -0
- data/LICENSE.txt +13 -0
- data/README.md +29 -0
- data/lib/user-configurations.rb +8 -0
- data/lib/user_configurations/configuration.rb +41 -0
- data/lib/user_configurations/version.rb +3 -0
- data/spec/spec_helper.rb +7 -0
- data/spec/user_configurations/configuration_spec.rb +73 -0
- data/user-configurations.gemspec +23 -0
- metadata +75 -0
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: 8ba776a1792dfcdcf240050bf38ecd316cec095f
|
4
|
+
data.tar.gz: bef0f44caee78ca5f273ecb2153c2b6caf6c927c
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: 552f316b1056bdea49bdbb009f5c54eaf4a4ebc827436d0a9fbdeefd54be0830b915141667bc4bb3189fe1c7a60a1d2dafbd64b3edfec91ba1b30ef351ce604d
|
7
|
+
data.tar.gz: 74916acf45fa9cabdcd0d8a795aa4bf1a21a2b59834f7df95ef4273aa5dd792807087a151629591462e9098269eaba47185875ba2f7b0f43f3cb493fba38878c
|
data/.gitignore
ADDED
@@ -0,0 +1,22 @@
|
|
1
|
+
*.gem
|
2
|
+
*.rbc
|
3
|
+
.bundle
|
4
|
+
.config
|
5
|
+
.yardoc
|
6
|
+
Gemfile.lock
|
7
|
+
InstalledFiles
|
8
|
+
_yardoc
|
9
|
+
coverage
|
10
|
+
doc/
|
11
|
+
lib/bundler/man
|
12
|
+
pkg
|
13
|
+
rdoc
|
14
|
+
spec/reports
|
15
|
+
test/tmp
|
16
|
+
test/version_tmp
|
17
|
+
tmp
|
18
|
+
*.bundle
|
19
|
+
*.so
|
20
|
+
*.o
|
21
|
+
*.a
|
22
|
+
mkmf.log
|
data/.rspec
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
--color
|
data/.rubocop.yml
ADDED
@@ -0,0 +1,19 @@
|
|
1
|
+
inherit_from: .rubocop_todo.yml
|
2
|
+
|
3
|
+
Documentation:
|
4
|
+
Enabled: false
|
5
|
+
|
6
|
+
AllCops:
|
7
|
+
# Include gemspec and Rakefile
|
8
|
+
Include:
|
9
|
+
- '**/*.gemspec'
|
10
|
+
- '**/Rakefile'
|
11
|
+
Exclude:
|
12
|
+
- 'vendor/**/*'
|
13
|
+
- 'db/**/*'
|
14
|
+
- 'bin/rails'
|
15
|
+
- 'bin/spring'
|
16
|
+
- 'bin/rake'
|
17
|
+
# By default, the rails cops are not run. Override in project or home
|
18
|
+
# directory .rubocop.yml files, or by giving the -R/--rails option.
|
19
|
+
RunRailsCops: true
|
data/.rubocop_todo.yml
ADDED
@@ -0,0 +1,11 @@
|
|
1
|
+
# This configuration was generated by `rubocop --auto-gen-config`
|
2
|
+
# on 2014-05-06 13:30:11 -0300 using RuboCop version 0.21.0.
|
3
|
+
# The point is for the user to remove these configuration records
|
4
|
+
# one by one as the offenses are removed from the code base.
|
5
|
+
# Note that changes in the inspected code, or installation of new
|
6
|
+
# versions of RuboCop, may require this file to be generated again.
|
7
|
+
|
8
|
+
# Offense count: 1
|
9
|
+
# Configuration parameters: Exclude.
|
10
|
+
FileName:
|
11
|
+
Enabled: false
|
data/Gemfile
ADDED
data/LICENSE.txt
ADDED
@@ -0,0 +1,13 @@
|
|
1
|
+
DO WHAT THE FUCK YOU WANT TO PUBLIC LICENSE
|
2
|
+
Version 2, December 2004
|
3
|
+
|
4
|
+
Copyright (C) 2013 Rafael Almeida <eusou@rafaelalmeida.net>
|
5
|
+
|
6
|
+
Everyone is permitted to copy and distribute verbatim or modified
|
7
|
+
copies of this license document, and changing it is allowed as long
|
8
|
+
as the name is changed.
|
9
|
+
|
10
|
+
DO WHAT THE FUCK YOU WANT TO PUBLIC LICENSE
|
11
|
+
TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
|
12
|
+
|
13
|
+
0. You just DO WHAT THE FUCK YOU WANT TO.
|
data/README.md
ADDED
@@ -0,0 +1,29 @@
|
|
1
|
+
# User::Configurations
|
2
|
+
|
3
|
+
TODO: Write a gem description
|
4
|
+
|
5
|
+
## Installation
|
6
|
+
|
7
|
+
Add this line to your application's Gemfile:
|
8
|
+
|
9
|
+
gem 'user-configurations'
|
10
|
+
|
11
|
+
And then execute:
|
12
|
+
|
13
|
+
$ bundle
|
14
|
+
|
15
|
+
Or install it yourself as:
|
16
|
+
|
17
|
+
$ gem install user-configurations
|
18
|
+
|
19
|
+
## Usage
|
20
|
+
|
21
|
+
TODO: Write usage instructions here
|
22
|
+
|
23
|
+
## Contributing
|
24
|
+
|
25
|
+
1. Fork it ( https://github.com/stupie4ever/user-configurations/fork )
|
26
|
+
2. Create your feature branch (`git checkout -b my-new-feature`)
|
27
|
+
3. Commit your changes (`git commit -am 'Add some feature'`)
|
28
|
+
4. Push to the branch (`git push origin my-new-feature`)
|
29
|
+
5. Create a new Pull Request
|
@@ -0,0 +1,41 @@
|
|
1
|
+
module UserConfigurations
|
2
|
+
class Configuration < SimpleDelegator
|
3
|
+
attr_accessor :project_name
|
4
|
+
|
5
|
+
def initialize(project_name)
|
6
|
+
@project_name = project_name
|
7
|
+
super global.merge(user).merge(environment)
|
8
|
+
end
|
9
|
+
|
10
|
+
def store(values)
|
11
|
+
File.write user_file, YAML.dump(user.merge(values))
|
12
|
+
merge! values
|
13
|
+
end
|
14
|
+
|
15
|
+
private
|
16
|
+
|
17
|
+
def global
|
18
|
+
load global_file
|
19
|
+
end
|
20
|
+
|
21
|
+
def user
|
22
|
+
load user_file
|
23
|
+
end
|
24
|
+
|
25
|
+
def user_file
|
26
|
+
File.expand_path File.join('~', ".#{project_name}")
|
27
|
+
end
|
28
|
+
|
29
|
+
def global_file
|
30
|
+
File.join('/', 'etc', project_name)
|
31
|
+
end
|
32
|
+
|
33
|
+
def load(file)
|
34
|
+
File.file?(file) ? YAML.load_file(file) : {}
|
35
|
+
end
|
36
|
+
|
37
|
+
def environment
|
38
|
+
ENV
|
39
|
+
end
|
40
|
+
end
|
41
|
+
end
|
data/spec/spec_helper.rb
ADDED
@@ -0,0 +1,73 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
module UserConfigurations
|
4
|
+
describe Configuration do
|
5
|
+
subject(:configuration) { Configuration.new project_name }
|
6
|
+
|
7
|
+
let(:project_name) { 'some-fake-project' }
|
8
|
+
|
9
|
+
let(:register_environment) { ENV[key] = 'environment' }
|
10
|
+
let(:register_user) { register user_file, key => 'user' }
|
11
|
+
let(:register_global) { register global_file, key => 'global' }
|
12
|
+
|
13
|
+
let(:user_file) { File.expand_path(File.join('~', ".#{ project_name }")) }
|
14
|
+
let(:global_file) { File.join('/', 'etc', project_name) }
|
15
|
+
|
16
|
+
let(:key) { 'KEY' }
|
17
|
+
|
18
|
+
before do
|
19
|
+
ENV.delete key
|
20
|
+
allow(File).to receive(:file?).with(user_file).and_return(false)
|
21
|
+
allow(File).to receive(:file?).with(global_file).and_return(false)
|
22
|
+
end
|
23
|
+
|
24
|
+
it 'fetches from environment variables first' do
|
25
|
+
register_environment
|
26
|
+
register_user
|
27
|
+
register_global
|
28
|
+
expect(configuration[key]).to eq('environment')
|
29
|
+
end
|
30
|
+
|
31
|
+
it "fetches from user configuration file in `$HOME/.project' second" do
|
32
|
+
register_user
|
33
|
+
register_global
|
34
|
+
expect(configuration[key]).to eq('user')
|
35
|
+
end
|
36
|
+
|
37
|
+
it "fetches from global configuration file in `/etc/project' third" do
|
38
|
+
register_global
|
39
|
+
expect(configuration[key]).to eq('global')
|
40
|
+
end
|
41
|
+
|
42
|
+
describe '#store' do
|
43
|
+
subject(:store) { configuration.store values }
|
44
|
+
|
45
|
+
let(:values) { { other_key => other_value } }
|
46
|
+
let(:other_key) { 'OTHER_KEY' }
|
47
|
+
let(:other_value) { 'other_value' }
|
48
|
+
|
49
|
+
it "stores values in user configuration file in `$HOME/.project'" do
|
50
|
+
expect(File).to receive(:write).with(user_file, YAML.dump(values))
|
51
|
+
store
|
52
|
+
end
|
53
|
+
|
54
|
+
it 'keeps the contents of user configuration file' do
|
55
|
+
register_user
|
56
|
+
expect(File).to receive(:write)
|
57
|
+
.with(user_file, YAML.dump({ key => 'user' }.merge(values)))
|
58
|
+
store
|
59
|
+
end
|
60
|
+
|
61
|
+
it 'fetches the new stored values' do
|
62
|
+
allow(File).to receive(:write)
|
63
|
+
store
|
64
|
+
expect(configuration.fetch other_key).to eq(other_value)
|
65
|
+
end
|
66
|
+
end
|
67
|
+
|
68
|
+
def register(file, contents)
|
69
|
+
allow(File).to receive(:file?).with(file).and_return(true)
|
70
|
+
allow(YAML).to receive(:load_file).with(file).and_return(contents)
|
71
|
+
end
|
72
|
+
end
|
73
|
+
end
|
@@ -0,0 +1,23 @@
|
|
1
|
+
# coding: utf-8
|
2
|
+
lib = File.expand_path('../lib', __FILE__)
|
3
|
+
$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
4
|
+
require 'user_configurations/version'
|
5
|
+
|
6
|
+
Gem::Specification.new do |spec|
|
7
|
+
spec.name = 'user-configurations'
|
8
|
+
spec.version = UserConfigurations::VERSION
|
9
|
+
spec.authors = ['Rafael da Silva Almeida']
|
10
|
+
spec.email = ['eusou@rafaelalmeida.net']
|
11
|
+
spec.summary = %q(Configurations for a project)
|
12
|
+
spec.description = %q(Configurations for a project, it will read from
|
13
|
+
env vars, local or global files)
|
14
|
+
spec.homepage = 'http://github.com/stupied4ever/user-configurations'
|
15
|
+
spec.license = 'wtfpl'
|
16
|
+
|
17
|
+
spec.files = `git ls-files -z`.split("\x0")
|
18
|
+
spec.executables = spec.files.grep(/^bin\//) { |f| File.basename(f) }
|
19
|
+
spec.test_files = spec.files.grep(/^(test|spec|features)\//)
|
20
|
+
spec.require_paths = ['lib']
|
21
|
+
|
22
|
+
spec.add_development_dependency 'rspec', '~> 2.0'
|
23
|
+
end
|
metadata
ADDED
@@ -0,0 +1,75 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: user-configurations
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.0.1.pre
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- Rafael da Silva Almeida
|
8
|
+
autorequire:
|
9
|
+
bindir: bin
|
10
|
+
cert_chain: []
|
11
|
+
date: 2014-05-06 00:00:00.000000000 Z
|
12
|
+
dependencies:
|
13
|
+
- !ruby/object:Gem::Dependency
|
14
|
+
name: rspec
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
16
|
+
requirements:
|
17
|
+
- - ~>
|
18
|
+
- !ruby/object:Gem::Version
|
19
|
+
version: '2.0'
|
20
|
+
type: :development
|
21
|
+
prerelease: false
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
23
|
+
requirements:
|
24
|
+
- - ~>
|
25
|
+
- !ruby/object:Gem::Version
|
26
|
+
version: '2.0'
|
27
|
+
description: |-
|
28
|
+
Configurations for a project, it will read from
|
29
|
+
env vars, local or global files
|
30
|
+
email:
|
31
|
+
- eusou@rafaelalmeida.net
|
32
|
+
executables: []
|
33
|
+
extensions: []
|
34
|
+
extra_rdoc_files: []
|
35
|
+
files:
|
36
|
+
- .gitignore
|
37
|
+
- .rspec
|
38
|
+
- .rubocop.yml
|
39
|
+
- .rubocop_todo.yml
|
40
|
+
- Gemfile
|
41
|
+
- LICENSE.txt
|
42
|
+
- README.md
|
43
|
+
- lib/user-configurations.rb
|
44
|
+
- lib/user_configurations/configuration.rb
|
45
|
+
- lib/user_configurations/version.rb
|
46
|
+
- spec/spec_helper.rb
|
47
|
+
- spec/user_configurations/configuration_spec.rb
|
48
|
+
- user-configurations.gemspec
|
49
|
+
homepage: http://github.com/stupied4ever/user-configurations
|
50
|
+
licenses:
|
51
|
+
- wtfpl
|
52
|
+
metadata: {}
|
53
|
+
post_install_message:
|
54
|
+
rdoc_options: []
|
55
|
+
require_paths:
|
56
|
+
- lib
|
57
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
58
|
+
requirements:
|
59
|
+
- - '>='
|
60
|
+
- !ruby/object:Gem::Version
|
61
|
+
version: '0'
|
62
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
63
|
+
requirements:
|
64
|
+
- - '>'
|
65
|
+
- !ruby/object:Gem::Version
|
66
|
+
version: 1.3.1
|
67
|
+
requirements: []
|
68
|
+
rubyforge_project:
|
69
|
+
rubygems_version: 2.2.2
|
70
|
+
signing_key:
|
71
|
+
specification_version: 4
|
72
|
+
summary: Configurations for a project
|
73
|
+
test_files:
|
74
|
+
- spec/spec_helper.rb
|
75
|
+
- spec/user_configurations/configuration_spec.rb
|