prmd 0.1.0 → 0.1.1
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 +8 -8
- data/CONTRIBUTING.md +18 -0
- data/CONTRIBUTORS.md +2 -0
- data/Gemfile.lock +6 -6
- data/README.md +61 -37
- data/bin/prmd +0 -3
- data/lib/prmd/commands/init.rb +1 -5
- data/lib/prmd/version.rb +1 -1
- data/lib/prmd/views/endpoint.erb +1 -0
- metadata +3 -2
checksums.yaml
CHANGED
@@ -1,15 +1,15 @@
|
|
1
1
|
---
|
2
2
|
!binary "U0hBMQ==":
|
3
3
|
metadata.gz: !binary |-
|
4
|
-
|
4
|
+
NmYyYTg0MjRlYWQwZjBlZjFlMGU2OTVjODUyODYyZDQxOTZjMDgyNA==
|
5
5
|
data.tar.gz: !binary |-
|
6
|
-
|
6
|
+
MjNiZDJhNzdhMDU1M2MyYTNjOTViODgxMGJkZTMyNGY2YTRhODcwMg==
|
7
7
|
SHA512:
|
8
8
|
metadata.gz: !binary |-
|
9
|
-
|
10
|
-
|
11
|
-
|
9
|
+
ZmI5ZDU5ZTBkMGNmODQyYWNkYmY4Y2IxMTJlY2QxMGYwNTgyY2MwZDI0Njg0
|
10
|
+
OTczYTU2ZDI0ODBjZTJkNGIxMTQwYTUwNDdkNzA5ZmMzNjM5ZTgyNzlmYzEy
|
11
|
+
YjI3YmNiYjkxYzVlNmU3NDc1ZDQ1ZTMzZDliODZhZDcyNWI0NGU=
|
12
12
|
data.tar.gz: !binary |-
|
13
|
-
|
14
|
-
|
15
|
-
|
13
|
+
OTEyYTllYzkzODRkYWM3ODQ2NGM0MTA1Y2UyMjRiNDA4ZjMxZDUzMzI3YTRj
|
14
|
+
MjQyYTc1NmMyMWJmZTY4MTMxMDQ0OWYxYjBlZTNkMmVhYjAyNGQ2Yzc1Njg4
|
15
|
+
NjcyZWZiMGM0MTZhODc4Y2U1ZWNjNTIzNjFhOTQ1NzI4ZTZlN2I=
|
data/CONTRIBUTING.md
ADDED
@@ -0,0 +1,18 @@
|
|
1
|
+
## Getting Involved
|
2
|
+
|
3
|
+
New contributors are always welcome, when it doubt please ask questions. We strive to be an open and welcoming community. Please be nice to one another.
|
4
|
+
|
5
|
+
### Coding
|
6
|
+
|
7
|
+
* Pick a task:
|
8
|
+
* Offer feedback on open [pull requests](https://github.com/heroku/prmd/pulls).
|
9
|
+
* Review open [issues](https://github.com/heroku/prmd/issues) for things to help on.
|
10
|
+
* [Create an issue](https://github.com/heroku/prmd/issues/new) to start a discussion on additions or features.
|
11
|
+
* Fork the project, add your changes and tests to cover them in a topic branch.
|
12
|
+
* Commit your changes and rebase against `heroku/prmd` to ensure everything is up to date.
|
13
|
+
* [Submit a pull request](https://github.com/heroku/prmd/compare/).
|
14
|
+
|
15
|
+
### Non-Coding
|
16
|
+
|
17
|
+
* Offer feedback on open [issues](https://github.com/heroku/prmd/issues).
|
18
|
+
* Organize or volunteer at events.
|
data/CONTRIBUTORS.md
CHANGED
@@ -1,6 +1,8 @@
|
|
1
1
|
* Brandur <brandur@mutelight.org>
|
2
2
|
* Chris Continanza <christopher.continanza@gmail.com>
|
3
|
+
* Dane Harrigan <dane.harrigan@gmail.com>
|
3
4
|
* Mark McGranaghan <mmcgrana@gmail.com>
|
5
|
+
* Olivier Lance <olance@users.noreply.github.com>
|
4
6
|
* Timothée Peignier <timothee.peignier@tryphon.org>
|
5
7
|
* Wesley Beary <geemus+github@gmail.com>
|
6
8
|
* geemus <geemus@gmail.com>
|
data/Gemfile.lock
CHANGED
@@ -1,21 +1,21 @@
|
|
1
1
|
PATH
|
2
2
|
remote: .
|
3
3
|
specs:
|
4
|
-
prmd (0.0
|
5
|
-
erubis
|
4
|
+
prmd (0.1.0)
|
5
|
+
erubis (~> 2.7)
|
6
6
|
|
7
7
|
GEM
|
8
8
|
remote: https://rubygems.org/
|
9
9
|
specs:
|
10
10
|
erubis (2.7.0)
|
11
|
-
minitest (
|
12
|
-
rake (10.
|
11
|
+
minitest (5.3.2)
|
12
|
+
rake (10.2.2)
|
13
13
|
|
14
14
|
PLATFORMS
|
15
15
|
ruby
|
16
16
|
|
17
17
|
DEPENDENCIES
|
18
18
|
bundler (~> 1.3)
|
19
|
-
minitest
|
19
|
+
minitest (~> 5.3)
|
20
20
|
prmd!
|
21
|
-
rake
|
21
|
+
rake (~> 10.2)
|
data/README.md
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
# Prmd
|
2
2
|
|
3
3
|
JSON Schema tooling: scaffold, verify, and generate documentation
|
4
|
-
|
4
|
+
from JSON Schema documents.
|
5
5
|
|
6
6
|
|
7
7
|
## Introduction
|
@@ -11,76 +11,100 @@ an API. prmd provides tools for bootstrapping a description like this,
|
|
11
11
|
verifying its completeness, and generating documentation from the
|
12
12
|
specification.
|
13
13
|
|
14
|
-
The JSON Schema usage conventions expected by prmd are described in
|
15
|
-
[/docs/schemata.md](/docs/schemata.md).
|
16
|
-
|
17
14
|
To learn more about JSON Schema in general, start with
|
18
15
|
[this excellent guide](http://spacetelescope.github.io/understanding-json-schema/)
|
19
16
|
and supplement with the [specification](http://json-schema.org/documentation.html).
|
17
|
+
The JSON Schema usage conventions expected by prmd specifically are
|
18
|
+
described in [/docs/schemata.md](/docs/schemata.md).
|
20
19
|
|
21
20
|
## Installation
|
22
21
|
|
23
|
-
|
22
|
+
Install the command-line tool with:
|
24
23
|
|
25
|
-
```
|
26
|
-
gem
|
24
|
+
```console
|
25
|
+
$ gem install prmd
|
27
26
|
```
|
28
27
|
|
29
|
-
|
28
|
+
If you're using prmd within a Ruby project, you may want to add it
|
29
|
+
to the application's Gemfile:
|
30
30
|
|
31
|
-
```
|
32
|
-
|
31
|
+
```ruby
|
32
|
+
gem 'prmd'
|
33
33
|
```
|
34
34
|
|
35
|
-
Or install it yourself as:
|
36
|
-
|
37
35
|
```console
|
38
|
-
$
|
36
|
+
$ bundle install
|
39
37
|
```
|
40
38
|
|
41
39
|
## Usage
|
42
40
|
|
43
|
-
|
44
|
-
combines them on to stdout. If -m or --meta is supplied, it will override
|
45
|
-
defaults/metadata:
|
41
|
+
Prmd provides four main commands:
|
46
42
|
|
47
|
-
|
48
|
-
|
49
|
-
|
43
|
+
* `init`: Scaffold resource schemata
|
44
|
+
* `combine`: Combine schemata and metadata into single schema
|
45
|
+
* `verify`: Verify a schema
|
46
|
+
* `doc`: Generate documentation from a schema
|
50
47
|
|
51
|
-
|
52
|
-
If -m or --meta is supplied, it will override defaults/metadata:
|
48
|
+
Here's an example of using these commands in a typical workflow:
|
53
49
|
|
54
50
|
```console
|
55
|
-
|
51
|
+
# Fill out the resource schemata
|
52
|
+
$ mkdir -p schemata
|
53
|
+
$ prmd init app > schemata/app.json
|
54
|
+
$ prmd init user > schemata/user.json
|
55
|
+
$ vim schemata/{app,user}.json # edit scaffolded files
|
56
|
+
|
57
|
+
# Provide top-level metadata
|
58
|
+
$ cat <<EOF > meta.json
|
59
|
+
{
|
60
|
+
"description": "Hello world prmd API",
|
61
|
+
"id": "hello-prmd",
|
62
|
+
"links": [{
|
63
|
+
"href": "https://api.hello.com",
|
64
|
+
"rel": "self"
|
65
|
+
}],
|
66
|
+
"title": "Hello Prmd"
|
67
|
+
}
|
68
|
+
EOF
|
69
|
+
|
70
|
+
# Combine into a single schema
|
71
|
+
$ prmd combine --meta meta.json schemata/ > schema.json
|
72
|
+
|
73
|
+
# Check it’s all good
|
74
|
+
$ prmd verify schema.json
|
75
|
+
|
76
|
+
# Build docs
|
77
|
+
$ prmd doc schema.json > schema.md
|
56
78
|
```
|
57
79
|
|
58
|
-
|
80
|
+
Typically you'll want to prepend header and overview information to
|
81
|
+
your API documentation. You can do this with the `--prepend` flag:
|
59
82
|
|
60
83
|
```console
|
61
|
-
$ prmd doc
|
84
|
+
$ prmd doc schema.json --prepend overview.md > schema.md
|
62
85
|
```
|
63
86
|
|
64
|
-
|
65
|
-
new schema file to stdout (generically or using the resource name
|
66
|
-
provided). If -m or --meta is supplied, it will override
|
67
|
-
defaults/metadata:
|
87
|
+
You can also chain commands together as needed, e.g.:
|
68
88
|
|
69
89
|
```console
|
70
|
-
$ prmd
|
71
|
-
$ prmd init <resource name>
|
90
|
+
$ prmd combine --meta meta.json schemata/ | prmd verify | prmd doc --prepend overview.md > schema.md
|
72
91
|
```
|
73
92
|
|
74
|
-
|
93
|
+
See `prmd <command> --help` for additional usage details.
|
75
94
|
|
76
|
-
|
77
|
-
$ prmd verify <combined schema>
|
78
|
-
```
|
95
|
+
## File Layout
|
79
96
|
|
80
|
-
|
97
|
+
We suggest the following file layout for JSON schema related files:
|
81
98
|
|
82
|
-
```
|
83
|
-
|
99
|
+
```
|
100
|
+
/docs (top-level directory for project documentation)
|
101
|
+
/schema (API schema documentation)
|
102
|
+
/schemata
|
103
|
+
/{resource.json} (individual resource schema)
|
104
|
+
/meta.json (overall API metadata)
|
105
|
+
/overview.md (preamble for generated API docs)
|
106
|
+
/schema.json (complete generated JSON schema file)
|
107
|
+
/schema.md (complete generated API documentation file)
|
84
108
|
```
|
85
109
|
|
86
110
|
## Contributing
|
data/bin/prmd
CHANGED
@@ -19,9 +19,6 @@ commands = {
|
|
19
19
|
end,
|
20
20
|
init: OptionParser.new do |opts|
|
21
21
|
opts.banner = "prmd init [options] <resource name>"
|
22
|
-
opts.on("-m", "--meta meta.json", "Set defaults for schemata") do |m|
|
23
|
-
options[:meta] = m
|
24
|
-
end
|
25
22
|
end,
|
26
23
|
verify: OptionParser.new do |opts|
|
27
24
|
opts.banner = "prmd verify [options] <combined schema>"
|
data/lib/prmd/commands/init.rb
CHANGED
@@ -10,10 +10,6 @@ module Prmd
|
|
10
10
|
'type' => ['object']
|
11
11
|
}
|
12
12
|
|
13
|
-
if options[:meta] && File.exists?(options[:meta])
|
14
|
-
data.merge!(JSON.parse(File.read(options[:meta])))
|
15
|
-
end
|
16
|
-
|
17
13
|
schema = Prmd::Schema.new(data)
|
18
14
|
|
19
15
|
if resource
|
@@ -21,7 +17,7 @@ module Prmd
|
|
21
17
|
parent, resource = resource.split('/')
|
22
18
|
end
|
23
19
|
schema['id'] = "schemata/#{resource}"
|
24
|
-
schema['title'] = "
|
20
|
+
schema['title'] = "FIXME - #{resource[0...1].upcase}#{resource[1..-1]}"
|
25
21
|
schema['definitions'] = {
|
26
22
|
"created_at" => {
|
27
23
|
"description" => "when #{resource} was created",
|
data/lib/prmd/version.rb
CHANGED
data/lib/prmd/views/endpoint.erb
CHANGED
@@ -64,6 +64,7 @@ end -%>
|
|
64
64
|
data = {}
|
65
65
|
if link['schema']['properties']
|
66
66
|
link['schema']['properties'].each do |key, value|
|
67
|
+
_, value = schema.dereference(value)
|
67
68
|
if value.has_key?('anyOf')
|
68
69
|
id_ref = value['anyOf'].detect {|ref| ref['$ref'].split('/').last == 'id'}
|
69
70
|
data[key] = schema.dereference(id_ref).last['example']
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: prmd
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- geemus
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2014-04-
|
11
|
+
date: 2014-04-17 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: erubis
|
@@ -76,6 +76,7 @@ extra_rdoc_files: []
|
|
76
76
|
files:
|
77
77
|
- .gitignore
|
78
78
|
- .travis.yml
|
79
|
+
- CONTRIBUTING.md
|
79
80
|
- CONTRIBUTORS.md
|
80
81
|
- Gemfile
|
81
82
|
- Gemfile.lock
|