detroit 0.3.0 → 0.4.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/.index +59 -0
- data/EXAMPLE.md +66 -64
- data/{HISTORY.rdoc → HISTORY.md} +32 -5
- data/{COPYING.rdoc → LICENSE.txt} +0 -0
- data/README.md +142 -0
- data/bin/detroit +1 -1
- data/lib/detroit.rb +112 -40
- data/lib/detroit.yml +44 -29
- data/lib/detroit/assembly.rb +49 -193
- data/lib/detroit/basic_tool.rb +200 -0
- data/lib/detroit/basic_utils.rb +66 -0
- data/lib/detroit/core_ext.rb +2 -136
- data/lib/detroit/{tool/core_ext → core_ext}/facets.rb +3 -0
- data/lib/detroit/{tool/core_ext → core_ext}/filetest.rb +0 -0
- data/lib/detroit/{tool/core_ext → core_ext}/shell_extensions.rb +0 -0
- data/lib/detroit/{tool/core_ext → core_ext}/to_actual_filename.rb +0 -0
- data/lib/detroit/{tool/core_ext → core_ext}/to_console.rb +1 -0
- data/lib/detroit/{tool/core_ext → core_ext}/to_list.rb +0 -0
- data/lib/detroit/{tool/core_ext → core_ext}/to_yamlfrag.rb +0 -0
- data/lib/detroit/{tool/core_ext → core_ext}/unfold_paragraphs.rb +0 -0
- data/lib/detroit/{tool/email_utils.rb → email_utils.rb} +3 -1
- data/lib/detroit/exec.rb +55 -0
- data/lib/detroit/project.rb +134 -0
- data/lib/detroit/ruby_utils.rb +29 -0
- data/lib/detroit/{tool/shell_utils.rb → shell_utils.rb} +10 -5
- data/lib/detroit/toolchain.rb +6 -0
- data/lib/detroit/toolchain/cli.rb +320 -0
- data/lib/detroit/toolchain/config.rb +223 -0
- data/lib/detroit/toolchain/runner.rb +678 -0
- data/lib/detroit/toolchain/script.rb +248 -0
- data/lib/detroit/toolchain/worker.rb +84 -0
- data/man/detroit.1 +116 -0
- data/man/detroit.1.html +171 -0
- data/man/detroit.1.ronn +99 -0
- metadata +90 -51
- data/.ruby +0 -44
- data/README.rdoc +0 -132
- data/lib/detroit/application.rb +0 -463
- data/lib/detroit/assembly_system.rb +0 -80
- data/lib/detroit/config.rb +0 -203
- data/lib/detroit/control.rb +0 -129
- data/lib/detroit/custom.rb +0 -102
- data/lib/detroit/dsl.rb +0 -55
- data/lib/detroit/service.rb +0 -78
- data/lib/detroit/standard_assembly.rb +0 -51
- data/lib/detroit/tool.rb +0 -295
- data/lib/detroit/tool/core_ext.rb +0 -3
- data/lib/detroit/tool/project_utils.rb +0 -41
data/man/detroit.1.ronn
ADDED
@@ -0,0 +1,99 @@
|
|
1
|
+
detroit(1) - a life-cycle build tool
|
2
|
+
====================================
|
3
|
+
|
4
|
+
## DESCRIPTION
|
5
|
+
|
6
|
+
Detroit is a software production management aid. Detroit utilizes a
|
7
|
+
life-cycle methodology to help developers prepare and release software
|
8
|
+
in a clear, repeatable, linear fashion. While programmed in and well
|
9
|
+
suited to Ruby projects, Detroit can utilized for any build requirements.
|
10
|
+
|
11
|
+
|
12
|
+
## USAGE
|
13
|
+
|
14
|
+
To utilize Detroit add a `Toolchain` file to your project's root directory.
|
15
|
+
In this file add instantiation of tools, configured to your projects build
|
16
|
+
requirements. Toolchain files can be written in YAML or Ruby.
|
17
|
+
|
18
|
+
For example to generate RDoc's for a project, a tool might be defined:
|
19
|
+
|
20
|
+
rdoc:
|
21
|
+
tool: rdoc
|
22
|
+
files:
|
23
|
+
- lib
|
24
|
+
- '[A-Z]*.*'
|
25
|
+
main: README.md
|
26
|
+
|
27
|
+
See the online [User Guide](http://wiki.rubyworks.github.com/detroit) for
|
28
|
+
more details on creating toolchain files.
|
29
|
+
|
30
|
+
Once a toolchain file is in place, the `detroit` command line tool can be used
|
31
|
+
to invoke the tools. For example, to generate documentation:
|
32
|
+
|
33
|
+
$ detroit document
|
34
|
+
|
35
|
+
This will run through all standard stations up to and including `document`.
|
36
|
+
Since the RDoc tool we configured above defines a document job, it would be
|
37
|
+
run in due course.
|
38
|
+
|
39
|
+
|
40
|
+
## OPTIONS
|
41
|
+
|
42
|
+
These are the available options for the `detroit` command line tool.
|
43
|
+
|
44
|
+
* `-m`, `--multitask`
|
45
|
+
Run work elements in parallel.
|
46
|
+
|
47
|
+
* `-S`, `--skip=SERVICE`
|
48
|
+
Skip a service.
|
49
|
+
|
50
|
+
* `-s`, `--system=NAME`
|
51
|
+
Select assembly system. Default is 'standard'.
|
52
|
+
|
53
|
+
* `-t`, `--toolchain=FILE`
|
54
|
+
Use specific toolchain file(s).
|
55
|
+
|
56
|
+
* `-F`, `--force`
|
57
|
+
Force operations.
|
58
|
+
|
59
|
+
* `--trace`
|
60
|
+
Run in TRACE mode.
|
61
|
+
|
62
|
+
* `--trial`
|
63
|
+
Run in TRIAL mode (no disk writes).
|
64
|
+
|
65
|
+
* `--verbose`
|
66
|
+
Provide extra output.
|
67
|
+
|
68
|
+
* `-q`, `--quiet`
|
69
|
+
Run silently.
|
70
|
+
|
71
|
+
* `-I=PATH`
|
72
|
+
Add directory to $LOAD_PATH
|
73
|
+
|
74
|
+
* `--debug`
|
75
|
+
Run with $DEBUG set to true.
|
76
|
+
|
77
|
+
* `--warn`
|
78
|
+
Run with $VERBOSE set to true.
|
79
|
+
|
80
|
+
* `--help [TOOL]`
|
81
|
+
Display this help message.
|
82
|
+
|
83
|
+
* `-c`, `--config=TOOL`
|
84
|
+
Produce a configuration template.
|
85
|
+
|
86
|
+
|
87
|
+
## RESOURCES
|
88
|
+
|
89
|
+
* [Homepage](http://rubyworks.github.com/detroit)
|
90
|
+
* [Development](http://github.com/rubyworks/detroit)
|
91
|
+
* [Mailing List](http://googlegroups.com/group/rubyworks-mailinglist)
|
92
|
+
|
93
|
+
|
94
|
+
## COPYRIGHT
|
95
|
+
|
96
|
+
Copyright (c) 2011 Rubyworks
|
97
|
+
|
98
|
+
Detroit is distributable in accordance with the terms of the GPL v3 license.
|
99
|
+
|
metadata
CHANGED
@@ -1,49 +1,85 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: detroit
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
5
|
-
prerelease:
|
4
|
+
version: 0.4.0
|
6
5
|
platform: ruby
|
7
6
|
authors:
|
8
7
|
- Trans
|
9
8
|
autorequire:
|
10
9
|
bindir: bin
|
11
10
|
cert_chain: []
|
12
|
-
date:
|
11
|
+
date: 2014-01-13 00:00:00.000000000 Z
|
13
12
|
dependencies:
|
14
13
|
- !ruby/object:Gem::Dependency
|
15
14
|
name: facets
|
16
|
-
requirement:
|
17
|
-
none: false
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
18
16
|
requirements:
|
19
|
-
- -
|
17
|
+
- - '>='
|
20
18
|
- !ruby/object:Gem::Version
|
21
19
|
version: '0'
|
22
20
|
type: :runtime
|
23
21
|
prerelease: false
|
24
|
-
version_requirements:
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
23
|
+
requirements:
|
24
|
+
- - '>='
|
25
|
+
- !ruby/object:Gem::Version
|
26
|
+
version: '0'
|
25
27
|
- !ruby/object:Gem::Dependency
|
26
|
-
name:
|
27
|
-
requirement:
|
28
|
-
none: false
|
28
|
+
name: indexer
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
29
30
|
requirements:
|
30
|
-
- -
|
31
|
+
- - '>='
|
31
32
|
- !ruby/object:Gem::Version
|
32
33
|
version: '0'
|
33
34
|
type: :runtime
|
34
35
|
prerelease: false
|
35
|
-
version_requirements:
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
37
|
+
requirements:
|
38
|
+
- - '>='
|
39
|
+
- !ruby/object:Gem::Version
|
40
|
+
version: '0'
|
36
41
|
- !ruby/object:Gem::Dependency
|
37
42
|
name: qed
|
38
|
-
requirement:
|
39
|
-
none: false
|
43
|
+
requirement: !ruby/object:Gem::Requirement
|
40
44
|
requirements:
|
41
|
-
- -
|
45
|
+
- - '>='
|
42
46
|
- !ruby/object:Gem::Version
|
43
47
|
version: '0'
|
44
48
|
type: :development
|
45
49
|
prerelease: false
|
46
|
-
version_requirements:
|
50
|
+
version_requirements: !ruby/object:Gem::Requirement
|
51
|
+
requirements:
|
52
|
+
- - '>='
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: '0'
|
55
|
+
- !ruby/object:Gem::Dependency
|
56
|
+
name: detroit-yard
|
57
|
+
requirement: !ruby/object:Gem::Requirement
|
58
|
+
requirements:
|
59
|
+
- - '>='
|
60
|
+
- !ruby/object:Gem::Version
|
61
|
+
version: '0'
|
62
|
+
type: :development
|
63
|
+
prerelease: false
|
64
|
+
version_requirements: !ruby/object:Gem::Requirement
|
65
|
+
requirements:
|
66
|
+
- - '>='
|
67
|
+
- !ruby/object:Gem::Version
|
68
|
+
version: '0'
|
69
|
+
- !ruby/object:Gem::Dependency
|
70
|
+
name: detroit-gem
|
71
|
+
requirement: !ruby/object:Gem::Requirement
|
72
|
+
requirements:
|
73
|
+
- - '>='
|
74
|
+
- !ruby/object:Gem::Version
|
75
|
+
version: '0'
|
76
|
+
type: :development
|
77
|
+
prerelease: false
|
78
|
+
version_requirements: !ruby/object:Gem::Requirement
|
79
|
+
requirements:
|
80
|
+
- - '>='
|
81
|
+
- !ruby/object:Gem::Version
|
82
|
+
version: '0'
|
47
83
|
description: Detroit is an advanced lifecycle build system. With Detroit, build tasks
|
48
84
|
are user defined service instances tied to stops along a track. Whenever the detroit
|
49
85
|
console command is run, a track is followed from beginning to designated destination.
|
@@ -53,65 +89,68 @@ executables:
|
|
53
89
|
- detroit
|
54
90
|
extensions: []
|
55
91
|
extra_rdoc_files:
|
56
|
-
-
|
57
|
-
- README.rdoc
|
58
|
-
- COPYING.rdoc
|
92
|
+
- LICENSE.txt
|
59
93
|
- EXAMPLE.md
|
94
|
+
- README.md
|
95
|
+
- HISTORY.md
|
60
96
|
files:
|
61
|
-
- .
|
97
|
+
- .index
|
62
98
|
- bin/detroit
|
63
|
-
- lib/detroit/application.rb
|
64
99
|
- lib/detroit/assembly.rb
|
65
|
-
- lib/detroit/
|
66
|
-
- lib/detroit/
|
67
|
-
- lib/detroit/
|
100
|
+
- lib/detroit/basic_tool.rb
|
101
|
+
- lib/detroit/basic_utils.rb
|
102
|
+
- lib/detroit/core_ext/facets.rb
|
103
|
+
- lib/detroit/core_ext/filetest.rb
|
104
|
+
- lib/detroit/core_ext/shell_extensions.rb
|
105
|
+
- lib/detroit/core_ext/to_actual_filename.rb
|
106
|
+
- lib/detroit/core_ext/to_console.rb
|
107
|
+
- lib/detroit/core_ext/to_list.rb
|
108
|
+
- lib/detroit/core_ext/to_yamlfrag.rb
|
109
|
+
- lib/detroit/core_ext/unfold_paragraphs.rb
|
68
110
|
- lib/detroit/core_ext.rb
|
69
|
-
- lib/detroit/
|
70
|
-
- lib/detroit/
|
71
|
-
- lib/detroit/
|
72
|
-
- lib/detroit/
|
73
|
-
- lib/detroit/
|
74
|
-
- lib/detroit/
|
75
|
-
- lib/detroit/
|
76
|
-
- lib/detroit/
|
77
|
-
- lib/detroit/
|
78
|
-
- lib/detroit/
|
79
|
-
- lib/detroit/
|
80
|
-
- lib/detroit/tool/core_ext/unfold_paragraphs.rb
|
81
|
-
- lib/detroit/tool/core_ext.rb
|
82
|
-
- lib/detroit/tool/email_utils.rb
|
83
|
-
- lib/detroit/tool/project_utils.rb
|
84
|
-
- lib/detroit/tool/shell_utils.rb
|
85
|
-
- lib/detroit/tool.rb
|
111
|
+
- lib/detroit/email_utils.rb
|
112
|
+
- lib/detroit/exec.rb
|
113
|
+
- lib/detroit/project.rb
|
114
|
+
- lib/detroit/ruby_utils.rb
|
115
|
+
- lib/detroit/shell_utils.rb
|
116
|
+
- lib/detroit/toolchain/cli.rb
|
117
|
+
- lib/detroit/toolchain/config.rb
|
118
|
+
- lib/detroit/toolchain/runner.rb
|
119
|
+
- lib/detroit/toolchain/script.rb
|
120
|
+
- lib/detroit/toolchain/worker.rb
|
121
|
+
- lib/detroit/toolchain.rb
|
86
122
|
- lib/detroit.rb
|
87
123
|
- lib/detroit.yml
|
88
|
-
-
|
89
|
-
-
|
90
|
-
-
|
124
|
+
- man/detroit.1
|
125
|
+
- man/detroit.1.html
|
126
|
+
- man/detroit.1.ronn
|
91
127
|
- EXAMPLE.md
|
128
|
+
- README.md
|
129
|
+
- HISTORY.md
|
130
|
+
- LICENSE.txt
|
92
131
|
homepage: http://rubyworks.github.com/detroit
|
93
132
|
licenses:
|
94
|
-
-
|
133
|
+
- GPL-3.0
|
134
|
+
metadata: {}
|
95
135
|
post_install_message:
|
96
136
|
rdoc_options: []
|
97
137
|
require_paths:
|
98
138
|
- lib
|
99
139
|
required_ruby_version: !ruby/object:Gem::Requirement
|
100
|
-
none: false
|
101
140
|
requirements:
|
102
|
-
- -
|
141
|
+
- - '>='
|
103
142
|
- !ruby/object:Gem::Version
|
104
143
|
version: '0'
|
105
144
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
106
|
-
none: false
|
107
145
|
requirements:
|
108
|
-
- -
|
146
|
+
- - '>='
|
109
147
|
- !ruby/object:Gem::Version
|
110
148
|
version: '0'
|
111
149
|
requirements: []
|
112
150
|
rubyforge_project:
|
113
|
-
rubygems_version:
|
151
|
+
rubygems_version: 2.0.3
|
114
152
|
signing_key:
|
115
|
-
specification_version:
|
153
|
+
specification_version: 4
|
116
154
|
summary: Software Production Mangement
|
117
155
|
test_files: []
|
156
|
+
has_rdoc:
|
data/.ruby
DELETED
@@ -1,44 +0,0 @@
|
|
1
|
-
---
|
2
|
-
source:
|
3
|
-
- PROFILE
|
4
|
-
- meta
|
5
|
-
authors:
|
6
|
-
- name: Trans
|
7
|
-
email: transfire@gmail.com
|
8
|
-
copyrights:
|
9
|
-
- holder: Thomas Sawyer
|
10
|
-
year: '2007'
|
11
|
-
license: GPL3
|
12
|
-
requirements:
|
13
|
-
- name: facets
|
14
|
-
- name: pom
|
15
|
-
- name: qed
|
16
|
-
groups:
|
17
|
-
- test
|
18
|
-
development: true
|
19
|
-
dependencies: []
|
20
|
-
alternatives: []
|
21
|
-
conflicts: []
|
22
|
-
repositories:
|
23
|
-
- uri: http://github.com/proutils/detroit.git
|
24
|
-
scm: git
|
25
|
-
name: upstream
|
26
|
-
resources:
|
27
|
-
home: http://rubyworks.github.com/detroit
|
28
|
-
code: http://github.com/rubyworks/detroit
|
29
|
-
mail: http://groups.google.com/rubyworks-mailinglist
|
30
|
-
extra: {}
|
31
|
-
load_path:
|
32
|
-
- lib
|
33
|
-
revision: 0
|
34
|
-
created: '2007-10-10'
|
35
|
-
summary: Software Production Mangement
|
36
|
-
title: Detroit
|
37
|
-
version: 0.3.0
|
38
|
-
name: detroit
|
39
|
-
suite: detroit
|
40
|
-
description: Detroit is an advanced lifecycle build system. With Detroit, build tasks
|
41
|
-
are user defined service instances tied to stops along a track. Whenever the detroit
|
42
|
-
console command is run, a track is followed from beginning to designated destination.
|
43
|
-
organization: rubyworks
|
44
|
-
date: '2012-04-01'
|
data/README.rdoc
DELETED
@@ -1,132 +0,0 @@
|
|
1
|
-
= Detroit
|
2
|
-
|
3
|
-
{Homepage}[http://rubyworks.github.com/detroit] /
|
4
|
-
{Development}[http://github.com/rubyworks/detroit] /
|
5
|
-
{Mailing List}[http://googlegroups.com/group/rubyworks-mailinglist]
|
6
|
-
|
7
|
-
|
8
|
-
== DESCRIPTION
|
9
|
-
|
10
|
-
Detroit is a software production management aid for Ruby developers.
|
11
|
-
Detroit utilizes a life-cycle methodology to help developers prepare and
|
12
|
-
release Ruby software in a clear, repeatable, linear fashion.
|
13
|
-
|
14
|
-
|
15
|
-
== HOW IT WORKS
|
16
|
-
|
17
|
-
Detroit defines development processions which consist of a set of named
|
18
|
-
production _lines_, or _tracks_, each with a series of named _stations_,
|
19
|
-
or _stops_. Developers attach work elements to stations by configuring
|
20
|
-
service instances in a project's Schedule or *.schedule files. Schedules
|
21
|
-
are written in either YAML or a Ruby DSL.
|
22
|
-
|
23
|
-
For example, a RubyForge service can be defined:
|
24
|
-
|
25
|
-
rubyforge:
|
26
|
-
service: Rubyforge
|
27
|
-
sitemap:
|
28
|
-
site: <%= name %>
|
29
|
-
active: true
|
30
|
-
|
31
|
-
As this example demonstrates, service configurations can draw on project
|
32
|
-
metadata via ERB embedded tags. Detroit gathers this information using
|
33
|
-
{.ruby}[http://dotruby.github.com/dotruby], but the data source can be
|
34
|
-
easily customized to meet the needs of different projects.
|
35
|
-
|
36
|
-
With service configuration and metadata in place, using Detroit is simply
|
37
|
-
a matter of passing a line name and stop to the +detroit+ command line
|
38
|
-
tool. For example,
|
39
|
-
|
40
|
-
$ detroit main:document
|
41
|
-
|
42
|
-
The track name and its stop are separated by a colon. This command
|
43
|
-
would run every stop on the +main+ track, in order, until it completes
|
44
|
-
the +document+ stop. Since +main+ is the default track, we can acheive
|
45
|
-
the same effect without specifying it.
|
46
|
-
|
47
|
-
$ detroit document
|
48
|
-
|
49
|
-
The use of tracks may seem constrictive to users of tools like Rake, but
|
50
|
-
there is a benefit to this approach. It helps ensure a project is
|
51
|
-
always up-to-date and in-sync --that no necessary steps are missed.
|
52
|
-
Detroit includes three tracks out of the box. The most significant of
|
53
|
-
which is +main+ which entails a route with ordred stops:
|
54
|
-
|
55
|
-
prepare # prepare services and ensure requirements
|
56
|
-
generate # code generation
|
57
|
-
compile # compile source code
|
58
|
-
test # run tests and/or specifications
|
59
|
-
analyze # run code analysis
|
60
|
-
document # generate documentation
|
61
|
-
package # create packages
|
62
|
-
verify # post package verification (eg. integration tests)
|
63
|
-
install # install package locally
|
64
|
-
publish # publish website/documentation
|
65
|
-
release # release packages
|
66
|
-
deploy # deply system to servers
|
67
|
-
promote # tell the world about you awesome work
|
68
|
-
|
69
|
-
All tracks also have a maintainence subtrack which consits of three stops:
|
70
|
-
|
71
|
-
reset # mark build files as out-of-date
|
72
|
-
clean # remove minor build files
|
73
|
-
purge # remove all build files
|
74
|
-
|
75
|
-
Where reset marks generated files out-of-date, clean removes temporary
|
76
|
-
products and purge removes all generated prodcuts.
|
77
|
-
|
78
|
-
In additon to +main+, Detroit includes +site+ and +attn+ tracks which are used
|
79
|
-
to generate and publish a project's website, and make project announcements
|
80
|
-
respectively. They are simply useful subsets of the +main+ track.
|
81
|
-
|
82
|
-
Please see http://rubyworks.github.com/detroit for more details on how to
|
83
|
-
use Detroit, including the creation of custom tracks, stops and service plugins.
|
84
|
-
Also try the <tt>--help</tt> option to see the detroit command's help
|
85
|
-
information.
|
86
|
-
|
87
|
-
|
88
|
-
== INSTALLATION
|
89
|
-
|
90
|
-
Detroit can, of course, be installed via RubyGems:
|
91
|
-
|
92
|
-
$ gem install detroit
|
93
|
-
|
94
|
-
We no longer recommend it, but Detroit can also be installed the
|
95
|
-
old-fashion way by downloading the .tar.gz package and using
|
96
|
-
Ruby Setup (See http://setup.rubyforge.org).
|
97
|
-
|
98
|
-
$ tar -xvzf detroit-1.0.0.tar.gz
|
99
|
-
$ cd detroit-1.0.0
|
100
|
-
$ sudo setup.rb
|
101
|
-
|
102
|
-
Ruby Setup is stand-alone version of the original setup.rb script.
|
103
|
-
|
104
|
-
|
105
|
-
== ISSUES
|
106
|
-
|
107
|
-
All in all, Detroit works well. There are some rough edges with regards
|
108
|
-
to the built-in service plugins, so from time to time you might run into
|
109
|
-
an odd error. Ususally it just means a service confirguraiton needs
|
110
|
-
adjustment.
|
111
|
-
|
112
|
-
Please note, Windows support has not been considered at all. While I do
|
113
|
-
not see any specific reason it should not work, there may well be issues
|
114
|
-
I have not considered since I do not use Windows. If you are Windows user
|
115
|
-
and give Detroit a try please let us know of any issues you encounter.
|
116
|
-
|
117
|
-
|
118
|
-
== HISTORY
|
119
|
-
|
120
|
-
Detroit is actaully the offspring of Reap v10, and was called Syckle for
|
121
|
-
a number of years as it matured. It represents many years of design considerations
|
122
|
-
(and reconsiderations) that evolved Reap from its simple Rake extension origins,
|
123
|
-
which pre-dated Hoe, to the life-cycle system it is today.
|
124
|
-
|
125
|
-
|
126
|
-
== COPYRIGHT & LICENSE
|
127
|
-
|
128
|
-
(GPL v3 License)
|
129
|
-
|
130
|
-
Copyright (c) 2007 Thomas Sawyer
|
131
|
-
|
132
|
-
See COPYING.rdoc and GPL3.txt for details.
|