schemadoc 0.1.0 → 1.0.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 +4 -4
- data/Manifest.txt +1 -0
- data/README.md +120 -2
- data/lib/schemadoc/cli/opts.rb +1 -17
- data/lib/schemadoc/cli/runner.rb +3 -12
- data/lib/schemadoc/version.rb +2 -3
- data/lib/schemadoc/worker.rb +20 -3
- data/test/config/beer.yml +43 -0
- data/test/config/football.yml +1 -0
- metadata +3 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 13f07f4218221279bd1bba7f357b5b98f2424e8a
|
4
|
+
data.tar.gz: 203e0161acb77b78e3e7a48b1b76397fd4d2f4d0
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: b5e50bf3b061b3a9c6914076328e660a3ab60e41c691c9e57f479bb6a44c1b09908b9d94da7858b2f03f98be82015359753a607c03f21ee2fccd4fef863953cc
|
7
|
+
data.tar.gz: aeee53a2ac4e8a0f8ea9d9bc624bef5bc6e1e6afa267b5b2b2385169f5bf3d084aafd64eb04ebd0efb2c6819631f332e2e3c7ae4502d9085c84349e0307b1d67
|
data/Manifest.txt
CHANGED
data/README.md
CHANGED
@@ -8,9 +8,127 @@ schemadoc gem - document your database schemas (tables, columns, etc.)
|
|
8
8
|
* rdoc :: [rubydoc.info/gems/schemadoc](http://rubydoc.info/gems/schemadoc)
|
9
9
|
|
10
10
|
|
11
|
-
## Usage
|
11
|
+
## Usage Command Line
|
12
12
|
|
13
|
-
|
13
|
+
The `schemadoc` gem includes a command line tool
|
14
|
+
named - surprise, surprise - `schemadoc`. Try:
|
15
|
+
|
16
|
+
~~~
|
17
|
+
$ schemadoc --help
|
18
|
+
~~~
|
19
|
+
|
20
|
+
resulting in:
|
21
|
+
|
22
|
+
~~~
|
23
|
+
schemadoc 1.0.0 - Lets you document your database tables, columns, etc.
|
24
|
+
|
25
|
+
Usage: schemadoc [options]
|
26
|
+
-o, --output PATH Output path (default is '.')
|
27
|
+
-v, --verbose Show debug trace
|
28
|
+
|
29
|
+
Examples:
|
30
|
+
schemadoc # defaults to ./schemadoc.yml
|
31
|
+
schemadoc football.yml
|
32
|
+
~~~
|
33
|
+
|
34
|
+
|
35
|
+
## Configuration
|
36
|
+
|
37
|
+
The `schemadoc` command line tool
|
38
|
+
requires a configuration file (defaults to `./schemadoc.yml` if not
|
39
|
+
passed along).
|
40
|
+
|
41
|
+
**Database Connection Settings - `database` Section**
|
42
|
+
|
43
|
+
Use the `database` section to configure you database connection settings.
|
44
|
+
Example:
|
45
|
+
|
46
|
+
~~~
|
47
|
+
database:
|
48
|
+
adapter: sqlite3
|
49
|
+
database: ./football.db
|
50
|
+
~~~
|
51
|
+
|
52
|
+
**Schema Sections**
|
53
|
+
|
54
|
+
All other sections are interpreted as database schemas.
|
55
|
+
The first section is the "default" schema,
|
56
|
+
that is, all tables not listed in other schemas will get auto-added
|
57
|
+
to the "default" schema.
|
58
|
+
|
59
|
+
|
60
|
+
**Example - `schemadoc.yml`**
|
61
|
+
|
62
|
+
~~~
|
63
|
+
## connection spec
|
64
|
+
|
65
|
+
database:
|
66
|
+
adapter: sqlite3
|
67
|
+
database: ./football.db
|
68
|
+
|
69
|
+
|
70
|
+
## main tables
|
71
|
+
|
72
|
+
football:
|
73
|
+
name: Football
|
74
|
+
|
75
|
+
|
76
|
+
## world tables
|
77
|
+
|
78
|
+
world:
|
79
|
+
name: World
|
80
|
+
tables:
|
81
|
+
- continents
|
82
|
+
- countries
|
83
|
+
- regions
|
84
|
+
- cities
|
85
|
+
- places
|
86
|
+
- names
|
87
|
+
- langs
|
88
|
+
- usages
|
89
|
+
|
90
|
+
## support tables
|
91
|
+
|
92
|
+
support:
|
93
|
+
name: Support
|
94
|
+
tables:
|
95
|
+
- logs
|
96
|
+
- props
|
97
|
+
- tags
|
98
|
+
- taggings
|
99
|
+
~~~
|
100
|
+
|
101
|
+
|
102
|
+
|
103
|
+
## Outputs
|
104
|
+
|
105
|
+
The `schemadoc` tool writes out two json files:
|
106
|
+
|
107
|
+
- `database.json` - includes all schemas, tables, columns, etc.
|
108
|
+
- `symbols.json` - includes all symbols from a to z
|
109
|
+
|
110
|
+
|
111
|
+
## Reports 'n' Templates
|
112
|
+
|
113
|
+
To generate web pages from you json files use a static site generator and
|
114
|
+
a template pack (theme). For example, to use the `book-templates/schema` theme
|
115
|
+
copy your json files in the `_data/` folder and rebuild the site (e.g. $ `jekyll build`).
|
116
|
+
That's it. Enjoy your database schema docu.
|
117
|
+
|
118
|
+
|
119
|
+
|
120
|
+
## Install
|
121
|
+
|
122
|
+
Just install the gem:
|
123
|
+
|
124
|
+
~~~
|
125
|
+
$ gem install schemadoc
|
126
|
+
~~~
|
127
|
+
|
128
|
+
|
129
|
+
## Free Schemadoc Template Packs / Themes
|
130
|
+
|
131
|
+
- [`book-templates/schema`](https://github.com/book-templates/schema) - free schemadoc theme; works w/ Jekyll (and GitHub Pages) static site generator
|
14
132
|
|
15
133
|
|
16
134
|
## License
|
data/lib/schemadoc/cli/opts.rb
CHANGED
@@ -5,23 +5,6 @@ module SchemaDoc
|
|
5
5
|
|
6
6
|
class Opts
|
7
7
|
|
8
|
-
def config_name=(value)
|
9
|
-
@config_name = value
|
10
|
-
end
|
11
|
-
|
12
|
-
def config_name
|
13
|
-
@config_name || 'schemadoc.yml'
|
14
|
-
end
|
15
|
-
|
16
|
-
def config_path=(value)
|
17
|
-
@config_path = value
|
18
|
-
end
|
19
|
-
|
20
|
-
def config_path
|
21
|
-
@config_path || '.'
|
22
|
-
end
|
23
|
-
|
24
|
-
|
25
8
|
def output_path=( value )
|
26
9
|
@output_path = value
|
27
10
|
end
|
@@ -33,3 +16,4 @@ module SchemaDoc
|
|
33
16
|
end # class Opts
|
34
17
|
|
35
18
|
end # module SchemaDoc
|
19
|
+
|
data/lib/schemadoc/cli/runner.rb
CHANGED
@@ -27,16 +27,6 @@ module SchemaDoc
|
|
27
27
|
|
28
28
|
cmd.banner = "Usage: schemadoc [options]"
|
29
29
|
|
30
|
-
### use -c and --config / why? why not??
|
31
|
-
### use -n and --name / why? why not??
|
32
|
-
|
33
|
-
cmd.on( '-f', '--file NAME', "Configuration name (default is '#{opts.config_name}')" ) do |s|
|
34
|
-
opts.config_name = s
|
35
|
-
end
|
36
|
-
cmd.on( '-d', '--dir PATH', "Configuration path (default is '#{opts.config_path}')" ) do |s|
|
37
|
-
opts.config_path = s
|
38
|
-
end
|
39
|
-
|
40
30
|
cmd.on( '-o', '--output PATH', "Output path (default is '#{opts.output_path}')" ) do |s|
|
41
31
|
opts.output_path = s
|
42
32
|
end
|
@@ -73,10 +63,11 @@ EOS
|
|
73
63
|
|
74
64
|
puts SchemaDoc.banner
|
75
65
|
|
76
|
-
|
66
|
+
arg = args[0] || './schemadoc.yml'
|
67
|
+
config = YAML.load_file( arg )
|
77
68
|
pp config
|
78
69
|
|
79
|
-
worker = Worker.new( config ).run
|
70
|
+
worker = Worker.new( config ).run
|
80
71
|
|
81
72
|
puts 'Done.'
|
82
73
|
|
data/lib/schemadoc/version.rb
CHANGED
data/lib/schemadoc/worker.rb
CHANGED
@@ -66,7 +66,7 @@ class Worker
|
|
66
66
|
@con.columns( name ).each do |col|
|
67
67
|
t[:columns] << {
|
68
68
|
name: col.name,
|
69
|
-
type: col.sql_type,
|
69
|
+
type: col.sql_type.downcase, # note: use integer (instead of INTEGER)
|
70
70
|
default: col.default,
|
71
71
|
null: col.null
|
72
72
|
}
|
@@ -115,13 +115,30 @@ class Worker
|
|
115
115
|
|
116
116
|
table_key = name[0].upcase
|
117
117
|
symbols[table_key][:tables] << name
|
118
|
-
|
118
|
+
|
119
119
|
@con.columns( name ).each do |col|
|
120
120
|
col_key = col.name[0].upcase
|
121
|
-
symbols[col_key][:columns]
|
121
|
+
cols_ary = symbols[col_key][:columns]
|
122
|
+
|
123
|
+
## search for column name
|
124
|
+
col_hash = cols_ary.find { |item| item[:name] == col.name }
|
125
|
+
if col_hash.nil?
|
126
|
+
col_hash = { name: col.name, tables: [] }
|
127
|
+
cols_ary << col_hash
|
128
|
+
end
|
129
|
+
|
130
|
+
col_hash[:tables] << name
|
122
131
|
end
|
123
132
|
end
|
124
133
|
|
134
|
+
## sort tables, cols and (in tables)
|
135
|
+
symbols.each do |k,h|
|
136
|
+
h[:tables] = h[:tables].sort
|
137
|
+
|
138
|
+
h[:columns] = h[:columns].sort { |l,r| l[:name] <=> r[:name] }
|
139
|
+
h[:columns].each { |col| col[:tables] = col[:tables].sort }
|
140
|
+
end
|
141
|
+
|
125
142
|
data = []
|
126
143
|
symbols.each do |k,v|
|
127
144
|
data << v # turn data json into an array of letters (ever letter is a hash w/ name,tables,columns,etc.)
|
@@ -0,0 +1,43 @@
|
|
1
|
+
###################
|
2
|
+
# connection spec
|
3
|
+
|
4
|
+
database:
|
5
|
+
adapter: sqlite3
|
6
|
+
database: ./beer.db
|
7
|
+
|
8
|
+
|
9
|
+
###############
|
10
|
+
# main tables
|
11
|
+
|
12
|
+
beer:
|
13
|
+
name: Beer
|
14
|
+
|
15
|
+
|
16
|
+
############
|
17
|
+
# world tables
|
18
|
+
|
19
|
+
world:
|
20
|
+
name: World
|
21
|
+
tables:
|
22
|
+
- continents
|
23
|
+
- countries
|
24
|
+
- regions
|
25
|
+
- cities
|
26
|
+
- places
|
27
|
+
- names
|
28
|
+
- langs
|
29
|
+
- usages
|
30
|
+
- country_codes
|
31
|
+
|
32
|
+
##########
|
33
|
+
# support tables
|
34
|
+
|
35
|
+
support:
|
36
|
+
name: Support
|
37
|
+
tables:
|
38
|
+
- logs
|
39
|
+
- props
|
40
|
+
- tags
|
41
|
+
- taggings
|
42
|
+
|
43
|
+
|
data/test/config/football.yml
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: schemadoc
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version:
|
4
|
+
version: 1.0.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Gerald Bauer
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2015-02-
|
11
|
+
date: 2015-02-05 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: logutils
|
@@ -87,6 +87,7 @@ files:
|
|
87
87
|
- lib/schemadoc/cli/runner.rb
|
88
88
|
- lib/schemadoc/version.rb
|
89
89
|
- lib/schemadoc/worker.rb
|
90
|
+
- test/config/beer.yml
|
90
91
|
- test/config/football.yml
|
91
92
|
homepage: https://github.com/rubylibs/schemadoc
|
92
93
|
licenses:
|