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
|