cabi 0.1.1 → 0.1.2
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 +4 -4
 - data/README.md +6 -6
 - data/bin/cabi +10 -10
 - data/cabi.gemspec +1 -1
 - data/data/{cabi-cache.tar.gz → cabi-data.tar.gz} +0 -0
 - data/lib/cabi.rb +4 -4
 - data/lib/data.rb +39 -0
 - data/lib/datafile.rb +2 -2
 - metadata +3 -3
 - data/lib/cache.rb +0 -39
 
    
        checksums.yaml
    CHANGED
    
    | 
         @@ -1,7 +1,7 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            ---
         
     | 
| 
       2 
2 
     | 
    
         
             
            SHA1:
         
     | 
| 
       3 
     | 
    
         
            -
              metadata.gz:  
     | 
| 
       4 
     | 
    
         
            -
              data.tar.gz:  
     | 
| 
      
 3 
     | 
    
         
            +
              metadata.gz: cec2656830ddd4ae65fba64c3821363be983765b
         
     | 
| 
      
 4 
     | 
    
         
            +
              data.tar.gz: 25638dce3ba1f2f014f2629e190cf9ca9a7af450
         
     | 
| 
       5 
5 
     | 
    
         
             
            SHA512:
         
     | 
| 
       6 
     | 
    
         
            -
              metadata.gz:  
     | 
| 
       7 
     | 
    
         
            -
              data.tar.gz:  
     | 
| 
      
 6 
     | 
    
         
            +
              metadata.gz: 5ebf6f96dd020f6ac2149ce3b6a2c47a584270d0a3e031d5b239ddbe197b1be4c1401884c9c75841ecb7f37269ebe7fc415d880ff1c27ac754c157992f4a3f28
         
     | 
| 
      
 7 
     | 
    
         
            +
              data.tar.gz: ba777a2f2eaa0f25048341d9c72ef93fbe360782b015c51954f6add362bc3667e66232aae71cb8dcf9d1bf368003df2b570b29ba049276db36304ceb46090c9a
         
     | 
    
        data/README.md
    CHANGED
    
    | 
         @@ -8,7 +8,7 @@ Cabi is a flat-file datastore where data is stored by directory stucture and acc 
     | 
|
| 
       8 
8 
     | 
    
         | 
| 
       9 
9 
     | 
    
         
             
            ``` bash
         
     | 
| 
       10 
10 
     | 
    
         
             
            $ gem install cabi
         
     | 
| 
       11 
     | 
    
         
            -
            $ cabi init --mock    # use --mock to init cabi  
     | 
| 
      
 11 
     | 
    
         
            +
            $ cabi init --mock    # use --mock to init cabi data with some fake data
         
     | 
| 
       12 
12 
     | 
    
         
             
            ```
         
     | 
| 
       13 
13 
     | 
    
         | 
| 
       14 
14 
     | 
    
         
             
            Then access your data like so:
         
     | 
| 
         @@ -22,7 +22,7 @@ $ irb 
     | 
|
| 
       22 
22 
     | 
    
         | 
| 
       23 
23 
     | 
    
         
             
            ### Usage
         
     | 
| 
       24 
24 
     | 
    
         | 
| 
       25 
     | 
    
         
            -
            Assuming your `cabi- 
     | 
| 
      
 25 
     | 
    
         
            +
            Assuming your `cabi-data` folder has the following structure:
         
     | 
| 
       26 
26 
     | 
    
         | 
| 
       27 
27 
     | 
    
         
             
                .
         
     | 
| 
       28 
28 
     | 
    
         
             
                ├── info.yml
         
     | 
| 
         @@ -55,18 +55,18 @@ Cabi.read('posts:some-article:index.html')    # contents of posts/some-article/i 
     | 
|
| 
       55 
55 
     | 
    
         
             
            # selection will work.
         
     | 
| 
       56 
56 
     | 
    
         
             
            Cabi.read('pages:about:*')                    # an array of body.html and meta.yml contents
         
     | 
| 
       57 
57 
     | 
    
         
             
            Cabi.read('pages:about:person-*')             # an array of all person-* html files
         
     | 
| 
       58 
     | 
    
         
            -
            Cabi.read(' 
     | 
| 
      
 58 
     | 
    
         
            +
            Cabi.read('**/*')                             # an array of all files in data
         
     | 
| 
       59 
59 
     | 
    
         | 
| 
       60 
60 
     | 
    
         
             
            # Selection within YAML files
         
     | 
| 
       61 
61 
     | 
    
         
             
            Cabi.read('pages:about:meta:foo:bar')         # contents of ['foo']['bar'] in page/about/meta.yml hash
         
     | 
| 
       62 
62 
     | 
    
         
             
            Cabi.read('info:foo:bar:baz')                 # contents of ['foo']['bar']['baz'] in info.yml hash
         
     | 
| 
       63 
63 
     | 
    
         
             
            ```
         
     | 
| 
       64 
64 
     | 
    
         | 
| 
       65 
     | 
    
         
            -
            ### Custom  
     | 
| 
      
 65 
     | 
    
         
            +
            ### Custom Data Directory
         
     | 
| 
       66 
66 
     | 
    
         | 
| 
       67 
     | 
    
         
            -
            Cabi assumes that your  
     | 
| 
      
 67 
     | 
    
         
            +
            Cabi assumes that your data directory is either a folder at the top level of your project with a `.cabi-data` file in it (to indicate that it's the data directory). If one is not found, the data directory defaults to `./cabi-data`.
         
     | 
| 
       68 
68 
     | 
    
         | 
| 
       69 
     | 
    
         
            -
            For instance, if you had a folder called `super- 
     | 
| 
      
 69 
     | 
    
         
            +
            For instance, if you had a folder called `super-data` located inside of your project's root that had a file called `.cabi-data` inside of it, this folder would be treated as your data directory.
         
     | 
| 
       70 
70 
     | 
    
         | 
| 
       71 
71 
     | 
    
         
             
            ### Icon <img src="https://rawgithub.com/briangonzalez/cabi-gem/master/data/cabi.svg" width=20 style="margin-right: 10px">
         
     | 
| 
       72 
72 
     | 
    
         | 
    
        data/bin/cabi
    CHANGED
    
    | 
         @@ -6,33 +6,33 @@ require File.join( File.expand_path("../..", __FILE__), "lib", "cabi") 
     | 
|
| 
       6 
6 
     | 
    
         | 
| 
       7 
7 
     | 
    
         
             
            class CabiCLI < Thor
         
     | 
| 
       8 
8 
     | 
    
         | 
| 
       9 
     | 
    
         
            -
              desc "init", "Initialize Cabi  
     | 
| 
      
 9 
     | 
    
         
            +
              desc "init", "Initialize Cabi data directory (use --mock to create fake data, use --target to specify your own directory)"
         
     | 
| 
       10 
10 
     | 
    
         
             
              method_options :mock => :boolean, :target => :string
         
     | 
| 
       11 
11 
     | 
    
         
             
              def init
         
     | 
| 
       12 
12 
     | 
    
         | 
| 
       13 
     | 
    
         
            -
                target = options[:target] || Cabi:: 
     | 
| 
      
 13 
     | 
    
         
            +
                target = options[:target] || Cabi::CABI_DATA_DIR
         
     | 
| 
       14 
14 
     | 
    
         
             
                FileUtils.mkdir( target )
         
     | 
| 
       15 
15 
     | 
    
         | 
| 
       16 
16 
     | 
    
         
             
                if options[:mock]
         
     | 
| 
       17 
     | 
    
         
            -
                  f = File.expand_path( "../../data/cabi- 
     | 
| 
       18 
     | 
    
         
            -
                  `tar -xf #{f} --strip-components= 
     | 
| 
      
 17 
     | 
    
         
            +
                  f = File.expand_path( "../../data/cabi-data.tar.gz", __FILE__ )
         
     | 
| 
      
 18 
     | 
    
         
            +
                  `tar -xf #{f} --strip-components=1 -C #{target}`
         
     | 
| 
       19 
19 
     | 
    
         
             
                end
         
     | 
| 
       20 
20 
     | 
    
         | 
| 
       21 
     | 
    
         
            -
                puts " ** Cabi  
     | 
| 
      
 21 
     | 
    
         
            +
                puts " ** Cabi data created in #{target}"
         
     | 
| 
       22 
22 
     | 
    
         
             
              end
         
     | 
| 
       23 
23 
     | 
    
         | 
| 
       24 
     | 
    
         
            -
              desc "clean", "Remove Cabi  
     | 
| 
      
 24 
     | 
    
         
            +
              desc "clean", "Remove Cabi data directory"
         
     | 
| 
       25 
25 
     | 
    
         
             
              method_options :force => :boolean  
         
     | 
| 
       26 
26 
     | 
    
         
             
              def clean
         
     | 
| 
       27 
27 
     | 
    
         
             
                if options[:force]
         
     | 
| 
       28 
28 
     | 
    
         
             
                  begin
         
     | 
| 
       29 
     | 
    
         
            -
                    FileUtils.rm_rf( Cabi. 
     | 
| 
       30 
     | 
    
         
            -
                    FileUtils.rm_rf( Cabi:: 
     | 
| 
       31 
     | 
    
         
            -
                    puts " ** Cleaned cabi  
     | 
| 
      
 29 
     | 
    
         
            +
                    FileUtils.rm_rf( Cabi.data_dir )
         
     | 
| 
      
 30 
     | 
    
         
            +
                    FileUtils.rm_rf( Cabi::CABI_DATA_DIR)
         
     | 
| 
      
 31 
     | 
    
         
            +
                    puts " ** Cleaned cabi data" 
         
     | 
| 
       32 
32 
     | 
    
         
             
                  rescue Exception => e
         
     | 
| 
       33 
33 
     | 
    
         
             
                  end
         
     | 
| 
       34 
34 
     | 
    
         
             
                else
         
     | 
| 
       35 
     | 
    
         
            -
                  puts " ** Not cleaning cabi  
     | 
| 
      
 35 
     | 
    
         
            +
                  puts " ** Not cleaning cabi data folder without --force" 
         
     | 
| 
       36 
36 
     | 
    
         
             
                end
         
     | 
| 
       37 
37 
     | 
    
         
             
              end
         
     | 
| 
       38 
38 
     | 
    
         | 
    
        data/cabi.gemspec
    CHANGED
    
    | 
         @@ -1,6 +1,6 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            Gem::Specification.new do |s|
         
     | 
| 
       2 
2 
     | 
    
         
             
              s.name                  = 'cabi'
         
     | 
| 
       3 
     | 
    
         
            -
              s.version               = '0.1. 
     | 
| 
      
 3 
     | 
    
         
            +
              s.version               = '0.1.2'
         
     | 
| 
       4 
4 
     | 
    
         
             
              s.summary               = "A simple, flat-file datastore for Ruby."
         
     | 
| 
       5 
5 
     | 
    
         | 
| 
       6 
6 
     | 
    
         
             
              s.description           = "Cabi is a flat-file datastore where data is stored by directory stucture and accessed by colon-delimited strings."
         
     | 
| 
         Binary file 
     | 
    
        data/lib/cabi.rb
    CHANGED
    
    | 
         @@ -10,15 +10,15 @@ module Cabi 
     | 
|
| 
       10 
10 
     | 
    
         
             
              DELIMITER       = ':'
         
     | 
| 
       11 
11 
     | 
    
         
             
              BULK_SELECTOR   = '*'
         
     | 
| 
       12 
12 
     | 
    
         
             
              YAML_EXT        = '.yml'
         
     | 
| 
       13 
     | 
    
         
            -
               
     | 
| 
       14 
     | 
    
         
            -
               
     | 
| 
      
 13 
     | 
    
         
            +
              CABI_DATA_ID   = '.cabi-data'
         
     | 
| 
      
 14 
     | 
    
         
            +
              CABI_DATA_DIR   = './cabi-data'
         
     | 
| 
       15 
15 
     | 
    
         | 
| 
       16 
16 
     | 
    
         
             
              def self.read(id)
         
     | 
| 
       17 
     | 
    
         
            -
                 
     | 
| 
      
 17 
     | 
    
         
            +
                Data.read(id)
         
     | 
| 
       18 
18 
     | 
    
         
             
              end
         
     | 
| 
       19 
19 
     | 
    
         | 
| 
       20 
20 
     | 
    
         
             
              def self.write(id, content)
         
     | 
| 
       21 
     | 
    
         
            -
                 
     | 
| 
      
 21 
     | 
    
         
            +
                Data.write(id, content)
         
     | 
| 
       22 
22 
     | 
    
         
             
              end
         
     | 
| 
       23 
23 
     | 
    
         | 
| 
       24 
24 
     | 
    
         
             
            end
         
     | 
    
        data/lib/data.rb
    ADDED
    
    | 
         @@ -0,0 +1,39 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            module Cabi
         
     | 
| 
      
 2 
     | 
    
         
            +
             
     | 
| 
      
 3 
     | 
    
         
            +
              class Data
         
     | 
| 
      
 4 
     | 
    
         
            +
             
     | 
| 
      
 5 
     | 
    
         
            +
                  def self.read(id)
         
     | 
| 
      
 6 
     | 
    
         
            +
                    DataFile.contents(id) || nil
         
     | 
| 
      
 7 
     | 
    
         
            +
                  end
         
     | 
| 
      
 8 
     | 
    
         
            +
             
     | 
| 
      
 9 
     | 
    
         
            +
                  def self.write(id, content)
         
     | 
| 
      
 10 
     | 
    
         
            +
                    file = DataFile.write(id, content)
         
     | 
| 
      
 11 
     | 
    
         
            +
                  end
         
     | 
| 
      
 12 
     | 
    
         
            +
             
     | 
| 
      
 13 
     | 
    
         
            +
                  def self.user_data_dir
         
     | 
| 
      
 14 
     | 
    
         
            +
                    dir = false
         
     | 
| 
      
 15 
     | 
    
         
            +
             
     | 
| 
      
 16 
     | 
    
         
            +
                    Dir.foreach('.') do |item|
         
     | 
| 
      
 17 
     | 
    
         
            +
                      next if item == '..' or !File.directory?(item)
         
     | 
| 
      
 18 
     | 
    
         
            +
                      dir = item if File.exists?( File.join(item, CABI_DATA_ID) )
         
     | 
| 
      
 19 
     | 
    
         
            +
                      break if dir
         
     | 
| 
      
 20 
     | 
    
         
            +
                    end
         
     | 
| 
      
 21 
     | 
    
         
            +
             
     | 
| 
      
 22 
     | 
    
         
            +
                    dir
         
     | 
| 
      
 23 
     | 
    
         
            +
                  end
         
     | 
| 
      
 24 
     | 
    
         
            +
             
     | 
| 
      
 25 
     | 
    
         
            +
              end
         
     | 
| 
      
 26 
     | 
    
         
            +
             
     | 
| 
      
 27 
     | 
    
         
            +
              # Helpers for setting/getting data dir.
         
     | 
| 
      
 28 
     | 
    
         
            +
              def self.data_dir
         
     | 
| 
      
 29 
     | 
    
         
            +
                dir             = Data.user_data_dir || CABI_DATA_DIR
         
     | 
| 
      
 30 
     | 
    
         
            +
                @@data_dir      = File.expand_path(dir)
         
     | 
| 
      
 31 
     | 
    
         
            +
                raise LoadError.new "Could not find cabi data folder!" unless File.exists? @@data_dir
         
     | 
| 
      
 32 
     | 
    
         
            +
                @@data_dir
         
     | 
| 
      
 33 
     | 
    
         
            +
              end
         
     | 
| 
      
 34 
     | 
    
         
            +
             
     | 
| 
      
 35 
     | 
    
         
            +
              def self.reset_data_dir
         
     | 
| 
      
 36 
     | 
    
         
            +
                @@data_dir = nil
         
     | 
| 
      
 37 
     | 
    
         
            +
              end
         
     | 
| 
      
 38 
     | 
    
         
            +
             
     | 
| 
      
 39 
     | 
    
         
            +
            end
         
     | 
    
        data/lib/datafile.rb
    CHANGED
    
    | 
         @@ -64,7 +64,7 @@ module Cabi 
     | 
|
| 
       64 
64 
     | 
    
         | 
| 
       65 
65 
     | 
    
         
             
                def self.id_array(id)
         
     | 
| 
       66 
66 
     | 
    
         
             
                  id = id.split( DELIMITER )
         
     | 
| 
       67 
     | 
    
         
            -
                  [Cabi. 
     | 
| 
      
 67 
     | 
    
         
            +
                  [Cabi.data_dir] + id
         
     | 
| 
       68 
68 
     | 
    
         
             
                end
         
     | 
| 
       69 
69 
     | 
    
         | 
| 
       70 
70 
     | 
    
         
             
                def self.exists?(id)
         
     | 
| 
         @@ -94,7 +94,7 @@ module Cabi 
     | 
|
| 
       94 
94 
     | 
    
         
             
                  id.each_with_index do |key, index|
         
     | 
| 
       95 
95 
     | 
    
         
             
                    break if val
         
     | 
| 
       96 
96 
     | 
    
         | 
| 
       97 
     | 
    
         
            -
                    a                 =  [Cabi. 
     | 
| 
      
 97 
     | 
    
         
            +
                    a                 =  [Cabi.data_dir] + id[0..index] 
         
     | 
| 
       98 
98 
     | 
    
         
             
                    a[ a.length - 1 ] =  a[a.length - 1 ] + YAML_EXT
         
     | 
| 
       99 
99 
     | 
    
         
             
                    f = File.join( *a )
         
     | 
| 
       100 
100 
     | 
    
         | 
    
        metadata
    CHANGED
    
    | 
         @@ -1,7 +1,7 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            --- !ruby/object:Gem::Specification
         
     | 
| 
       2 
2 
     | 
    
         
             
            name: cabi
         
     | 
| 
       3 
3 
     | 
    
         
             
            version: !ruby/object:Gem::Version
         
     | 
| 
       4 
     | 
    
         
            -
              version: 0.1. 
     | 
| 
      
 4 
     | 
    
         
            +
              version: 0.1.2
         
     | 
| 
       5 
5 
     | 
    
         
             
            platform: ruby
         
     | 
| 
       6 
6 
     | 
    
         
             
            authors:
         
     | 
| 
       7 
7 
     | 
    
         
             
            - Brian Gonzalez
         
     | 
| 
         @@ -43,10 +43,10 @@ files: 
     | 
|
| 
       43 
43 
     | 
    
         
             
            - cabi.gemspec
         
     | 
| 
       44 
44 
     | 
    
         
             
            - bin/cabi
         
     | 
| 
       45 
45 
     | 
    
         
             
            - lib/cabi.rb
         
     | 
| 
       46 
     | 
    
         
            -
            - lib/ 
     | 
| 
      
 46 
     | 
    
         
            +
            - lib/data.rb
         
     | 
| 
       47 
47 
     | 
    
         
             
            - lib/datafile.rb
         
     | 
| 
       48 
48 
     | 
    
         
             
            - lib/hash.rb
         
     | 
| 
       49 
     | 
    
         
            -
            - data/cabi- 
     | 
| 
      
 49 
     | 
    
         
            +
            - data/cabi-data.tar.gz
         
     | 
| 
       50 
50 
     | 
    
         
             
            - data/cabi.svg
         
     | 
| 
       51 
51 
     | 
    
         
             
            homepage: http://github.com/briangonzalez/cabi-gem
         
     | 
| 
       52 
52 
     | 
    
         
             
            licenses:
         
     | 
    
        data/lib/cache.rb
    DELETED
    
    | 
         @@ -1,39 +0,0 @@ 
     | 
|
| 
       1 
     | 
    
         
            -
            module Cabi
         
     | 
| 
       2 
     | 
    
         
            -
             
     | 
| 
       3 
     | 
    
         
            -
              class Cache
         
     | 
| 
       4 
     | 
    
         
            -
             
     | 
| 
       5 
     | 
    
         
            -
                  def self.read(id)
         
     | 
| 
       6 
     | 
    
         
            -
                    DataFile.contents(id) || nil
         
     | 
| 
       7 
     | 
    
         
            -
                  end
         
     | 
| 
       8 
     | 
    
         
            -
             
     | 
| 
       9 
     | 
    
         
            -
                  def self.write(id, content)
         
     | 
| 
       10 
     | 
    
         
            -
                    file = DataFile.write(id, content)
         
     | 
| 
       11 
     | 
    
         
            -
                  end
         
     | 
| 
       12 
     | 
    
         
            -
             
     | 
| 
       13 
     | 
    
         
            -
                  def self.user_cache_dir
         
     | 
| 
       14 
     | 
    
         
            -
                    dir = false
         
     | 
| 
       15 
     | 
    
         
            -
             
     | 
| 
       16 
     | 
    
         
            -
                    Dir.foreach('.') do |item|
         
     | 
| 
       17 
     | 
    
         
            -
                      next if item == '..' or !File.directory?(item)
         
     | 
| 
       18 
     | 
    
         
            -
                      dir = item if File.exists?( File.join(item, CABI_CACHE_ID) )
         
     | 
| 
       19 
     | 
    
         
            -
                      break if dir
         
     | 
| 
       20 
     | 
    
         
            -
                    end
         
     | 
| 
       21 
     | 
    
         
            -
             
     | 
| 
       22 
     | 
    
         
            -
                    dir
         
     | 
| 
       23 
     | 
    
         
            -
                  end
         
     | 
| 
       24 
     | 
    
         
            -
             
     | 
| 
       25 
     | 
    
         
            -
              end
         
     | 
| 
       26 
     | 
    
         
            -
             
     | 
| 
       27 
     | 
    
         
            -
              # Helpers for setting/getting cache dir.
         
     | 
| 
       28 
     | 
    
         
            -
              def self.cache_dir
         
     | 
| 
       29 
     | 
    
         
            -
                dir             = Cache.user_cache_dir || CABI_CACHE_DIR
         
     | 
| 
       30 
     | 
    
         
            -
                @@cache_dir     = File.expand_path(dir)
         
     | 
| 
       31 
     | 
    
         
            -
                raise LoadError.new "Could not find cabi cache folder!" unless File.exists? @@cache_dir
         
     | 
| 
       32 
     | 
    
         
            -
                @@cache_dir
         
     | 
| 
       33 
     | 
    
         
            -
              end
         
     | 
| 
       34 
     | 
    
         
            -
             
     | 
| 
       35 
     | 
    
         
            -
              def self.reset_cache_dir
         
     | 
| 
       36 
     | 
    
         
            -
                @@cache_dir = nil
         
     | 
| 
       37 
     | 
    
         
            -
              end
         
     | 
| 
       38 
     | 
    
         
            -
             
     | 
| 
       39 
     | 
    
         
            -
            end
         
     |