user_config 0.0.2 → 0.0.3

Sign up to get free protection for your applications and to get access to all the features.
data/.gitignore ADDED
@@ -0,0 +1,9 @@
1
+ *.gem
2
+ .bundle
3
+ Gemfile.lock
4
+ pkg/*
5
+ doc
6
+ .yardoc
7
+ *~
8
+ \#*
9
+ .\#*
data/Gemfile CHANGED
@@ -1,14 +1,4 @@
1
1
  source "http://rubygems.org"
2
- # Add dependencies required to use your gem here.
3
- # Example:
4
- # gem "activesupport", ">= 2.3.5"
5
2
 
6
- # Add dependencies to develop your gem here.
7
- # Include everything needed to run rake, tests, features, etc.
8
- group :development do
9
- gem "rspec", ">= 2.6.0"
10
- gem "yard", ">= 0.7.2"
11
- gem "bundler", ">= 1.0.0"
12
- gem "jeweler", ">= 1.6.2"
13
- gem "rcov", ">= 0"
14
- end
3
+ # Specify your gem's dependencies in user_config.gemspec
4
+ gemspec
data/Rakefile CHANGED
@@ -1,29 +1,4 @@
1
- # encoding: utf-8
2
-
3
- require 'rubygems'
4
- require 'bundler'
5
- begin
6
- Bundler.setup(:default, :development)
7
- rescue Bundler::BundlerError => e
8
- $stderr.puts e.message
9
- $stderr.puts "Run `bundle install` to install missing gems"
10
- exit e.status_code
11
- end
12
- require 'rake'
13
-
14
- require 'jeweler'
15
- Jeweler::Tasks.new do |gem|
16
- # gem is a Gem::Specification... see http://docs.rubygems.org/read/chapter/20 for more options
17
- gem.name = "user_config"
18
- gem.homepage = "http://github.com/ytaka/user_config"
19
- gem.license = "GPLv3"
20
- gem.summary = "Management of configuration files in a user's home directory"
21
- gem.description = "The library creates, saves, and loads configuration files, which are in a user's home directory or a specified directory."
22
- gem.email = "d@ytak.info"
23
- gem.authors = ["Takayuki YAMAGUCHI"]
24
- # dependencies defined in Gemfile
25
- end
26
- Jeweler::RubygemsDotOrgTasks.new
1
+ require "bundler/gem_tasks"
27
2
 
28
3
  require 'rspec/core'
29
4
  require 'rspec/core/rake_task'
@@ -31,12 +6,5 @@ RSpec::Core::RakeTask.new(:spec) do |spec|
31
6
  spec.pattern = FileList['spec/**/*_spec.rb']
32
7
  end
33
8
 
34
- RSpec::Core::RakeTask.new(:rcov) do |spec|
35
- spec.pattern = 'spec/**/*_spec.rb'
36
- spec.rcov = true
37
- end
38
-
39
- task :default => :spec
40
-
41
9
  require 'yard'
42
10
  YARD::Rake::YardocTask.new
@@ -0,0 +1,3 @@
1
+ class UserConfig
2
+ VERSION = "0.0.3"
3
+ end
data/lib/user_config.rb CHANGED
@@ -1,6 +1,7 @@
1
1
  require 'fileutils'
2
2
  require 'yaml'
3
3
  require 'pathname'
4
+ require 'user_config/version'
4
5
 
5
6
  class UserConfig
6
7
  class DirectoryExistenceError < StandardError
@@ -38,11 +39,15 @@ class UserConfig
38
39
  end
39
40
  end
40
41
 
41
- def file_path(path)
42
+ def file_path(path, create_directory = nil)
42
43
  if Pathname(path).absolute?
43
44
  raise ArgumentError, "Path '#{path}' is absolute."
44
45
  end
45
- File.join(@directory, path)
46
+ fpath = File.join(@directory, path)
47
+ if create_directory && !File.exist?((dir = File.dirname(fpath)))
48
+ FileUtils.mkdir_p(dir)
49
+ end
50
+ fpath
46
51
  end
47
52
 
48
53
  def default_value(path)
@@ -132,17 +137,15 @@ class UserConfig
132
137
 
133
138
  # Open file of +path+ with +mode+.
134
139
  def open(path, mode, &block)
135
- fpath = file_path(path)
136
- unless File.exist?((dir = File.dirname(fpath)))
137
- FileUtils.mkdir_p(dir)
138
- end
139
- f = Kernel.open(fpath, mode)
140
+ full_path = file_path(path, true)
141
+ f = Kernel.open(full_path, mode)
140
142
  if block_given?
141
143
  begin
142
144
  yield(f)
143
145
  ensure
144
146
  f.close
145
147
  end
148
+ full_path
146
149
  else
147
150
  f
148
151
  end
@@ -186,6 +189,10 @@ class UserConfig
186
189
  YAML.dump(@cache)
187
190
  end
188
191
 
192
+ def to_hash
193
+ @cache
194
+ end
195
+
189
196
  # Save cached values to the path of file.
190
197
  def save
191
198
  unless File.exist?((dir = File.dirname(path)))
@@ -203,5 +210,13 @@ class UserConfig
203
210
  def []=(key, val)
204
211
  @cache[key] = val
205
212
  end
213
+
214
+ def delete(key)
215
+ @cache.delete(key)
216
+ end
217
+
218
+ def set?(key)
219
+ @cache.has_key?(key)
220
+ end
206
221
  end
207
222
  end
@@ -37,6 +37,18 @@ describe UserConfig do
37
37
  uconf.file_path('path.yaml').should == File.join(@home, 'dir3', 'path.yaml')
38
38
  end
39
39
 
40
+ it "should create parent directory" do
41
+ uconf = UserConfig.new('dir4', :home => @home)
42
+ uconf.file_path('path/to/file.yaml', true)
43
+ File.exist?(uconf.file_path('path/to')).should be_true
44
+ end
45
+
46
+ it "should create without parent directory" do
47
+ uconf = UserConfig.new('dir5', :home => @home)
48
+ uconf.file_path('path/to/file.yaml')
49
+ File.exist?(uconf.file_path('path/to')).should be_false
50
+ end
51
+
40
52
  it "should raise error" do
41
53
  lambda do
42
54
  subject.file_path('/abc/def.yaml')
@@ -102,6 +114,23 @@ describe UserConfig do
102
114
  File.read(full_path).should match(/^third/)
103
115
  end
104
116
 
117
+ it "should check set." do
118
+ yaml_path = 'set/test.yaml'
119
+ yaml = subject[yaml_path]
120
+ lambda do
121
+ yaml['key'] = 'value'
122
+ end.should change { yaml.set?('key') }
123
+ end
124
+
125
+ it "should delete value of key." do
126
+ yaml_path = 'delete/test.yaml'
127
+ yaml = subject[yaml_path]
128
+ yaml['to_be_deleted'] = 123
129
+ lambda do
130
+ yaml.delete('to_be_deleted')
131
+ end.should change { yaml.set?('to_be_deleted') }
132
+ end
133
+
105
134
  it "should return false" do
106
135
  subject.exist?('not_exist/file.yaml').should_not be_true
107
136
  end
@@ -145,20 +174,22 @@ describe UserConfig do
145
174
 
146
175
  it "should save a raw file" do
147
176
  path ='save/raw/hello.txt'
148
- subject.open(path, 'w') do |f|
177
+ full_path = subject.open(path, 'w') do |f|
149
178
  f.puts 'hello world'
150
179
  end
151
180
  fpath = File.join(subject.directory, path)
181
+ full_path.should == fpath
152
182
  File.exist?(fpath).should be_true
153
183
  File.read(fpath).strip.should == 'hello world'
154
184
  end
155
185
 
156
186
  it "should read a file" do
157
187
  path ='save/raw/hello.txt'
158
- subject.open(path, 'w') do |f|
188
+ full_path = subject.open(path, 'w') do |f|
159
189
  f.puts 'hello world'
160
190
  end
161
191
  fpath = File.join(subject.directory, path)
192
+ full_path.should == fpath
162
193
  subject.read(path).should == File.read(fpath)
163
194
  end
164
195
 
data/user_config.gemspec CHANGED
@@ -1,64 +1,25 @@
1
- # Generated by jeweler
2
- # DO NOT EDIT THIS FILE DIRECTLY
3
- # Instead, edit Jeweler::Tasks in Rakefile, and run 'rake gemspec'
4
1
  # -*- encoding: utf-8 -*-
2
+ $:.push File.expand_path("../lib", __FILE__)
3
+ require "user_config/version"
5
4
 
6
5
  Gem::Specification.new do |s|
7
- s.name = %q{user_config}
8
- s.version = "0.0.2"
6
+ s.name = "user_config"
7
+ s.version = UserConfig::VERSION
8
+ s.authors = ["Takayuki YAMAGUCHI"]
9
+ s.email = ["d@ytak.info"]
10
+ s.homepage = ""
11
+ s.summary = "Management of configuration files in a user's home directory"
12
+ s.description = "The library creates, saves, and loads configuration files, which are in a user's home directory or a specified directory."
9
13
 
10
- s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
- s.authors = ["Takayuki YAMAGUCHI"]
12
- s.date = %q{2011-07-08}
13
- s.description = %q{The library creates, saves, and loads configuration files, which are in a user's home directory or a specified directory.}
14
- s.email = %q{d@ytak.info}
15
- s.extra_rdoc_files = [
16
- "LICENSE.txt",
17
- "README.md"
18
- ]
19
- s.files = [
20
- ".document",
21
- ".rspec",
22
- "Gemfile",
23
- "LICENSE.txt",
24
- "README.md",
25
- "Rakefile",
26
- "VERSION",
27
- "lib/user_config.rb",
28
- "spec/spec_helper.rb",
29
- "spec/user_config_spec.rb",
30
- "spec/yaml/test_load.yaml",
31
- "spec/yaml_file_spec.rb",
32
- "user_config.gemspec"
33
- ]
34
- s.homepage = %q{http://github.com/ytaka/user_config}
35
- s.licenses = ["GPLv3"]
36
- s.require_paths = ["lib"]
37
- s.rubygems_version = %q{1.6.2}
38
- s.summary = %q{Management of configuration files in a user's home directory}
14
+ s.rubyforge_project = "user_config"
39
15
 
40
- if s.respond_to? :specification_version then
41
- s.specification_version = 3
16
+ s.files = `git ls-files`.split("\n")
17
+ s.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
18
+ s.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
19
+ s.require_paths = ["lib"]
42
20
 
43
- if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
44
- s.add_development_dependency(%q<rspec>, [">= 2.6.0"])
45
- s.add_development_dependency(%q<yard>, [">= 0.7.2"])
46
- s.add_development_dependency(%q<bundler>, [">= 1.0.0"])
47
- s.add_development_dependency(%q<jeweler>, [">= 1.6.2"])
48
- s.add_development_dependency(%q<rcov>, [">= 0"])
49
- else
50
- s.add_dependency(%q<rspec>, [">= 2.6.0"])
51
- s.add_dependency(%q<yard>, [">= 0.7.2"])
52
- s.add_dependency(%q<bundler>, [">= 1.0.0"])
53
- s.add_dependency(%q<jeweler>, [">= 1.6.2"])
54
- s.add_dependency(%q<rcov>, [">= 0"])
55
- end
56
- else
57
- s.add_dependency(%q<rspec>, [">= 2.6.0"])
58
- s.add_dependency(%q<yard>, [">= 0.7.2"])
59
- s.add_dependency(%q<bundler>, [">= 1.0.0"])
60
- s.add_dependency(%q<jeweler>, [">= 1.6.2"])
61
- s.add_dependency(%q<rcov>, [">= 0"])
62
- end
21
+ # specify any dependencies here; for example:
22
+ s.add_development_dependency "rspec"
23
+ s.add_development_dependency "yard"
24
+ # s.add_runtime_dependency "rest-client"
63
25
  end
64
-
metadata CHANGED
@@ -1,84 +1,48 @@
1
- --- !ruby/object:Gem::Specification
1
+ --- !ruby/object:Gem::Specification
2
2
  name: user_config
3
- version: !ruby/object:Gem::Version
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.3
4
5
  prerelease:
5
- version: 0.0.2
6
6
  platform: ruby
7
- authors:
7
+ authors:
8
8
  - Takayuki YAMAGUCHI
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
-
13
- date: 2011-07-08 00:00:00 +09:00
14
- default_executable:
15
- dependencies:
16
- - !ruby/object:Gem::Dependency
12
+ date: 2011-09-29 00:00:00.000000000 Z
13
+ dependencies:
14
+ - !ruby/object:Gem::Dependency
17
15
  name: rspec
18
- requirement: &id001 !ruby/object:Gem::Requirement
16
+ requirement: &19641620 !ruby/object:Gem::Requirement
19
17
  none: false
20
- requirements:
21
- - - ">="
22
- - !ruby/object:Gem::Version
23
- version: 2.6.0
18
+ requirements:
19
+ - - ! '>='
20
+ - !ruby/object:Gem::Version
21
+ version: '0'
24
22
  type: :development
25
23
  prerelease: false
26
- version_requirements: *id001
27
- - !ruby/object:Gem::Dependency
24
+ version_requirements: *19641620
25
+ - !ruby/object:Gem::Dependency
28
26
  name: yard
29
- requirement: &id002 !ruby/object:Gem::Requirement
27
+ requirement: &19641160 !ruby/object:Gem::Requirement
30
28
  none: false
31
- requirements:
32
- - - ">="
33
- - !ruby/object:Gem::Version
34
- version: 0.7.2
29
+ requirements:
30
+ - - ! '>='
31
+ - !ruby/object:Gem::Version
32
+ version: '0'
35
33
  type: :development
36
34
  prerelease: false
37
- version_requirements: *id002
38
- - !ruby/object:Gem::Dependency
39
- name: bundler
40
- requirement: &id003 !ruby/object:Gem::Requirement
41
- none: false
42
- requirements:
43
- - - ">="
44
- - !ruby/object:Gem::Version
45
- version: 1.0.0
46
- type: :development
47
- prerelease: false
48
- version_requirements: *id003
49
- - !ruby/object:Gem::Dependency
50
- name: jeweler
51
- requirement: &id004 !ruby/object:Gem::Requirement
52
- none: false
53
- requirements:
54
- - - ">="
55
- - !ruby/object:Gem::Version
56
- version: 1.6.2
57
- type: :development
58
- prerelease: false
59
- version_requirements: *id004
60
- - !ruby/object:Gem::Dependency
61
- name: rcov
62
- requirement: &id005 !ruby/object:Gem::Requirement
63
- none: false
64
- requirements:
65
- - - ">="
66
- - !ruby/object:Gem::Version
67
- version: "0"
68
- type: :development
69
- prerelease: false
70
- version_requirements: *id005
71
- description: The library creates, saves, and loads configuration files, which are in a user's home directory or a specified directory.
72
- email: d@ytak.info
35
+ version_requirements: *19641160
36
+ description: The library creates, saves, and loads configuration files, which are
37
+ in a user's home directory or a specified directory.
38
+ email:
39
+ - d@ytak.info
73
40
  executables: []
74
-
75
41
  extensions: []
76
-
77
- extra_rdoc_files:
78
- - LICENSE.txt
79
- - README.md
80
- files:
42
+ extra_rdoc_files: []
43
+ files:
81
44
  - .document
45
+ - .gitignore
82
46
  - .rspec
83
47
  - Gemfile
84
48
  - LICENSE.txt
@@ -86,41 +50,34 @@ files:
86
50
  - Rakefile
87
51
  - VERSION
88
52
  - lib/user_config.rb
53
+ - lib/user_config/version.rb
89
54
  - spec/spec_helper.rb
90
55
  - spec/user_config_spec.rb
91
56
  - spec/yaml/test_load.yaml
92
57
  - spec/yaml_file_spec.rb
93
58
  - user_config.gemspec
94
- has_rdoc: true
95
- homepage: http://github.com/ytaka/user_config
96
- licenses:
97
- - GPLv3
59
+ homepage: ''
60
+ licenses: []
98
61
  post_install_message:
99
62
  rdoc_options: []
100
-
101
- require_paths:
63
+ require_paths:
102
64
  - lib
103
- required_ruby_version: !ruby/object:Gem::Requirement
65
+ required_ruby_version: !ruby/object:Gem::Requirement
104
66
  none: false
105
- requirements:
106
- - - ">="
107
- - !ruby/object:Gem::Version
108
- hash: -3256709702624192472
109
- segments:
110
- - 0
111
- version: "0"
112
- required_rubygems_version: !ruby/object:Gem::Requirement
67
+ requirements:
68
+ - - ! '>='
69
+ - !ruby/object:Gem::Version
70
+ version: '0'
71
+ required_rubygems_version: !ruby/object:Gem::Requirement
113
72
  none: false
114
- requirements:
115
- - - ">="
116
- - !ruby/object:Gem::Version
117
- version: "0"
73
+ requirements:
74
+ - - ! '>='
75
+ - !ruby/object:Gem::Version
76
+ version: '0'
118
77
  requirements: []
119
-
120
- rubyforge_project:
121
- rubygems_version: 1.6.2
78
+ rubyforge_project: user_config
79
+ rubygems_version: 1.8.5
122
80
  signing_key:
123
81
  specification_version: 3
124
82
  summary: Management of configuration files in a user's home directory
125
83
  test_files: []
126
-