bini 0.6.0 → 0.7.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: c94b975fedf242c57e6baa97d09deba3425c6049
4
+ data.tar.gz: 2dd81e4bd023c3ff7cb871730e5b64bb1f1a689e
5
+ SHA512:
6
+ metadata.gz: 50b3ca5d6a48c9515e9464363a232339cead4df11eb6e95b54da8cb8324e1e43ee3e39aa389e68699f18eccbe4217ae329b9ba3645d3092444c0c7a091f1db25
7
+ data.tar.gz: b08c579b54f233ce009d2953134746ea3f1fc260bfa45f02a82b96e34caa1d8f33c81c9592cefa9c1e481e4d7e3b1f3701399feb057a6ea2ec0a14aa042e8ee2
@@ -3,6 +3,7 @@ bundler_args: --without development
3
3
  rvm:
4
4
  - 1.9.2
5
5
  - 1.9.3
6
+ - 2.0.0
6
7
  - rbx-19mode
7
8
 
8
9
  branches:
@@ -1,3 +1,13 @@
1
+ # 0.7.0
2
+ * Added Bini::Extensions::Savable. This can extend any hash into a savable one.
3
+ * Updated Sash to be built off Extensions::Savable.
4
+ * Added Bini.clear to reset defaults. Refactored how defaults and attributes are generated.
5
+ * Added Bini.data_dir (default: ~/.local/share/#{long_name})
6
+ * Added some documentation for Sash.
7
+ * Added overrides:{} and options:{} to Sash. This splits out the options from any k/v's you want to set initially.
8
+ * Added autoloads, from now on you just have to require 'bini' and use the modules as you see fit.
9
+ * Fixed bini.long_name by making them all procs. (github #6)
10
+
1
11
  # 0.6.0
2
12
  * renamed Bini.config to Bini::Config
3
13
  * 100% test coverage.
data/Guardfile CHANGED
@@ -10,10 +10,12 @@ end
10
10
  guard :rspec do
11
11
  watch(%r{^spec/.+_spec\.rb$})
12
12
  watch(%r{^lib/(.+)\.rb$}) { |m| "spec/lib/#{m[1]}_spec.rb" }
13
+ watch('lib/bini/core.rb') { "spec"}
14
+ watch('lib/bini.rb') { "spec" }
13
15
  watch('spec/spec_helper.rb') { "spec" }
14
16
  end
15
- group :docs do
16
- guard :yard do
17
- watch(%r{^lib/(.+)\.rb$})
18
- end
19
- end
17
+ # group :docs do
18
+ # guard :yard do
19
+ # watch(%r{^lib/(.+)\.rb$})
20
+ # end
21
+ # end
data/README.md CHANGED
@@ -43,6 +43,63 @@ require 'bini/config'
43
43
  require 'bini/optparser'
44
44
  require 'bini/log'
45
45
  ```
46
+ ## Extensions
47
+ ### Savable
48
+
49
+ Make any hash savable. It saves the key/value pairs from the hash into a
50
+ YAML file that can be loaded later. It manages permissions (optionally), can
51
+ create a backup/save file, automatically save on changes.
52
+
53
+ To use it just ```include Bini::Extensions::Savable``` in the top of your class
54
+
55
+ ```ruby
56
+ class NewClass < Hash
57
+ include Bini::Exetensions::Savable
58
+ end
59
+ ```
60
+
61
+ Now when you create the new object, it will have access to a few addtional
62
+ methods.
63
+
64
+ % obj.save
65
+ % obj.load
66
+
67
+ Are the main two, the other methods can be used but are typically called through
68
+ those two. These secondary methods are:
69
+
70
+ % obj.backup
71
+ % obj.set_mode
72
+
73
+ Backup will create a backup file on the spot. This won't save the current hash,
74
+ just copy the save file.
75
+
76
+ Set mode will set the mode stored in ```obj.options[:mode]``` on the file.
77
+
78
+ You can check if the obj needs to be saved with ```is_dirty?```. This will
79
+ return ```true``` if you need to save and false if you do not.
80
+
81
+ To configure savable you create k/v pairs in it's options.
82
+
83
+ % obj.options[:backup] = true
84
+
85
+ Options is just anothr hash to contain the various settings cleanly.
86
+
87
+ * file: Filename to save the hash to.
88
+ * backup: Boolean, whether to produce a backup or not.
89
+ * mode: FixNum: mode to store it as: 0600, 0755, 0644 and so on.
90
+ * autosave: Boolean: Automatically save on changes.
91
+
92
+ ## Helpers
93
+ ### Sash
94
+
95
+ Sash is a class extended from hash with savable and a few extra features. You can add
96
+ overrides (load values into the hash on creation), options at creation and autoload.
97
+
98
+ Overrides are just a way to set values on creation.
99
+
100
+ ### Additional Options
101
+
102
+ * autoload: Boolean: set to true to load the value of the config right on creation
46
103
 
47
104
  ### API
48
105
 
@@ -1,69 +1,17 @@
1
- require 'sys/proctable'
1
+ require "bini/core"
2
2
 
3
- require "bini/sash"
4
- require "bini/version"
5
- require "bini/filemagic"
6
-
7
- # A collection of very small helpers that assist me in writing a CLI without
8
- # getting in the way.
9
- #
10
- # Provides some dynamic attributes, they all behave the same and just hook into
11
- # the defaults to provide non-nil results when needed.
12
- #
13
- # @!attribute long_name [rw]
14
- # @return [String] An application name, useful if your app is named differently then your binary.
15
- # @!attribute cache_dir [rw]
16
- # @return [String] The directory to store any cache related files.
17
- # @!attribute config_dir [rw]
18
- # @return [String] The directory to store any config related files.
19
- # @!attribute version [rw]
20
- # @return [String] The version of the application, not of Bini.
21
3
  module Bini
22
- extend self
23
-
24
- # A collection of sane defaults to be provided if the same attr is still nil.
25
- attr_accessor :defaults
26
-
27
- # I break this out so that I can use long name right away, this allows methods
28
- # like configure to work.
29
-
30
- @defaults = {}
31
- @defaults[:long_name] = $0.split("/").last
32
- @defaults[:cache_dir] = "#{Dir.home}/.cache/bini/#{@long_name}/"
33
- @defaults[:config_dir] = "#{Dir.home}/.config/bini/#{@long_name}/"
34
-
35
- # Dynamic attribute's based off the keys.
36
- def keys
37
- keys ||= [:long_name, :cache_dir, :config_dir, :version]
38
- end
39
-
40
- keys.each do |key|
41
- define_method(key) do
42
- v = instance_variable_get "@#{key}"
43
- return !v ? @defaults[key] : v
44
- end
45
- define_method("#{key}=".to_sym) do |dir|
46
- instance_variable_set "@#{key}", dir
47
- end
4
+ autoload :Sash, 'bini/sash'
5
+ autoload :Options, 'bini/optparser'
6
+ autoload :Config, 'bini/config'
7
+ autoload :Backups, 'bini/backups'
8
+ autoload :OptionParser, 'bini/optparser'
9
+ autoload :FileMagic, 'bini/filemagic'
10
+ autoload :Prompts, 'bini/prompts'
11
+ autoload :VERSION, 'bini/version'
12
+
13
+ module Extensions
14
+ autoload :Savable, 'bini/extensions/savable'
48
15
  end
49
16
 
50
- # Adds a rails style configure method.
51
- def configure
52
- yield self
53
- parameters
54
- end
55
-
56
- # List available parameters and values in those params
57
- def parameters
58
- @values = {}
59
- keys.each { |k| @values.merge! k => Bini.send(k) }
60
- @values
61
- end
62
- alias_method :params, :parameters
63
-
64
- # Returns true or false if all parameters are set to something other than defaults.
65
- def parameters?
66
- @defaults.map {|k,v| @defaults[k] != parameters[k]}.all?
67
- end
68
17
  end
69
-
@@ -4,5 +4,5 @@ module Bini
4
4
  extend self
5
5
 
6
6
  # A helper for storing configuration related data in.
7
- Config = Sash.new file:"#{Bini.config_dir}/#{Bini.name}.yaml"
7
+ Config = Sash.new options:{file:"#{Bini.config_dir}/#{Bini.name}.yaml"}
8
8
  end
@@ -0,0 +1,75 @@
1
+ # A collection of very small helpers that assist me in writing a CLI without
2
+ # getting in the way.
3
+ #
4
+ # Provides some dynamic attributes, they all behave the same and just hook into
5
+ # the defaults to provide non-nil results when needed.
6
+ #
7
+ # @!attribute long_name [rw]
8
+ # @return [String] An application name, useful if your app is named differently then your binary.
9
+ # @!attribute cache_dir [rw]
10
+ # @return [String] The directory to store any cache related files.
11
+ # @!attribute config_dir [rw]
12
+ # @return [String] The directory to store any config related files.
13
+ # @!attribute version [rw]
14
+ # @return [String] The version of the application, not of Bini.
15
+ module Bini
16
+ extend self
17
+
18
+ # A collection of sane defaults to be provided if the same attr is still nil.
19
+ attr_accessor :defaults
20
+ attr_accessor :long_name
21
+ attr_accessor :cache_dir
22
+ attr_accessor :config_dir
23
+ attr_accessor :data_dir
24
+ attr_accessor :version
25
+
26
+ @defaults = {}
27
+ @defaults[:long_name] = Proc.new { $0.split("/").last }
28
+ @defaults[:cache_dir] = Proc.new { "#{Dir.home}/.cache/#{@long_name}" }
29
+ @defaults[:config_dir] = Proc.new { "#{Dir.home}/.config/#{@long_name}" }
30
+ @defaults[:data_dir] = Proc.new { "#{Dir.home}/.local/share/#{@long_name}" }
31
+ @defaults[:version] = Proc.new { "v0.0.0" }
32
+
33
+ # Dynamic attribute's based off the defaults.
34
+ def keys
35
+ Bini.instance_methods.select do |m|
36
+ m =~ /=$/ && m != :defaults=
37
+ end.map do |m|
38
+ m[0..-2].to_sym
39
+ end
40
+ end
41
+
42
+ # Reset the defaults back to nothing.
43
+ def clear
44
+ @defaults.each do |key,value|
45
+ instance_variable_set "@#{key}", nil
46
+ end
47
+ end
48
+ keys.each do |key|
49
+ define_method(key) do
50
+ v = instance_variable_get "@#{key}"
51
+ return v if v
52
+
53
+ @defaults[key] ? default = @defaults[key].call : default = nil
54
+ return default
55
+ end
56
+ define_method("#{key}=".to_sym) do |dir|
57
+ instance_variable_set "@#{key}", dir
58
+ end
59
+ end
60
+
61
+ # Adds a rails style configure method.
62
+ def configure
63
+ yield self
64
+ parameters
65
+ end
66
+
67
+ # List available parameters and values in those params
68
+ def parameters
69
+ @values = {}
70
+ keys.each { |k| @values.merge! k => Bini.send(k) }
71
+ @values
72
+ end
73
+ alias_method :params, :parameters
74
+ end
75
+
@@ -0,0 +1,96 @@
1
+ module Bini
2
+ module Extensions
3
+ module Savable
4
+
5
+ # Lets setup some options.
6
+ def initialize
7
+ options[:dirty] = false
8
+ options[:file] = "#{Bini.config_dir}/#{Bini.long_name}/savable.yaml"
9
+ super
10
+ end
11
+
12
+ def []=(key,value)
13
+ super key, value
14
+ if options[:autosave] == true
15
+ save
16
+ else
17
+ options[:dirty] = true
18
+ end
19
+ return value
20
+ end
21
+
22
+ # save self into a file
23
+ def save
24
+ return false if options[:dirty] && options[:dirty] != true
25
+
26
+ FileUtils.mkdir_p basedir if !Dir.exist? basedir
27
+
28
+ # I do this the long way because I want an immediate sync.
29
+ f = open(options[:file], 'w')
30
+
31
+ # make a plan hash, save that instead of the class.
32
+ f.write(YAML::dump({}.merge(self)))
33
+ f.sync
34
+ f.close
35
+
36
+ backup if options[:backup]
37
+ set_mode if options[:mode]
38
+ options[:dirty] = false
39
+ return true
40
+ end
41
+
42
+ def load
43
+ self.clear
44
+ if options[:file] && File.exist?(options[:file]) && File.stat(options[:file]).size > 0
45
+ h = YAML::load open(options[:file], 'r').read
46
+ h.each { |k,v| self[k] = v}
47
+ end
48
+ return self
49
+ end
50
+
51
+ # Generate a backup file real quick.
52
+ def backup
53
+ FileUtils.cp options[:file], backup_file if File.file? options[:file]
54
+ end
55
+
56
+ # Set the mode of both the save file and backup file.
57
+ def set_mode
58
+ FileUtils.chmod options[:mode], options[:file] if options[:mode] && File.exist?(options[:file])
59
+
60
+ return true if !backup_file
61
+ FileUtils.chmod options[:mode], backup_file if File.exist? backup_file
62
+ return true
63
+ end
64
+
65
+
66
+ # has something updated that means we need to save
67
+ def is_dirty?
68
+ return true if options[:dirty] == true
69
+ return false
70
+ end
71
+
72
+ # clean the system of residual files (obviously destructive).
73
+ def clean_files
74
+ #FileUtils.rm options[:file], v
75
+ return true if !options[:file]
76
+ FileUtils.rm options[:file] if File.file? options[:file]
77
+ FileUtils.rm backup_file if File.file? backup_file
78
+ return true
79
+ end
80
+
81
+ def options
82
+ @options ||= Hash.new
83
+ end
84
+
85
+ # The base directory of the save file.
86
+ def basedir
87
+ File.dirname File.absolute_path options[:file]
88
+ end
89
+
90
+ # The save file plus an extension.
91
+ def backup_file
92
+ "#{options[:file]}.bak"
93
+ end
94
+ end
95
+ end
96
+ end
@@ -5,92 +5,24 @@ module Bini
5
5
  # This is a savable hash, it can be configured and used to store whatever the# contents of the hash are for loading later. Will serialize in yaml to keep all
6
6
  # the dependencies in ruby stdlib.
7
7
  class Sash < Hash
8
+ include Bini::Extensions::Savable
8
9
 
9
- attr_accessor :file
10
- attr_accessor :backup
11
- attr_accessor :mode
12
- attr_accessor :auto_load
13
- attr_accessor :auto_save
14
-
15
- # initialization sets the values of the class Sash, not the contents of the Hash.
10
+ # overrides:{Hash.new}
11
+ # options: Sash options.
16
12
  def initialize(params = {})
17
- params.each { |k,v| instance_variable_set "@" + k.to_s,v}
18
- load if @auto_load
19
- end
20
-
21
- # The base directory of the save file.
22
- def basedir
23
- return nil if !file
24
- File.dirname File.absolute_path @file
25
- end
26
-
27
- # The save file plus an extension.
28
- def backup_file
29
- "#{@file}.bak"
30
- end
31
-
32
- # Save the hash to the file, check for backup and set_mode.
33
- def save
34
- if any?
35
- FileUtils.mkdir_p basedir if !Dir.exist? basedir
36
- backup if @backup
37
-
38
- # I do this the long way because I want an immediate sync.
39
- f = open(@file, 'w')
40
- f.write YAML::dump self
41
- f.sync
42
- f.close
43
-
44
- set_mode if @mode
45
- end
46
- true
47
- end
48
- # Store a value in the Hash. Can autosave.
49
- def []=(key,value)
50
- store key, value
51
- save! if @auto_save == true
52
- end
53
- # Save the hash to a file, overwriting if necessary.
54
- def save!
55
- delete_file
56
- save
57
- end
13
+ # if we get any params not listed above, throw an exception.
14
+ p = params.select { |k,v| k != :options && k != :overrides}
15
+ raise ArgumentError, "Extra values passed in: #{p}" if p.count > 0
58
16
 
59
- # Load the save file into self.
60
- def load
61
- self.clear
62
- if @file && File.exist?(@file) && File.stat(@file).size > 0
63
- h = YAML::load open(@file, 'r').read
64
- h.each { |k,v| self[k] = v}
65
- return true
66
- end
67
- false
68
- end
17
+ # set our options to our attributes.
18
+ options.merge! params[:options] if params[:options]
69
19
 
70
- # Generate a backup file real quick.
71
- def backup
72
- FileUtils.cp @file, backup_file if File.file? @file
73
- end
20
+ load if self.options[:autoload]
74
21
 
75
- # Set the mode of both the save file and backup file.
76
- def set_mode
77
- # Why are we trying to set_mode when we don't even have a file?
78
- return false if !@file
79
- File.chmod @mode, @file if File.exist? @file
22
+ self.merge! params[:overrides] if params[:overrides]
80
23
 
81
- # the backup file may not exist for whatever reason, lets not shit if it doesn't.
82
- return true if !backup_file
83
- File.chmod @mode, backup_file if File.exist? backup_file
84
- true
85
- end
86
-
87
- private
88
-
89
- # Delete the save file.
90
- def delete_file
91
- return false if !@file
92
- FileUtils.rm @file if File.file? @file
93
- return true
24
+ return self
94
25
  end
95
26
  end
96
27
  end
28
+
@@ -1,4 +1,4 @@
1
1
  module Bini
2
2
  # The current version of Bini.
3
- VERSION = "0.6.0"
3
+ VERSION = "0.7.0"
4
4
  end
@@ -0,0 +1,57 @@
1
+ require 'spec_helper'
2
+
3
+ class TestClass < Hash
4
+ include Bini::Extensions::Savable
5
+ end
6
+
7
+ describe Bini::Extensions::Savable do
8
+ before (:each) do
9
+ Bini.config_dir = "tmp/"
10
+ Bini.long_name = "savable_test"
11
+ @obj = TestClass.new
12
+ @obj.clean_files
13
+ end
14
+
15
+ it "will (auto)save" do
16
+ @obj[:foo] = 'bar'
17
+ @obj.save
18
+ @obj.clear
19
+ @obj.should eq({})
20
+ @obj.load
21
+ @obj[:foo].should eq 'bar'
22
+ @obj.options[:autosave] = true
23
+ @obj[:fooboo] = 'bar2'
24
+ @obj.clear
25
+ @obj.load
26
+ @obj[:fooboo].should eq 'bar2'
27
+ end
28
+
29
+ it "will know when it needs to save" do
30
+ @obj[:dirttty] = 'twue'
31
+ @obj.is_dirty?.should be_true
32
+ @obj.save
33
+ @obj.is_dirty?.should be_false
34
+ end
35
+
36
+ it "will generate a backup on request" do
37
+ @obj.options[:backup] = true
38
+ @obj[:back] = 'bbbb'
39
+ @obj.save
40
+ File.exists?(@obj.backup_file).should be_true
41
+ end
42
+ it "will set mode on request" do
43
+ @obj.options[:mode] = 0600
44
+ @obj[:m] == 'mmm'
45
+ @obj.save
46
+ # According to the docs, this is likely platform dependent. Need a mac
47
+ # to test.
48
+ File.stat(@obj.options[:file]).mode.should eq 0100600
49
+ end
50
+ it "will clean up after itself if requested" do
51
+ @obj[:too] = 'foo'
52
+ @obj.save
53
+ @obj.clean_files
54
+ File.exist?(@obj.options[:file]).should be_false
55
+ File.exist?(@obj.backup_file).should be_false
56
+ end
57
+ end
@@ -43,7 +43,7 @@ describe "optparser" do
43
43
  describe "parse" do
44
44
  it "will attempt to mash in the Config[]#hash if available." do
45
45
  Bini::Config[@key] == @value
46
- Options.parse!
46
+ Options.parse
47
47
  Options[@key] = @value
48
48
  end
49
49
  it "Will echo the version set by Bini.version" do
@@ -1,79 +1,34 @@
1
- require 'bini'
2
-
3
- include Bini
4
-
5
- describe "Sash" do
6
- def random_file
7
- "tmp/sash-#{(0...4).map{rand(16).to_s(16)}.join}.yaml"
8
- end
9
-
10
- before (:all) do
11
- FileUtils.mkdir_p 'tmp'
12
- end
1
+ require 'spec_helper'
13
2
 
3
+ describe Bini::Sash do
14
4
  before (:each) do
15
- @filename = random_file
16
- @s = Sash.new file:@filename
5
+ @filename = "tmp/sash_savefile.yaml"
6
+ @s = Bini::Sash.new options:{file:@filename}
17
7
  @s[:before_each] = true
18
8
  end
19
9
 
20
- after (:all) do
21
- Dir.glob("tmp/sash-*.yaml*").each { |f| FileUtils.rm f}
22
- end
23
-
24
- it "can select the filename" do
25
- @s.file.should be @filename
26
- end
27
-
28
- it "can save" do
29
- @s['foo'] = :bar
30
- @s.save
31
- @s2 = Sash.new file:@filename
32
- @s2.load
33
- @s2['foo'].should eq :bar
10
+ it "Can pass overrides via overrides:{}" do
11
+ @s2 = Bini::Sash.new(overrides:{foo: :bar})
12
+ @s2.should include(:foo)
34
13
  end
35
14
 
36
- it "can set the mode" do
37
- @s.mode = 0600
38
- @s.set_mode
15
+ it 'will fail gracefully if nothing to load.' do
39
16
  @s.save
40
- # I have no idea why you put in 0600, 0600 becomes 384, and out comes 33152.
41
- # when I figure out where the conversion is going wrong, I'll update this.
42
- File.stat(@s.file).mode.should eq 33152
17
+ FileUtils.rm @filename
18
+ @s.load.should eq({})
19
+ @s.options[:file] = nil
20
+ @s.load.should eq({})
21
+ FileUtils.touch @filename
22
+ @s.load.should eq({})
43
23
  end
44
-
45
- it "can auto save" do
46
- @s = Sash.new file:@filename, auto_save:true
47
- @s[:auto_save] = true
48
- @s2 = Sash.new file:@filename
49
- @s2.load
50
- @s2[:auto_save].should be true
24
+ it "will raise an exception if you pass in unknown arguments to new." do
25
+ @s2 = expect { Sash.new(foo:'bar') }.to raise_error
51
26
  end
52
27
 
53
28
  it "can auto load" do
54
- @s[:auto_load] = true
55
- @s.save
56
- @s2 = Sash.new file:@filename, auto_load:true
57
- @s2[:auto_load].should be true
58
- end
59
-
60
- # We save twice because in order to produce a backup file, we need an original.
61
- it "can make a backup file" do
62
- @s.backup = true
63
- @s[:backup] = "something"
64
- @s.save
29
+ @s[:autoload] = true
65
30
  @s.save
66
- File.exist?(@s.backup_file).should be_true
67
- end
68
-
69
- it "will behave like a normal Hash" do
70
- @s.kind_of?(Hash).should be_true
71
- end
72
-
73
- it "will clear before load, destroying previous contents" do
74
- @s[:clear] = 'clear'
75
- @s.load
76
- @s[:clear].should be_nil
31
+ @s2 = Bini::Sash.new options:{file:@filename, autoload:true}
32
+ @s2[:autoload].should be_true
77
33
  end
78
34
  end
79
-
@@ -3,31 +3,24 @@ require 'spec_helper'
3
3
  # I'm not 100% sure convinvced any of these do what I think they do.
4
4
  describe "Bini" do
5
5
  before (:each) do
6
- Bini.long_name = nil
7
- @long_name = Bini.long_name
8
- Bini.cache_dir = nil
9
- @cache_dir = Bini.cache_dir
10
- Bini.config_dir = nil
11
- @config_dir = Bini.config_dir
12
- Bini.version = nil
6
+ Bini.clear
13
7
  end
14
8
 
15
- describe "parameters?" do
16
- it 'will return true only if everything is true.' do
17
- Bini.long_name = "tmp/test"
18
- Bini.parameters?.should be_false
19
- Bini.cache_dir = "tmp/here"
20
- Bini.config_dir = "tmp/there"
21
- Bini.parameters?.should be_true
9
+ describe "long_name" do
10
+ it "Will update the directories automatically." do
11
+ Bini.long_name = "rspecify"
12
+ Bini.long_name.should eq "rspecify"
13
+ Bini.cache_dir.should eq "#{Dir.home}/.cache/rspecify"
22
14
  end
23
15
  end
24
16
 
17
+ describe
25
18
  # Dynamically generate our key tests, more for fun then any real need.
26
19
  Bini.keys.each do |key|
27
20
  describe "#{key}" do
28
21
  it "can be reset to a default" do
29
22
  Bini.send "#{key}=", nil
30
- Bini.send(key).should eq Bini.defaults[key]
23
+ Bini.send(key).should eq Bini.defaults[key].call
31
24
  end
32
25
  it "can be overriden" do
33
26
  r = random_hex 16
@@ -45,6 +38,5 @@ describe "Bini" do
45
38
  end
46
39
  end
47
40
 
48
- Bini.version
49
41
  end
50
42
 
@@ -1,12 +1,10 @@
1
1
  require 'simplecov'
2
+ require 'bini'
3
+
2
4
  SimpleCov.start do
3
5
  add_filter "/spec/"
4
6
  end
5
7
 
6
- require 'bini'
7
- require 'bini/optparser'
8
- require 'bini/config'
9
-
10
8
  include Bini
11
9
 
12
10
  # This file was generated by the `rspec --init` command. Conventionally, all
metadata CHANGED
@@ -1,30 +1,27 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: bini
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.6.0
5
- prerelease:
4
+ version: 0.7.0
6
5
  platform: ruby
7
6
  authors:
8
7
  - Ernie Brodeur
9
8
  autorequire:
10
9
  bindir: bin
11
10
  cert_chain: []
12
- date: 2012-12-18 00:00:00.000000000 Z
11
+ date: 2013-05-27 00:00:00.000000000 Z
13
12
  dependencies:
14
13
  - !ruby/object:Gem::Dependency
15
14
  name: sys-proctable
16
15
  requirement: !ruby/object:Gem::Requirement
17
- none: false
18
16
  requirements:
19
- - - ! '>='
17
+ - - '>='
20
18
  - !ruby/object:Gem::Version
21
19
  version: '0'
22
20
  type: :runtime
23
21
  prerelease: false
24
22
  version_requirements: !ruby/object:Gem::Requirement
25
- none: false
26
23
  requirements:
27
- - - ! '>='
24
+ - - '>='
28
25
  - !ruby/object:Gem::Version
29
26
  version: '0'
30
27
  description: Bini needs no description.
@@ -47,6 +44,8 @@ files:
47
44
  - bini.gemspec
48
45
  - lib/bini.rb
49
46
  - lib/bini/config.rb
47
+ - lib/bini/core.rb
48
+ - lib/bini/extensions/savable.rb
50
49
  - lib/bini/filemagic.rb
51
50
  - lib/bini/mixins.rb
52
51
  - lib/bini/optparser.rb
@@ -54,6 +53,7 @@ files:
54
53
  - lib/bini/sash.rb
55
54
  - lib/bini/version.rb
56
55
  - spec/lib/bini/config_spec.rb
56
+ - spec/lib/bini/extensions/savable_spec.rb
57
57
  - spec/lib/bini/filemagic_spec.rb
58
58
  - spec/lib/bini/mixins_spec.rb
59
59
  - spec/lib/bini/optparser_spec.rb
@@ -62,32 +62,32 @@ files:
62
62
  - spec/spec_helper.rb
63
63
  homepage: https://github.com/erniebrodeur/bini
64
64
  licenses: []
65
+ metadata: {}
65
66
  post_install_message:
66
67
  rdoc_options: []
67
68
  require_paths:
68
69
  - lib
69
70
  required_ruby_version: !ruby/object:Gem::Requirement
70
- none: false
71
71
  requirements:
72
- - - ! '>='
72
+ - - '>='
73
73
  - !ruby/object:Gem::Version
74
74
  version: '0'
75
75
  required_rubygems_version: !ruby/object:Gem::Requirement
76
- none: false
77
76
  requirements:
78
- - - ! '>='
77
+ - - '>='
79
78
  - !ruby/object:Gem::Version
80
79
  version: '0'
81
80
  requirements: []
82
81
  rubyforge_project:
83
- rubygems_version: 1.8.21
82
+ rubygems_version: 2.0.0
84
83
  signing_key:
85
- specification_version: 3
84
+ specification_version: 4
86
85
  summary: Bini is a gem that helps me build CLI tools. It's not thor, trollop, or
87
86
  any of the other major frameworks. It makes lots and lots of assumptions. It's
88
87
  probably not for you.
89
88
  test_files:
90
89
  - spec/lib/bini/config_spec.rb
90
+ - spec/lib/bini/extensions/savable_spec.rb
91
91
  - spec/lib/bini/filemagic_spec.rb
92
92
  - spec/lib/bini/mixins_spec.rb
93
93
  - spec/lib/bini/optparser_spec.rb