beerdb 0.9.13 → 0.10.0
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/HISTORY.md +3 -0
- data/Manifest.txt +2 -21
- data/README.md +1 -78
- data/Rakefile +12 -21
- data/lib/beerdb/cli/main.rb +49 -39
- data/lib/beerdb/{version.rb → cli/version.rb} +12 -6
- data/lib/beerdb/console.rb +4 -10
- data/lib/beerdb.rb +10 -106
- metadata +59 -117
- data/.gemtest +0 -0
- data/History.md +0 -3
- data/lib/beerdb/deleter.rb +0 -27
- data/lib/beerdb/models/beer.rb +0 -201
- data/lib/beerdb/models/brand.rb +0 -62
- data/lib/beerdb/models/brewery.rb +0 -256
- data/lib/beerdb/models/forward.rb +0 -46
- data/lib/beerdb/models/tag.rb +0 -13
- data/lib/beerdb/models/world/city.rb +0 -14
- data/lib/beerdb/models/world/country.rb +0 -14
- data/lib/beerdb/models/world/region.rb +0 -14
- data/lib/beerdb/reader.rb +0 -219
- data/lib/beerdb/reader_file.rb +0 -62
- data/lib/beerdb/reader_zip.rb +0 -112
- data/lib/beerdb/schema.rb +0 -195
- data/lib/beerdb/serializers/beer.rb +0 -45
- data/lib/beerdb/serializers/brewery.rb +0 -46
- data/lib/beerdb/stats.rb +0 -27
- data/test/helper.rb +0 -72
- data/test/test_fixture_matchers.rb +0 -85
- data/test/test_values.rb +0 -240
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: bd5af8feb16a5a25aac740c6cc34a08aec1109b6
|
4
|
+
data.tar.gz: dd4b95c41c8a89754e9f3c864234ba00758f8437
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: 37052c2727905e75c047d20ef2c8f300f58523102108ae6a670e3d945debbfa820c78b329135d308659714f999f970dc1eba6121fd5080be9383e97edecee28a
|
7
|
+
data.tar.gz: 9db94348d1f538e861c927eec9edc8358cf0cca72d43435d36f297f6eb7a3311e20c05aee1b15e5df81c32fd4f7edd8a4e82b9e9f88cdb9c54842ade45e7e31c
|
data/HISTORY.md
ADDED
data/Manifest.txt
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
|
1
|
+
HISTORY.md
|
2
2
|
Manifest.txt
|
3
3
|
README.md
|
4
4
|
Rakefile
|
@@ -6,24 +6,5 @@ bin/beerdb
|
|
6
6
|
lib/beerdb.rb
|
7
7
|
lib/beerdb/cli/main.rb
|
8
8
|
lib/beerdb/cli/opts.rb
|
9
|
+
lib/beerdb/cli/version.rb
|
9
10
|
lib/beerdb/console.rb
|
10
|
-
lib/beerdb/deleter.rb
|
11
|
-
lib/beerdb/models/beer.rb
|
12
|
-
lib/beerdb/models/brand.rb
|
13
|
-
lib/beerdb/models/brewery.rb
|
14
|
-
lib/beerdb/models/forward.rb
|
15
|
-
lib/beerdb/models/tag.rb
|
16
|
-
lib/beerdb/models/world/city.rb
|
17
|
-
lib/beerdb/models/world/country.rb
|
18
|
-
lib/beerdb/models/world/region.rb
|
19
|
-
lib/beerdb/reader.rb
|
20
|
-
lib/beerdb/reader_file.rb
|
21
|
-
lib/beerdb/reader_zip.rb
|
22
|
-
lib/beerdb/schema.rb
|
23
|
-
lib/beerdb/serializers/beer.rb
|
24
|
-
lib/beerdb/serializers/brewery.rb
|
25
|
-
lib/beerdb/stats.rb
|
26
|
-
lib/beerdb/version.rb
|
27
|
-
test/helper.rb
|
28
|
-
test/test_fixture_matchers.rb
|
29
|
-
test/test_values.rb
|
data/README.md
CHANGED
@@ -1,6 +1,5 @@
|
|
1
|
-
# beerdb
|
1
|
+
# beerdb gem - open beer database (beer.db) command line tool in ruby
|
2
2
|
|
3
|
-
beer.db Command Line Tool in Ruby
|
4
3
|
|
5
4
|
* home :: [github.com/beerkit/beer.db.ruby](https://github.com/beerkit/beer.db.ruby)
|
6
5
|
* bugs :: [github.com/beerkit/beer.db.ruby/issues](https://github.com/beerkit/beer.db.ruby/issues)
|
@@ -35,82 +34,6 @@ beer.db Command Line Tool in Ruby
|
|
35
34
|
-t, --trace Display backtrace when an error occurs
|
36
35
|
|
37
36
|
|
38
|
-
## Usage Models
|
39
|
-
|
40
|
-
Brewery Model
|
41
|
-
|
42
|
-
```
|
43
|
-
by = Brewery.find_by_key( 'guinness' )
|
44
|
-
|
45
|
-
by.title
|
46
|
-
=> 'St. James's Gate Brewery / Guinness Brewery'
|
47
|
-
|
48
|
-
by.country.key
|
49
|
-
=> 'ie'
|
50
|
-
|
51
|
-
by.country.title
|
52
|
-
=> 'Ireland'
|
53
|
-
|
54
|
-
by.city.title
|
55
|
-
=> 'Dublin'
|
56
|
-
|
57
|
-
by.beers.first
|
58
|
-
=> 'Guinness', 4.2
|
59
|
-
|
60
|
-
...
|
61
|
-
```
|
62
|
-
|
63
|
-
|
64
|
-
Beer Model
|
65
|
-
|
66
|
-
```
|
67
|
-
b = Beer.find_by_key( 'guinness' )
|
68
|
-
|
69
|
-
b.title
|
70
|
-
=> 'Guinness'
|
71
|
-
|
72
|
-
b.abv
|
73
|
-
=> 4.2
|
74
|
-
|
75
|
-
b.tags
|
76
|
-
=> 'irish_dry_stout', 'dry_stout', 'stout'
|
77
|
-
|
78
|
-
b.brewery.title
|
79
|
-
=> 'St. James's Gate Brewery / Guinness Brewery'
|
80
|
-
|
81
|
-
...
|
82
|
-
```
|
83
|
-
|
84
|
-
|
85
|
-
Country Model
|
86
|
-
|
87
|
-
```
|
88
|
-
at = Country.find_by_key( 'at' )
|
89
|
-
|
90
|
-
at.beers
|
91
|
-
=> 'Weitra Helles', 'Hadmar', 'Zwettler Original', ...
|
92
|
-
|
93
|
-
at.breweries
|
94
|
-
=> 'Weitra Bräu Bierwerkstatt', 'Zwettler Brauerei', ...
|
95
|
-
|
96
|
-
...
|
97
|
-
```
|
98
|
-
|
99
|
-
|
100
|
-
City Model
|
101
|
-
|
102
|
-
```
|
103
|
-
wien = City.find_by_key( 'wien' )
|
104
|
-
|
105
|
-
wien.beers
|
106
|
-
=> 'Ottakringer Helles', 'Ottakringer (Gold Fassl) Zwickl', ...
|
107
|
-
|
108
|
-
wien.breweries
|
109
|
-
=> 'Ottakringer Brauerei'
|
110
|
-
|
111
|
-
...
|
112
|
-
```
|
113
|
-
|
114
37
|
|
115
38
|
## Install
|
116
39
|
|
data/Rakefile
CHANGED
@@ -1,11 +1,11 @@
|
|
1
1
|
require 'hoe'
|
2
|
-
require './lib/beerdb/version.rb'
|
2
|
+
require './lib/beerdb/cli/version.rb'
|
3
3
|
|
4
4
|
|
5
5
|
Hoe.spec 'beerdb' do
|
6
|
-
|
7
|
-
self.version =
|
8
|
-
|
6
|
+
|
7
|
+
self.version = BeerDbCli::VERSION
|
8
|
+
|
9
9
|
self.summary = 'beerdb - beer.db command line tool'
|
10
10
|
self.description = summary
|
11
11
|
|
@@ -16,32 +16,23 @@ Hoe.spec 'beerdb' do
|
|
16
16
|
|
17
17
|
# switch extension to .markdown for gihub formatting
|
18
18
|
self.readme_file = 'README.md'
|
19
|
-
self.history_file = '
|
19
|
+
self.history_file = 'HISTORY.md'
|
20
20
|
|
21
21
|
self.extra_deps = [
|
22
|
-
['
|
23
|
-
['logutils'],
|
24
|
-
['textutils'],
|
25
|
-
['worlddb', '>= 2.0.2'], # NB: worlddb already includes
|
26
|
-
# - logutils
|
27
|
-
# - textutils
|
28
|
-
['tagutils'], # tags n tagging tables
|
29
|
-
['activerecord-utils'], # extras e.g. rnd, find_by! for 3.x etc.
|
30
|
-
['fetcher', '>= 0.3'],
|
22
|
+
['beerdb-models', '>= 0.10.0'],
|
31
23
|
|
32
|
-
|
33
|
-
['
|
24
|
+
['datafile', '>= 0.1.1'],
|
25
|
+
['fetcher', '>= 0.4.4'],
|
34
26
|
|
35
|
-
|
36
|
-
|
37
|
-
['
|
38
|
-
### ['sqlite3', '~> 1.3'] # NB: install on your own; remove dependency
|
27
|
+
## 3rd party
|
28
|
+
['gli', '>= 2.12.2'],
|
29
|
+
['sqlite3']
|
39
30
|
]
|
40
31
|
|
41
32
|
self.licenses = ['Public Domain']
|
42
33
|
|
43
34
|
self.spec_extras = {
|
44
|
-
|
35
|
+
required_ruby_version: '>= 1.9.2'
|
45
36
|
}
|
46
37
|
|
47
38
|
end
|
data/lib/beerdb/cli/main.rb
CHANGED
@@ -1,24 +1,58 @@
|
|
1
1
|
# encoding: utf-8
|
2
2
|
|
3
|
-
|
4
|
-
|
5
|
-
include GLI::App
|
3
|
+
### NOTE: wrap gli config into a class
|
4
|
+
## see github.com/davetron5000/gli/issues/153
|
6
5
|
|
7
6
|
|
8
|
-
|
9
|
-
require 'beerdb/cli/opts'
|
7
|
+
module BeerDb
|
10
8
|
|
9
|
+
class Tool
|
10
|
+
def initialize
|
11
|
+
LogUtils::Logger.root.level = :info # set logging level to info
|
12
|
+
end
|
11
13
|
|
14
|
+
def run( args )
|
15
|
+
puts BeerDbCli.banner
|
16
|
+
Toolii.run( args )
|
17
|
+
end
|
18
|
+
end
|
19
|
+
|
20
|
+
|
21
|
+
class Toolii
|
22
|
+
extend GLI::App
|
23
|
+
|
24
|
+
def self.logger=(value) @@logger=value; end
|
25
|
+
def self.logger() @@logger; end
|
26
|
+
|
27
|
+
## todo: find a better name e.g. change to settings? config? safe_opts? why? why not?
|
28
|
+
def self.opts=(value) @@opts = value; end
|
29
|
+
def self.opts() @@opts; end
|
30
|
+
|
31
|
+
def self.connect_to_db( options )
|
32
|
+
puts "working directory: #{Dir.pwd}"
|
33
|
+
|
34
|
+
db_config = {
|
35
|
+
adapter: 'sqlite3',
|
36
|
+
database: "#{options.db_path}/#{options.db_name}"
|
37
|
+
}
|
38
|
+
|
39
|
+
puts "Connecting to db using settings: "
|
40
|
+
pp db_config
|
41
|
+
|
42
|
+
ActiveRecord::Base.establish_connection( db_config )
|
43
|
+
|
44
|
+
LogDb.setup # start logging to db (that is, save logs in logs table in db)
|
45
|
+
end
|
12
46
|
|
13
|
-
program_desc 'beer.db command line tool'
|
14
|
-
version BeerDb::VERSION
|
15
47
|
|
16
48
|
|
17
|
-
LogUtils::Logger.root.level = :info # set logging level to info
|
18
49
|
logger = LogUtils::Logger.root
|
50
|
+
opts = BeerDb::Opts.new
|
19
51
|
|
20
52
|
|
21
|
-
|
53
|
+
|
54
|
+
program_desc 'beer.db command line tool'
|
55
|
+
version BeerDbCli::VERSION
|
22
56
|
|
23
57
|
|
24
58
|
### global option (required)
|
@@ -42,25 +76,6 @@ switch [:q, :quiet], negatable: false
|
|
42
76
|
|
43
77
|
|
44
78
|
|
45
|
-
def connect_to_db( options )
|
46
|
-
puts BeerDb.banner
|
47
|
-
|
48
|
-
puts "working directory: #{Dir.pwd}"
|
49
|
-
|
50
|
-
db_config = {
|
51
|
-
:adapter => 'sqlite3',
|
52
|
-
:database => "#{options.db_path}/#{options.db_name}"
|
53
|
-
}
|
54
|
-
|
55
|
-
puts "Connecting to db using settings: "
|
56
|
-
pp db_config
|
57
|
-
|
58
|
-
ActiveRecord::Base.establish_connection( db_config )
|
59
|
-
|
60
|
-
LogDb.setup # turn on logging to db
|
61
|
-
end
|
62
|
-
|
63
|
-
|
64
79
|
desc 'Create DB schema'
|
65
80
|
command [:create] do |c|
|
66
81
|
|
@@ -78,11 +93,7 @@ command [:create] do |c|
|
|
78
93
|
BeerDb::CreateDbExtrasNotes.new.up
|
79
94
|
BeerDb::CreateDbExtrasDrinks.new.up
|
80
95
|
else
|
81
|
-
|
82
|
-
ConfDb.create
|
83
|
-
TagDb.create
|
84
|
-
WorldDb.create
|
85
|
-
BeerDb.create
|
96
|
+
BeerDb.create_all
|
86
97
|
end
|
87
98
|
puts 'Done.'
|
88
99
|
end # action
|
@@ -109,11 +120,7 @@ command [:setup,:s] do |c|
|
|
109
120
|
## todo: document optional setup profile arg (defaults to all)
|
110
121
|
setup = args[0] || 'all'
|
111
122
|
|
112
|
-
|
113
|
-
ConfDb.create
|
114
|
-
TagDb.create
|
115
|
-
WorldDb.create
|
116
|
-
BeerDb.create
|
123
|
+
BeerDb.create_all
|
117
124
|
|
118
125
|
WorldDb.read_all( opts.world_data_path )
|
119
126
|
BeerDb.read_setup( "setups/#{setup}", opts.data_path )
|
@@ -311,4 +318,7 @@ on_error do |e|
|
|
311
318
|
end
|
312
319
|
|
313
320
|
|
314
|
-
exit run(ARGV)
|
321
|
+
### exit run(ARGV) ## note: use Toolii.run( ARGV ) outside of class
|
322
|
+
|
323
|
+
end # class Toolii
|
324
|
+
end # module BeerDb
|
@@ -1,8 +1,13 @@
|
|
1
|
+
# encoding: utf-8
|
1
2
|
|
2
|
-
|
3
|
-
|
4
|
-
|
5
|
-
|
3
|
+
# Note: BeerDb::VERSION gets used by core, that is, beerdb-models
|
4
|
+
|
5
|
+
|
6
|
+
module BeerDbCli # todo/check - rename to BeerDbTool or BeerDbCommands or BeerDbShell ??
|
7
|
+
|
8
|
+
MAJOR = 0
|
9
|
+
MINOR = 10
|
10
|
+
PATCH = 0
|
6
11
|
VERSION = [MAJOR,MINOR,PATCH].join('.')
|
7
12
|
|
8
13
|
def self.version
|
@@ -14,7 +19,8 @@ module BeerDb
|
|
14
19
|
end
|
15
20
|
|
16
21
|
def self.root
|
17
|
-
"#{File.expand_path( File.dirname(File.dirname(File.dirname(__FILE__))) )}"
|
22
|
+
"#{File.expand_path( File.dirname(File.dirname(File.dirname(File.dirname(__FILE__)))) )}"
|
18
23
|
end
|
19
|
-
|
24
|
+
|
25
|
+
end # module BeerDbCli
|
20
26
|
|
data/lib/beerdb/console.rb
CHANGED
@@ -1,15 +1,9 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
|
1
3
|
## for use to run with interactive ruby (irb)
|
2
4
|
## e.g. irb -r sportdb/console
|
3
5
|
|
4
|
-
require 'beerdb'
|
5
|
-
|
6
|
-
# some ruby stdlibs
|
7
|
-
|
8
|
-
require 'logger'
|
9
|
-
require 'pp' # pretty printer
|
10
|
-
require 'uri'
|
11
|
-
require 'json'
|
12
|
-
require 'yaml'
|
6
|
+
require 'beerdb/models'
|
13
7
|
|
14
8
|
|
15
9
|
## shortcuts for models
|
@@ -29,7 +23,7 @@ Prop = WorldDb::Models::Prop
|
|
29
23
|
|
30
24
|
DB_CONFIG = {
|
31
25
|
adapter: 'sqlite3',
|
32
|
-
database: 'beer.db'
|
26
|
+
database: './beer.db'
|
33
27
|
}
|
34
28
|
|
35
29
|
pp DB_CONFIG
|
data/lib/beerdb.rb
CHANGED
@@ -1,123 +1,27 @@
|
|
1
|
-
|
2
|
-
# NB: for local testing run like:
|
3
|
-
#
|
4
|
-
# 1.9.x: ruby -Ilib lib/beerdb.rb
|
1
|
+
# encoding: utf-8
|
5
2
|
|
6
|
-
#
|
3
|
+
require 'beerdb/models' # Note: pull in all required deps via beerdb-models
|
7
4
|
|
8
|
-
## stdlibs
|
9
|
-
# -- get required already by worlddb (remove ??)
|
10
5
|
|
11
|
-
require '
|
12
|
-
require 'pp'
|
13
|
-
require 'logger'
|
14
|
-
require 'optparse'
|
15
|
-
require 'fileutils'
|
16
|
-
require 'erb'
|
17
|
-
require 'uri'
|
18
|
-
|
19
|
-
|
20
|
-
# 3rd party gems / libs
|
21
|
-
|
22
|
-
require 'zip' ## (optionally for textutils e.g. soft dependency - pull in here)
|
23
|
-
|
24
|
-
|
25
|
-
# -- get required by worlddb
|
26
|
-
# require 'active_record' ## todo: add sqlite3? etc.
|
27
|
-
# require 'logutils'
|
28
|
-
# require 'textutils'
|
29
|
-
|
30
|
-
require 'worlddb'
|
6
|
+
require 'gli'
|
31
7
|
|
8
|
+
require 'datafile'
|
9
|
+
require 'fetcher'
|
32
10
|
|
33
11
|
# our own code
|
34
12
|
|
35
|
-
require 'beerdb/version' ## version always goes first
|
36
|
-
|
37
|
-
require 'beerdb/
|
38
|
-
require 'beerdb/models/world/country'
|
39
|
-
require 'beerdb/models/world/region'
|
40
|
-
require 'beerdb/models/world/city'
|
41
|
-
require 'beerdb/models/tag'
|
42
|
-
require 'beerdb/models/beer'
|
43
|
-
require 'beerdb/models/brand'
|
44
|
-
require 'beerdb/models/brewery'
|
45
|
-
|
46
|
-
|
47
|
-
require 'beerdb/serializers/beer'
|
48
|
-
require 'beerdb/serializers/brewery'
|
49
|
-
|
50
|
-
require 'beerdb/schema'
|
51
|
-
require 'beerdb/reader'
|
52
|
-
require 'beerdb/reader_file'
|
53
|
-
require 'beerdb/reader_zip'
|
54
|
-
require 'beerdb/deleter'
|
55
|
-
require 'beerdb/stats'
|
13
|
+
require 'beerdb/cli/version' ## version always goes first
|
14
|
+
require 'beerdb/cli/opts'
|
15
|
+
require 'beerdb/cli/main'
|
56
16
|
|
57
17
|
|
58
18
|
module BeerDb
|
59
19
|
|
60
20
|
def self.main
|
61
|
-
|
62
|
-
# Runner.new.run(ARGV) old code
|
63
|
-
end
|
64
|
-
|
65
|
-
def self.create
|
66
|
-
CreateDb.new.up
|
67
|
-
|
68
|
-
### fix: make optional do NOT auto create here
|
69
|
-
### fix: use if defined? BeerDbNote or similar or/and check if table exist ??
|
70
|
-
### or move to beerdb-note ??
|
71
|
-
|
72
|
-
# CreateDbExtrasUsers.new.up
|
73
|
-
# CreateDbExtrasBookmarks.new.up
|
74
|
-
# CreateDbExtrasDrinks.new.up
|
75
|
-
# CreateDbExtrasNotes.new.up
|
76
|
-
|
77
|
-
ConfDb::Model::Prop.create!( key: 'db.schema.beer.version', value: VERSION )
|
78
|
-
end
|
79
|
-
|
80
|
-
|
81
|
-
def self.read( ary, include_path )
|
82
|
-
reader = Reader.new( include_path )
|
83
|
-
ary.each do |name|
|
84
|
-
reader.load( name )
|
85
|
-
end
|
86
|
-
end
|
87
|
-
|
88
|
-
def self.read_setup( setup, include_path, opts={} )
|
89
|
-
reader = Reader.new( include_path, opts )
|
90
|
-
reader.load_setup( setup )
|
91
|
-
end
|
92
|
-
|
93
|
-
def self.read_setup_from_zip( zip_name, setup, include_path, opts={} ) ## todo/check - use a better (shorter) name ??
|
94
|
-
reader = ZipReader.new( zip_name, include_path, opts )
|
95
|
-
reader.load_setup( setup )
|
96
|
-
reader.close
|
21
|
+
exit Tool.new.run(ARGV)
|
97
22
|
end
|
98
23
|
|
99
|
-
def self.read_all( include_path, opts={} ) # load all builtins (using plain text reader); helper for convenience
|
100
|
-
read_setup( 'setups/all', include_path, opts )
|
101
|
-
end # method read_all
|
102
|
-
|
103
|
-
|
104
|
-
# delete ALL records (use with care!)
|
105
|
-
def self.delete!
|
106
|
-
puts '*** deleting beer table records/data...'
|
107
|
-
Deleter.new.run
|
108
|
-
end # method delete!
|
109
|
-
|
110
|
-
def self.tables
|
111
|
-
Stats.new.tables
|
112
|
-
end
|
113
|
-
|
114
|
-
|
115
24
|
end # module BeerDb
|
116
25
|
|
117
26
|
|
118
|
-
if __FILE__ == $0
|
119
|
-
BeerDb.main
|
120
|
-
else
|
121
|
-
# say hello
|
122
|
-
puts BeerDb.banner
|
123
|
-
end
|
27
|
+
BeerDb.main if __FILE__ == $0
|