indexer 0.1.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.
- data/.index +54 -0
- data/HISTORY.md +9 -0
- data/README.md +145 -0
- data/bin/index +7 -0
- data/data/indexer/r2013/index.kwalify +175 -0
- data/data/indexer/r2013/index.yes +172 -0
- data/data/indexer/r2013/index.yesi +67 -0
- data/data/indexer/r2013/ruby.txt +35 -0
- data/data/indexer/r2013/yaml.txt +30 -0
- data/lib/indexer.rb +65 -0
- data/lib/indexer/attributes.rb +171 -0
- data/lib/indexer/command.rb +260 -0
- data/lib/indexer/components.rb +8 -0
- data/lib/indexer/components/author.rb +140 -0
- data/lib/indexer/components/conflict.rb +78 -0
- data/lib/indexer/components/copyright.rb +95 -0
- data/lib/indexer/components/dependency.rb +18 -0
- data/lib/indexer/components/organization.rb +133 -0
- data/lib/indexer/components/repository.rb +140 -0
- data/lib/indexer/components/requirement.rb +360 -0
- data/lib/indexer/components/resource.rb +209 -0
- data/lib/indexer/conversion.rb +14 -0
- data/lib/indexer/conversion/gemfile.rb +44 -0
- data/lib/indexer/conversion/gemspec.rb +114 -0
- data/lib/indexer/conversion/gemspec_exporter.rb +304 -0
- data/lib/indexer/core_ext.rb +4 -0
- data/lib/indexer/error.rb +23 -0
- data/lib/indexer/gemfile.rb +75 -0
- data/lib/indexer/importer.rb +144 -0
- data/lib/indexer/importer/file.rb +94 -0
- data/lib/indexer/importer/gemfile.rb +27 -0
- data/lib/indexer/importer/gemspec.rb +43 -0
- data/lib/indexer/importer/html.rb +289 -0
- data/lib/indexer/importer/markdown.rb +45 -0
- data/lib/indexer/importer/ruby.rb +47 -0
- data/lib/indexer/importer/version.rb +38 -0
- data/lib/indexer/importer/yaml.rb +46 -0
- data/lib/indexer/loadable.rb +159 -0
- data/lib/indexer/metadata.rb +879 -0
- data/lib/indexer/model.rb +237 -0
- data/lib/indexer/revision.rb +43 -0
- data/lib/indexer/valid.rb +287 -0
- data/lib/indexer/validator.rb +313 -0
- data/lib/indexer/version/constraint.rb +124 -0
- data/lib/indexer/version/exceptions.rb +11 -0
- data/lib/indexer/version/number.rb +497 -0
- metadata +141 -0
data/.index
ADDED
@@ -0,0 +1,54 @@
|
|
1
|
+
---
|
2
|
+
type: ruby
|
3
|
+
revision: 2013
|
4
|
+
sources:
|
5
|
+
- README.md
|
6
|
+
authors:
|
7
|
+
- name: trans
|
8
|
+
email: transfire@gmail.com
|
9
|
+
website: http://trans.gihub.com/
|
10
|
+
- name: postmodern
|
11
|
+
website: http://postmodern.github.com/
|
12
|
+
organizations: []
|
13
|
+
requirements:
|
14
|
+
- version: 1.5+
|
15
|
+
name: nokogiri
|
16
|
+
- version: 2.0+
|
17
|
+
name: redcarpet
|
18
|
+
- groups:
|
19
|
+
- test
|
20
|
+
version: 2.9+
|
21
|
+
development: true
|
22
|
+
name: qed
|
23
|
+
- groups:
|
24
|
+
- test
|
25
|
+
version: 0+
|
26
|
+
development: true
|
27
|
+
name: ae
|
28
|
+
conflicts: []
|
29
|
+
alternatives: []
|
30
|
+
resources:
|
31
|
+
- type: home
|
32
|
+
uri: http://rubyworks.github.com/indexer
|
33
|
+
label: Homepage
|
34
|
+
- type: code
|
35
|
+
uri: http://github.com/rubyworks/indexer
|
36
|
+
label: Source Code
|
37
|
+
- type: api
|
38
|
+
uri: http://rubydoc.info/gems/indexer/frames
|
39
|
+
label: API Reference
|
40
|
+
repositories: []
|
41
|
+
categories:
|
42
|
+
- metadata
|
43
|
+
load_path:
|
44
|
+
- lib
|
45
|
+
copyrights:
|
46
|
+
- holder: Rubyworks
|
47
|
+
year: '2012'
|
48
|
+
license: BSD-2-Clause
|
49
|
+
version: 0.1.0
|
50
|
+
summary: Enable Your Project's Metadata
|
51
|
+
description: Indexer provides projects with a universal metadata format.
|
52
|
+
name: indexer
|
53
|
+
title: Indexer
|
54
|
+
date: '2012-12-09'
|
data/HISTORY.md
ADDED
data/README.md
ADDED
@@ -0,0 +1,145 @@
|
|
1
|
+
# <span class="ititle">Indexer</span> (v<span class="iversion">0.1.0</span>)
|
2
|
+
|
3
|
+
<b class="isummary">Enable Your Project's Metadata<b>
|
4
|
+
|
5
|
+
[](http://travis-ci.org/rubyworks/indexer)
|
6
|
+
|
7
|
+
|
8
|
+
## Description
|
9
|
+
|
10
|
+
<p class="idescription">Indexer provides projects with a universal metadata format.</p>
|
11
|
+
|
12
|
+
Indexer defines a *canonical*, detailed and strict, project <span class="icategory">metadata</span> specification.
|
13
|
+
The strictness of the specification makes the format simple enough for developers to use without an intermediate API.
|
14
|
+
Although Indexer also provides a convenience API for working with the specification and its data
|
15
|
+
more loosely when suitable to the usecase. Indexer also specifies a stanadard location for canonized
|
16
|
+
metadata to be kept, in a `.index` file.
|
17
|
+
|
18
|
+
Indexer provides a tool to import metadata from external sources. Indexer can handle a variety of metadata
|
19
|
+
source formats, including YAML, HTML Microformats and Ruby DSL scripts.
|
20
|
+
|
21
|
+
|
22
|
+
## Installation
|
23
|
+
|
24
|
+
Indexer is a Ruby application, so as long as you have Ruby installed, it is easy to install Indexer via RubyGems.
|
25
|
+
|
26
|
+
$ gem install indexer
|
27
|
+
|
28
|
+
|
29
|
+
## Instruction
|
30
|
+
|
31
|
+
Indexer is capable of generating a canonical `.index` file from a variety of sources. Being so flexiable, exactly
|
32
|
+
how a developer descides to store a project's metadata is a largely a matter of taste. But in general there are
|
33
|
+
three overall approaches:
|
34
|
+
|
35
|
+
1. Specify the metadata using microformats in a project's README file.
|
36
|
+
2. Specify the metadata in one or more static files, often a single YAML file.
|
37
|
+
3. Construct the metadata via a Ruby DSL, customizing the generation in any way.
|
38
|
+
|
39
|
+
The first choice is, in many respects, the nicest because it does not require any additional files be added
|
40
|
+
to a project and it helps to ensure a good README file. On the downside, it requires some HTML be hand-coded
|
41
|
+
into the README.
|
42
|
+
|
43
|
+
The second approach is a great option in the it is the easiest. One can quickly put together a YAML document
|
44
|
+
covering a project's metadata. Since Indexer is very flexible in it's parsing of the YAML, it really is a
|
45
|
+
quick and user-friendly way to go. Typically this file will be called `Index.yml`, but there is no name
|
46
|
+
requirement. In fact, Indexer will let you split the metadata up over mutliple files, and even use a whole
|
47
|
+
directory of files, one per field.
|
48
|
+
|
49
|
+
The last approach provides maximum flexablity. Using the Ruby DSL one can literally script the metadata,
|
50
|
+
which means it can come from anywhere at all. For example, you might want to pull the project's version
|
51
|
+
from the `lib/project/version.rb` file, i.e. Bundler style. The DSL is as intutive and as flexible as
|
52
|
+
using plain YAML, so it's nearly as easy to take this approach. By convention this file is called `Indexfile`
|
53
|
+
or `Index.rb`, but it too can be any file path one prefers.
|
54
|
+
|
55
|
+
On the Indexer wiki you can find detailed tutorials on a variety of setups, along with thier pros and cons.
|
56
|
+
|
57
|
+
As an example of getting started, lets say we want to customize our index metadata via a YAML file,
|
58
|
+
but we want to keep the version information is a separate `VERSION` file. That's a common layout so Indexer
|
59
|
+
is designed to handle it out of the box. First create the `VERSION` file.
|
60
|
+
|
61
|
+
$ echo '0.1.0' > VERSION
|
62
|
+
|
63
|
+
Next we need our YAML file. Indexer makes out life easier by offering us some template generation for
|
64
|
+
common approaches. In this case we use the `-g/--generate` command option, specifying that we want an
|
65
|
+
`Index.yml`.
|
66
|
+
|
67
|
+
$ index --generate Index.yml
|
68
|
+
|
69
|
+
Now we can edit the `Index.yaml` file to suite our project.
|
70
|
+
|
71
|
+
$ vim Index.yml
|
72
|
+
|
73
|
+
Once we have the source files setup, its easy to build the canonical `.index` file using the `index`
|
74
|
+
command line interface. We can simply issue the `index` command with the `-u/--using` command option:
|
75
|
+
|
76
|
+
$ index --using VERSION Index.yml
|
77
|
+
|
78
|
+
Indexer will utilize both sources and create the `.index` file.
|
79
|
+
|
80
|
+
Over time project metadata tends to evolve and change. To keep the canoncial `.index` file up to date simply
|
81
|
+
call the `index` command without any options.
|
82
|
+
|
83
|
+
$ index
|
84
|
+
|
85
|
+
By default the `.index` file will not be updated if it has a modification time newer than its source files.
|
86
|
+
If need be, use the `-f/--force` option to override this.
|
87
|
+
|
88
|
+
That's the quick "one two". For more information on using Indexer, see the Wiki, API documentation, QED specifications
|
89
|
+
and the Manpages.
|
90
|
+
|
91
|
+
|
92
|
+
## Resources
|
93
|
+
|
94
|
+
<ul>
|
95
|
+
<li><a class="iresource" href="http://rubyworks.github.com/indexer" name="home">Homepage</a></li>
|
96
|
+
<li><a class="iresource" href="http://github.com/rubyworks/indexer" name="code">Source Code</a> (Github)</li>
|
97
|
+
<li><a class="iresource" href="http://rubydoc.info/gems/indexer/frames" name="docs">API Reference</a></li>
|
98
|
+
<li><a class="irepository" href="http://github.com/rubyworks/indexer/indexer.git" name="upstream">Master Git Repo</a></li>
|
99
|
+
</ul>
|
100
|
+
|
101
|
+
|
102
|
+
## Requirements
|
103
|
+
|
104
|
+
<ul>
|
105
|
+
<li class="irequirement">
|
106
|
+
<a class="name" href="http://nokogiri.org/">nokogiri</a> <span class="version">1.5+</span></span>
|
107
|
+
</li>
|
108
|
+
<li class="irequirement">
|
109
|
+
<a class="name" href="https://github.com/vmg/redcarpet">redcarpet</a> <span class="version">2.0+</span></span>
|
110
|
+
</li>
|
111
|
+
<li class="irequirement">
|
112
|
+
<a class="name" href="http://rubyworks.github.com/qed/">qed</a> <span class="version">2.9+</span> <span class="groups">(test)</span>
|
113
|
+
</li>
|
114
|
+
<li class="irequirement">
|
115
|
+
<a class="name" href="http://rubyworks.github.com/ae/">ae</a> <span class="version"></span> <span class="groups">(test)</span>
|
116
|
+
</li>
|
117
|
+
</ul>
|
118
|
+
|
119
|
+
|
120
|
+
## Authors
|
121
|
+
|
122
|
+
<ul>
|
123
|
+
<li class="iauthor vcard">
|
124
|
+
<div class="nickname">trans</div>
|
125
|
+
<div><a class="email" href="mailto:transfire@gmail.com">transfire@gmail.com</a></div>
|
126
|
+
<div><a class="url" href="http://trans.gihub.com/">http://trans.github.com/</a></div>
|
127
|
+
</li>
|
128
|
+
<li class="iauthor vcard">
|
129
|
+
<div class="nickname">postmodern</div>
|
130
|
+
<div><a class="url" href="http://postmodern.github.com/">http://postmodern.github.com/</a></div>
|
131
|
+
</li>
|
132
|
+
</ul>
|
133
|
+
|
134
|
+
|
135
|
+
## Copyrights
|
136
|
+
|
137
|
+
<ul>
|
138
|
+
<li class="icopyright">
|
139
|
+
© <span class="year">2012</span> <span class="holder">Rubyworks</span>
|
140
|
+
<div class="license">
|
141
|
+
<a href="http://www.spdx.org/licenses/BSD-2-Clause" rel="license">BSD-2-Clause License</a>
|
142
|
+
</div>
|
143
|
+
</li>
|
144
|
+
<ul>
|
145
|
+
|
data/bin/index
ADDED
@@ -0,0 +1,175 @@
|
|
1
|
+
---
|
2
|
+
type: map
|
3
|
+
mapping:
|
4
|
+
revision
|
5
|
+
type: int
|
6
|
+
required: true
|
7
|
+
name:
|
8
|
+
type: str
|
9
|
+
pattern: /^\w+$/ # package name
|
10
|
+
required: true
|
11
|
+
version:
|
12
|
+
type: str
|
13
|
+
pattern: /^\d(\.\w+)*/
|
14
|
+
required: true
|
15
|
+
codename:
|
16
|
+
type: str
|
17
|
+
pattern: /[^\n]/ # no newline
|
18
|
+
title
|
19
|
+
type: str
|
20
|
+
pattern: /[^\n]/ # no newline
|
21
|
+
date:
|
22
|
+
type: str
|
23
|
+
pattern: /^\d{4}-\d{2}-\d{2}(\d{2}){0,3}$/ # utc date
|
24
|
+
created:
|
25
|
+
type: str
|
26
|
+
pattern: /^\d{4}-\d{2}-\d{2}(\d{2}){0,3}$/ # utc date
|
27
|
+
summary:
|
28
|
+
type: str
|
29
|
+
pattern: /[^\n]/ # no newline
|
30
|
+
description:
|
31
|
+
type: str
|
32
|
+
authors:
|
33
|
+
type: seq
|
34
|
+
sequence:
|
35
|
+
- type: map
|
36
|
+
mapping:
|
37
|
+
name:
|
38
|
+
type: str
|
39
|
+
email:
|
40
|
+
type: str
|
41
|
+
pattern: /@/
|
42
|
+
url:
|
43
|
+
type: str
|
44
|
+
role:
|
45
|
+
type: seq
|
46
|
+
suite:
|
47
|
+
type: str
|
48
|
+
pattern: /[^\n]/ # no newline
|
49
|
+
organization:
|
50
|
+
type: str
|
51
|
+
pattern: /[^\n]/ # no newline
|
52
|
+
copyright:
|
53
|
+
type: seq
|
54
|
+
sequence:
|
55
|
+
- type: map
|
56
|
+
mapping:
|
57
|
+
holder:
|
58
|
+
type: str
|
59
|
+
pattern: /[^\n]/ # no newline
|
60
|
+
year:
|
61
|
+
type: str
|
62
|
+
pattern: /^\d{4}([-,]^\d{4})?$/
|
63
|
+
license:
|
64
|
+
type: str
|
65
|
+
pattern: /[^\n]/ # no newline
|
66
|
+
requirements: &requirements
|
67
|
+
type: seq
|
68
|
+
sequence:
|
69
|
+
- type: map
|
70
|
+
mapping:
|
71
|
+
name:
|
72
|
+
type: str
|
73
|
+
pattern: /[^\n]/ # no newline
|
74
|
+
version:
|
75
|
+
type: seq
|
76
|
+
sequence:
|
77
|
+
- type: str
|
78
|
+
pattern: /^\d(\.\w+)*/
|
79
|
+
group:
|
80
|
+
type: seq
|
81
|
+
sequence:
|
82
|
+
- type: str
|
83
|
+
pattern: /[^\n]/ # no newline
|
84
|
+
development:
|
85
|
+
type: bool
|
86
|
+
optional:
|
87
|
+
type: bool
|
88
|
+
engine:
|
89
|
+
type: seq
|
90
|
+
sequence:
|
91
|
+
- type: map
|
92
|
+
mapping:
|
93
|
+
name:
|
94
|
+
type: str
|
95
|
+
pattern: /[^\n]/ # no newline
|
96
|
+
version:
|
97
|
+
type: str
|
98
|
+
pattern: /^\d/
|
99
|
+
platform:
|
100
|
+
type: seq
|
101
|
+
sequence:
|
102
|
+
- type: str
|
103
|
+
pattern: /[^\n]/ # no newline
|
104
|
+
repository:
|
105
|
+
- type: map
|
106
|
+
mapping:
|
107
|
+
url:
|
108
|
+
type: str
|
109
|
+
pattern: /[^\n]/ # url
|
110
|
+
scm:
|
111
|
+
type: str
|
112
|
+
pattern: /[^\n]/ # no newline
|
113
|
+
dependencies: *requirements
|
114
|
+
conflicts:
|
115
|
+
type: seq
|
116
|
+
sequence:
|
117
|
+
- type: map
|
118
|
+
mapping:
|
119
|
+
name:
|
120
|
+
type: str
|
121
|
+
pattern: /^\w+$/ # package name
|
122
|
+
version:
|
123
|
+
type: seq
|
124
|
+
sequence:
|
125
|
+
- type: str
|
126
|
+
pattern: /[^\n]/ # version constraint
|
127
|
+
substitues:
|
128
|
+
type: seq
|
129
|
+
sequence:
|
130
|
+
- type: str
|
131
|
+
pattern: /^\w+$/ # package name
|
132
|
+
replaces:
|
133
|
+
type: seq
|
134
|
+
sequence:
|
135
|
+
- type: str
|
136
|
+
pattern: /^\w+$/ # package name
|
137
|
+
|
138
|
+
resources:
|
139
|
+
type: seq
|
140
|
+
sequence:
|
141
|
+
- type: map
|
142
|
+
mapping:
|
143
|
+
id:
|
144
|
+
type: str
|
145
|
+
pattern: /[^\n]/ # no newline
|
146
|
+
url:
|
147
|
+
type: str
|
148
|
+
pattern: // # url
|
149
|
+
required: true
|
150
|
+
repositories:
|
151
|
+
type: seq
|
152
|
+
sequence:
|
153
|
+
- type: map
|
154
|
+
mapping:
|
155
|
+
id:
|
156
|
+
type: str
|
157
|
+
pattern: /[^\n]/ # no newline
|
158
|
+
url:
|
159
|
+
type: str
|
160
|
+
pattern: // # url
|
161
|
+
required: true
|
162
|
+
scm:
|
163
|
+
type: str
|
164
|
+
pattern: /^\w$/ # word
|
165
|
+
load_path:
|
166
|
+
type: seq
|
167
|
+
sequence:
|
168
|
+
- type: str
|
169
|
+
pattern: /\S/ # path
|
170
|
+
default: [lib]
|
171
|
+
install_message:
|
172
|
+
type: str
|
173
|
+
extra:
|
174
|
+
type: map
|
175
|
+
|
@@ -0,0 +1,172 @@
|
|
1
|
+
---
|
2
|
+
revision:
|
3
|
+
type: int
|
4
|
+
required: true
|
5
|
+
name:
|
6
|
+
type: str
|
7
|
+
regexp: /^\w+$/ # package name
|
8
|
+
required: true
|
9
|
+
version:
|
10
|
+
type: str
|
11
|
+
regexp: /^\d(\.\w+)*/
|
12
|
+
required: true
|
13
|
+
codename:
|
14
|
+
type: str
|
15
|
+
regexp: /[^\n]/ # no newline
|
16
|
+
title
|
17
|
+
type: str
|
18
|
+
regexp: /[^\n]/ # no newline
|
19
|
+
date:
|
20
|
+
type: str
|
21
|
+
pic: &pic-date 9999-99-99[ 99:99:99]
|
22
|
+
created:
|
23
|
+
type: str
|
24
|
+
pic: &pic-date
|
25
|
+
summary:
|
26
|
+
type: str
|
27
|
+
regexp: /[^\n]/ # no newline
|
28
|
+
description:
|
29
|
+
type: str
|
30
|
+
authors:
|
31
|
+
type: seq
|
32
|
+
value:
|
33
|
+
type: map
|
34
|
+
mapping:
|
35
|
+
name:
|
36
|
+
type: str
|
37
|
+
email:
|
38
|
+
type: str
|
39
|
+
regexp: /@/
|
40
|
+
url:
|
41
|
+
type: str
|
42
|
+
roles:
|
43
|
+
type: seq
|
44
|
+
suite:
|
45
|
+
type: str
|
46
|
+
regexp: /[^\n]/ # no newline
|
47
|
+
organization:
|
48
|
+
type: str
|
49
|
+
regexp: /[^\n]/ # no newline
|
50
|
+
copyrights:
|
51
|
+
type: seq
|
52
|
+
value:
|
53
|
+
type: map
|
54
|
+
template:
|
55
|
+
holder:
|
56
|
+
type: str
|
57
|
+
regexp: /[^\n]/ # no newline
|
58
|
+
year:
|
59
|
+
type: str
|
60
|
+
regexp: /^\d{4}([-,]^\d{4})?$/
|
61
|
+
license:
|
62
|
+
type: str
|
63
|
+
regexp: /[^\n]/ # no newline
|
64
|
+
requirements: &requirements
|
65
|
+
type: seq
|
66
|
+
value:
|
67
|
+
type: map
|
68
|
+
template:
|
69
|
+
name:
|
70
|
+
type: str
|
71
|
+
regexp: /[^\n]/ # no newline
|
72
|
+
version:
|
73
|
+
type: seq
|
74
|
+
value:
|
75
|
+
type: str
|
76
|
+
regexp: /^\d(\.\w+)*/
|
77
|
+
groups:
|
78
|
+
type: seq
|
79
|
+
value:
|
80
|
+
type: str
|
81
|
+
regexp: /[^\n]/ # no newline
|
82
|
+
development:
|
83
|
+
type: bool
|
84
|
+
optional:
|
85
|
+
type: bool
|
86
|
+
engine:
|
87
|
+
type: seq
|
88
|
+
value:
|
89
|
+
type: map
|
90
|
+
template:
|
91
|
+
name:
|
92
|
+
type: str
|
93
|
+
regexp: /[^\n]/ # no newline
|
94
|
+
version:
|
95
|
+
type: str
|
96
|
+
regexp: /^\d/
|
97
|
+
platform:
|
98
|
+
type: seq
|
99
|
+
value:
|
100
|
+
type: str
|
101
|
+
regexp: /[^\n]/ # no newline
|
102
|
+
repository:
|
103
|
+
type: map
|
104
|
+
template:
|
105
|
+
url:
|
106
|
+
type: str
|
107
|
+
regexp: /[^\n]/ # url
|
108
|
+
scm:
|
109
|
+
type: str
|
110
|
+
regexp: /[^\n]/ # no newline
|
111
|
+
dependencies: *requirements
|
112
|
+
conflicts:
|
113
|
+
type: seq
|
114
|
+
value:
|
115
|
+
type: map
|
116
|
+
map:
|
117
|
+
name:
|
118
|
+
type: str
|
119
|
+
regexp: /^\w+$/ # package name
|
120
|
+
version:
|
121
|
+
type: seq
|
122
|
+
value:
|
123
|
+
type: str
|
124
|
+
regexp: /[^\n]/ # version constraint
|
125
|
+
substitues:
|
126
|
+
type: seq
|
127
|
+
value:
|
128
|
+
type: str
|
129
|
+
regexp: /^\w+$/ # package name
|
130
|
+
replaces:
|
131
|
+
type: seq
|
132
|
+
value:
|
133
|
+
type: str
|
134
|
+
regexp: /^\w+$/ # package name
|
135
|
+
resources:
|
136
|
+
type: seq
|
137
|
+
value:
|
138
|
+
type: map
|
139
|
+
map:
|
140
|
+
name:
|
141
|
+
type: str
|
142
|
+
regexp: /[^\n]/ # no newline
|
143
|
+
uri:
|
144
|
+
type: str
|
145
|
+
regexp: /^http/ # url/irc
|
146
|
+
required: true
|
147
|
+
repositories:
|
148
|
+
type: seq
|
149
|
+
value:
|
150
|
+
type: map
|
151
|
+
map:
|
152
|
+
name:
|
153
|
+
type: str
|
154
|
+
regexp: /[^\n]/ # no newline
|
155
|
+
url:
|
156
|
+
type: str
|
157
|
+
regexp: // # url
|
158
|
+
required: true
|
159
|
+
scm:
|
160
|
+
type: str
|
161
|
+
regexp: /^\w$/ # word
|
162
|
+
load_path:
|
163
|
+
type: seq
|
164
|
+
value:
|
165
|
+
type: str
|
166
|
+
regexp: /\S/ # path
|
167
|
+
default: [lib]
|
168
|
+
install_message:
|
169
|
+
type: str
|
170
|
+
extra:
|
171
|
+
type: map
|
172
|
+
|