inochi 4.0.1 → 5.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.
metadata CHANGED
@@ -3,18 +3,18 @@ name: inochi
3
3
  version: !ruby/object:Gem::Version
4
4
  prerelease: false
5
5
  segments:
6
- - 4
6
+ - 5
7
7
  - 0
8
- - 1
9
- version: 4.0.1
8
+ - 0
9
+ version: 5.0.0
10
10
  platform: ruby
11
- authors:
12
- - Suraj N. Kurapati
11
+ authors: []
12
+
13
13
  autorequire:
14
14
  bindir: bin
15
15
  cert_chain: []
16
16
 
17
- date: 2010-07-28 00:00:00 -07:00
17
+ date: 2010-08-07 00:00:00 -07:00
18
18
  default_executable:
19
19
  dependencies:
20
20
  - !ruby/object:Gem::Dependency
@@ -133,30 +133,10 @@ dependencies:
133
133
  version: "1"
134
134
  type: :runtime
135
135
  version_requirements: *id006
136
- - !ruby/object:Gem::Dependency
137
- name: ronn
138
- prerelease: false
139
- requirement: &id007 !ruby/object:Gem::Requirement
140
- none: false
141
- requirements:
142
- - - ">="
143
- - !ruby/object:Gem::Version
144
- segments:
145
- - 0
146
- - 7
147
- - 0
148
- version: 0.7.0
149
- - - <
150
- - !ruby/object:Gem::Version
151
- segments:
152
- - 1
153
- version: "1"
154
- type: :runtime
155
- version_requirements: *id007
156
136
  - !ruby/object:Gem::Dependency
157
137
  name: yard
158
138
  prerelease: false
159
- requirement: &id008 !ruby/object:Gem::Requirement
139
+ requirement: &id007 !ruby/object:Gem::Requirement
160
140
  none: false
161
141
  requirements:
162
142
  - - ">="
@@ -172,8 +152,8 @@ dependencies:
172
152
  - 1
173
153
  version: "1"
174
154
  type: :runtime
175
- version_requirements: *id008
176
- description: Inochi is an infrastructure for Ruby projects that helps you test, document, package, publish, and announce your projects. It encourages great documentation and reduces project administrivia.
155
+ version_requirements: *id007
156
+ description: ""
177
157
  email:
178
158
  executables:
179
159
  - inochi
@@ -191,30 +171,28 @@ files:
191
171
  - lib/inochi/templates/CREDITS.rbs
192
172
  - lib/inochi/templates/inochi.rb.rbs
193
173
  - lib/inochi/templates/test_runner.rbs
174
+ - lib/inochi/templates/inochi.conf.rbs
194
175
  - lib/inochi/templates/LICENSE.rbs
195
176
  - lib/inochi/templates/README.rbs
196
177
  - lib/inochi/templates/HACKING.rbs
178
+ - lib/inochi/templates/INSTALL.rbs
197
179
  - lib/inochi/templates/USAGE.rbs
198
180
  - lib/inochi/templates/library.rbs
199
181
  - lib/inochi/templates/command.rbs
200
182
  - lib/inochi/templates/HISTORY.rbs
201
- - lib/inochi/templates/EXAMPLES.rbs
183
+ - lib/inochi/templates/SYNOPSIS.rbs
202
184
  - lib/inochi/templates/library_test.rb.rbs
203
185
  - lib/inochi/templates/BEYOND.rbs
204
186
  - lib/inochi/templates/MANUAL.rbs
205
- - lib/inochi/templates/inochi.opts.rbs
206
187
  - lib/inochi/tasks/2-api.rake
207
- - lib/inochi/tasks/0-project.rake
188
+ - lib/inochi/tasks/3-man.rake.css
208
189
  - lib/inochi/tasks/4-ann.rake
209
190
  - lib/inochi/tasks/6-pub.rake
210
- - lib/inochi/tasks/1-init.rake
211
191
  - lib/inochi/tasks/3-man.rake
212
192
  - lib/inochi/tasks/5-gem.rake
213
193
  - LICENSE
214
194
  - CREDITS
215
- - man.html
216
- - man/man1/inochi.1.gz
217
- - logo/inochi.png
195
+ - man/man1/inochi.1
218
196
  has_rdoc: true
219
197
  homepage: http://snk.tuxfamily.org/lib/inochi/
220
198
  licenses: []
@@ -1,25 +0,0 @@
1
- task :@project do
2
- begin
3
- @project_options_file = 'inochi.opts'
4
- @project_options = YAML.load_file(@project_options_file).to_hash
5
-
6
- # load the project module
7
- library_file = Dir['lib/*/inochi.rb'].first
8
- package_name = File.basename(File.dirname(library_file))
9
- library_name = File.read(library_file)[/\b(module|class)\b\s+(\w+)/, 2]
10
-
11
- $LOAD_PATH.unshift 'lib'
12
- require "#{package_name}/inochi"
13
-
14
- @project_module = Object.const_get(library_name)
15
- @project_package_name = package_name
16
- @project_library_name = library_name
17
- @project_gem_file = "#{@project_package_name}-#{@project_module::VERSION}.gem"
18
- rescue
19
- puts
20
- puts 'The current directory is not an Inochi project.'
21
- puts 'Run the `inochi init` command to make it one.'
22
- puts
23
- raise
24
- end
25
- end
@@ -1,38 +0,0 @@
1
- desc 'Instill Inochi into current directory.'
2
- task :init do
3
-
4
- unless project_name = ENV['project']
5
- raise ArgumentError, 'project name not specified'
6
- end
7
-
8
- library_name = Engine.calc_library_name(project_name)
9
- package_name = ENV['package'] || Engine.calc_package_name(library_name)
10
-
11
- project_version = '0.0.0'
12
- project_release = Time.now.strftime('%F')
13
-
14
- command_file = "bin/#{package_name}"
15
- create_from_rbs binding, command_file, 'command'
16
- chmod 0755, command_file
17
-
18
- create_from_rbs binding, 'inochi.opts'
19
-
20
- create_from_rbs binding, "lib/#{package_name}.rb", 'library'
21
- create_from_rbs binding, "lib/#{package_name}/inochi.rb"
22
-
23
- create_from_rbs binding, 'test/runner', 'test_runner'
24
- chmod 0755, 'test/runner'
25
- create_from_rbs binding, 'test/helper.rb', 'test_helper.rb'
26
- create_from_rbs binding, "test/#{package_name}_test.rb", 'library_test.rb'
27
-
28
- create_from_rbs binding, 'LICENSE'
29
- create_from_rbs binding, 'README'
30
- create_from_rbs binding, 'MANUAL'
31
- create_from_rbs binding, 'USAGE'
32
- create_from_rbs binding, 'EXAMPLES'
33
- create_from_rbs binding, 'HACKING'
34
- create_from_rbs binding, 'HISTORY'
35
- create_from_rbs binding, 'CREDITS'
36
- create_from_rbs binding, 'BEYOND'
37
-
38
- end
@@ -1,24 +0,0 @@
1
- %#----------------------------------------------------------------------------
2
- ## EXAMPLES
3
- %#----------------------------------------------------------------------------
4
-
5
- > TODO: give examples of how to use your
6
- > project to perform certain tasks
7
-
8
- %#----------------------------------------------------------------------------
9
- ### A task
10
- %#----------------------------------------------------------------------------
11
-
12
- > TODO: explain how to perform this task
13
-
14
- %#----------------------------------------------------------------------------
15
- ### Another task
16
- %#----------------------------------------------------------------------------
17
-
18
- > TODO: explain how to perform this task
19
-
20
- %#----------------------------------------------------------------------------
21
- ### Yet another task
22
- %#----------------------------------------------------------------------------
23
-
24
- > TODO: explain how to perform this task
data/logo/inochi.png DELETED
Binary file
data/man.html DELETED
@@ -1,1229 +0,0 @@
1
- <!DOCTYPE html>
2
- <html>
3
- <head>
4
- <meta http-equiv='content-type' value='text/html;charset=utf8'>
5
- <meta name='generator' value='Ronn/v0.7.3 (http://github.com/rtomayko/ronn/tree/0.7.3)'>
6
- <title>inochi(1) - Gives life to Ruby projects</title>
7
- <style type='text/css' media='all'>
8
- /* style: man */
9
- body#manpage {margin:0}
10
- .mp {max-width:100ex;padding:0 9ex 1ex 4ex}
11
- .mp p,.mp pre,.mp ul,.mp ol,.mp dl {margin:0 0 20px 0}
12
- .mp h2 {margin:10px 0 0 0}
13
- .mp > p,.mp > pre,.mp > ul,.mp > ol,.mp > dl {margin-left:8ex}
14
- .mp h3 {margin:0 0 0 4ex}
15
- .mp dt {margin:0;clear:left}
16
- .mp dt.flush {float:left;width:8ex}
17
- .mp dd {margin:0 0 0 9ex}
18
- .mp h1,.mp h2,.mp h3,.mp h4 {clear:left}
19
- .mp pre {margin-bottom:20px}
20
- .mp pre+h2,.mp pre+h3 {margin-top:22px}
21
- .mp h2+pre,.mp h3+pre {margin-top:5px}
22
- .mp img {display:block;margin:auto}
23
- .mp h1.man-title {display:none}
24
- .mp,.mp code,.mp pre,.mp tt,.mp kbd,.mp samp,.mp h3,.mp h4 {font-family:monospace;font-size:14px;line-height:1.42857142857143}
25
- .mp h2 {font-size:16px;line-height:1.25}
26
- .mp h1 {font-size:20px;line-height:2}
27
- .mp {text-align:justify;background:#fff}
28
- .mp,.mp code,.mp pre,.mp pre code,.mp tt,.mp kbd,.mp samp {color:#131211}
29
- .mp h1,.mp h2,.mp h3,.mp h4 {color:#030201}
30
- .mp u {text-decoration:underline}
31
- .mp code,.mp strong,.mp b {font-weight:bold;color:#131211}
32
- .mp em,.mp var {font-style:italic;color:#232221;text-decoration:none}
33
- .mp a,.mp a:link,.mp a:hover,.mp a code,.mp a pre,.mp a tt,.mp a kbd,.mp a samp {color:#0000ff}
34
- .mp b.man-ref {font-weight:normal;color:#434241}
35
- .mp pre {padding:5px 1ex;background:#edeceb;border-left:1ex solid #ddd}
36
- .mp pre code {font-weight:normal;color:#434241}
37
- .mp h2+pre,h3+pre {padding-left:0}
38
- ol.man-decor,ol.man-decor li {margin:3px 0 10px 0;padding:0;float:left;width:33%;list-style-type:none;text-transform:uppercase;color:#999;letter-spacing:1px}
39
- ol.man-decor {width:100%}
40
- ol.man-decor li.tl {text-align:left}
41
- ol.man-decor li.tc {text-align:center;letter-spacing:4px}
42
- ol.man-decor li.tr {text-align:right;float:right}
43
- </style>
44
- <style type='text/css' media='all'>
45
- /* style: toc */
46
- .man-navigation {display:block !important;position:fixed;top:0;left:113ex;height:100%;width:100%;padding:36px 0 0 0;border-left:1px solid #dbdbdb;background:#eee}
47
- .man-navigation a,.man-navigation a:hover,.man-navigation a:link,.man-navigation a:visited {display:block;margin:0;padding:5px 2px 5px 20px;color:#999;text-decoration:none}
48
- .man-navigation a:hover {color:#111;text-decoration:underline}
49
- </style>
50
- <style type='text/css' media='all'>
51
- /* style: 80c */
52
- .mp {max-width:78ex}
53
-
54
- .man-navigation {left:91ex}
55
- </style>
56
- </head>
57
- <!--
58
- The following styles are deprecated and will be removed at some point:
59
- div#man, div#man ol.man, div#man ol.head, div#man ol.man.
60
-
61
- The .man-page, .man-decor, .man-head, .man-foot, .man-title, and
62
- .man-navigation should be used instead.
63
- -->
64
- <body id='manpage'>
65
- <div class='mp' id='man'>
66
-
67
- <div class='man-navigation' style='display:none'>
68
- <a href="#NAME">NAME</a>
69
- <a href="#SYNOPSIS">SYNOPSIS</a>
70
- <a href="#DESCRIPTION">DESCRIPTION</a>
71
- <a href="#OPTIONS">OPTIONS</a>
72
- <a href="#TASKS">TASKS</a>
73
- <a href="#PROJECTS">PROJECTS</a>
74
- <a href="#TUTORIAL">TUTORIAL</a>
75
- <a href="#HACKING">HACKING</a>
76
- <a href="#HISTORY">HISTORY</a>
77
- <a href="#AUTHORS">AUTHORS</a>
78
- <a href="#CREDITS">CREDITS</a>
79
- <a href="#LICENSE">LICENSE</a>
80
- <a href="#SEE-ALSO">SEE ALSO</a>
81
- <a href="#Features">Features</a>
82
- <a href="#Resources">Resources</a>
83
- <a href="#Setup">Setup</a>
84
- <a href="#inochi-init">inochi init</a>
85
- <a href="#inochi-api">inochi api</a>
86
- <a href="#inochi-man">inochi man</a>
87
- <a href="#inochi-gem">inochi gem</a>
88
- <a href="#inochi-ann">inochi ann</a>
89
- <a href="#inochi-pub-ann-ruby-talk">inochi pub:ann:ruby-talk</a>
90
- <a href="#inochi-pub-web">inochi pub:web</a>
91
- <a href="#Options-file">Options file</a>
92
- <a href="#License-file">License file</a>
93
- <a href="#Ruby-library">Ruby library</a>
94
- <a href="#Test-suite">Test suite</a>
95
- <a href="#Shell-command">Shell command</a>
96
- <a href="#Help-manual">Help manual</a>
97
- <a href="#Web-presence">Web presence</a>
98
- <a href="#Creating-a-new-project">Creating a new project</a>
99
- <a href="#Running-the-shell-command">Running the shell command</a>
100
- <a href="#Building-the-help-manual">Building the help manual</a>
101
- <a href="#Implementing-the-project">Implementing the project</a>
102
- <a href="#Prerequisites">Prerequisites</a>
103
- <a href="#Infrastructure">Infrastructure</a>
104
- <a href="#-LOAD_PATH-setup">$LOAD_PATH setup</a>
105
- <a href="#RubyGems-setup">RubyGems setup</a>
106
- <a href="#Running-tests">Running tests</a>
107
- <a href="#Contributing">Contributing</a>
108
- <a href="#Version-4-0-1-2010-07-28-">Version 4.0.1 (2010-07-28)</a>
109
- <a href="#Version-4-0-0-2010-07-25-">Version 4.0.0 (2010-07-25)</a>
110
- <a href="#Version-3-0-0-2010-04-27-">Version 3.0.0 (2010-04-27)</a>
111
- <a href="#Version-2-0-1-2010-04-25-">Version 2.0.1 (2010-04-25)</a>
112
- <a href="#Version-2-0-0-2010-04-24-">Version 2.0.0 (2010-04-24)</a>
113
- <a href="#Version-1-1-1-2009-10-03-">Version 1.1.1 (2009-10-03)</a>
114
- <a href="#Version-1-1-0-2009-09-06-">Version 1.1.0 (2009-09-06)</a>
115
- <a href="#Version-1-0-0-2009-05-03-">Version 1.0.0 (2009-05-03)</a>
116
- <a href="#Version-0-3-0-2009-02-12-">Version 0.3.0 (2009-02-12)</a>
117
- <a href="#Version-0-2-0-2009-01-25-">Version 0.2.0 (2009-01-25)</a>
118
- <a href="#Version-0-1-0-2009-01-13-">Version 0.1.0 (2009-01-13)</a>
119
- <a href="#Version-0-0-1-2009-01-13-">Version 0.0.1 (2009-01-13)</a>
120
- <a href="#Version-0-0-0-2009-01-13-">Version 0.0.0 (2009-01-13)</a>
121
- </div>
122
-
123
- <ol class='man-decor man-head man head'>
124
- <li class='tl'>inochi(1)</li>
125
- <li class='tc'>Version 4.0.1</li>
126
- <li class='tr'>inochi(1)</li>
127
- </ol>
128
-
129
- <h2 id="NAME">NAME</h2>
130
- <p class="man-name">
131
- <code>inochi</code> - <span class="man-whatis">Gives life to Ruby projects</span>
132
- </p>
133
-
134
- <p><img src="logo/inochi.png" alt="" /></p>
135
-
136
- <p>Inochi is an infrastructure for Ruby projects that helps you test, document,
137
- package, publish, and announce your projects. It encourages <em>great</em>
138
- documentation and reduces project administrivia.</p>
139
-
140
- <h3 id="Features">Features</h3>
141
-
142
- <ul>
143
- <li><p>Provides a comprehensive help manual that is written in <a href="http://en.wikipedia.org/wiki/ERuby">eRuby</a> over
144
- <a href="http://daringfireball.net/projects/markdown">Markdown</a> and is rendered into a Web page and a UNIX manual page.</p></li>
145
- <li><p>Announces project releases on <a href="http://raa.ruby-lang.org">RAA</a>, <a href="http://www.ruby-lang.org/en/community/mailing-lists/">ruby-talk</a>, and via RSS feed.</p></li>
146
- <li><p>Stores project information in a single Ruby source file.</p></li>
147
- </ul>
148
-
149
-
150
- <h3 id="Resources">Resources</h3>
151
-
152
- <dl>
153
- <dt>Issue tracker (report bugs, request features, get help)</dt><dd><p><a href="http://github.com/sunaku/inochi/issues" data-bare-link="true">http://github.com/sunaku/inochi/issues</a></p></dd>
154
- <dt>Source code (browse online or obtain with <a href="http://git-scm.com">Git</a>)</dt><dd><p><a href="http://github.com/sunaku/inochi" data-bare-link="true">http://github.com/sunaku/inochi</a></p></dd>
155
- <dt>API documentation</dt><dd><p><a href="http://snk.tuxfamily.org/lib/inochi/api/" data-bare-link="true">http://snk.tuxfamily.org/lib/inochi/api/</a></p></dd>
156
- <dt>Announcements feed</dt><dd><p><a href="http://snk.tuxfamily.org/lib/inochi/ann.xml" data-bare-link="true">http://snk.tuxfamily.org/lib/inochi/ann.xml</a></p></dd>
157
- <dt>Official website</dt><dd><p><a href="http://snk.tuxfamily.org/lib/inochi/" data-bare-link="true">http://snk.tuxfamily.org/lib/inochi/</a></p></dd>
158
- </dl>
159
-
160
-
161
- <h3 id="Setup">Setup</h3>
162
-
163
- <p>Prerequisites:</p>
164
-
165
- <ul>
166
- <li><p><a href="http://ruby-lang.org">Ruby</a> 1.8.6 or newer.</p></li>
167
- <li><p><a href="http://rubygems.org">RubyGems</a> 1.3.6 or newer.</p></li>
168
- <li><p><a href="http://lynx.isc.org">Lynx</a> 2.8.6 or newer.</p></li>
169
- </ul>
170
-
171
-
172
- <p>Installing:</p>
173
-
174
- <pre><code>gem install inochi
175
- </code></pre>
176
-
177
- <p>Upgrading:</p>
178
-
179
- <pre><code>gem update inochi
180
- </code></pre>
181
-
182
- <p>Removing:</p>
183
-
184
- <pre><code>gem uninstall inochi
185
- </code></pre>
186
-
187
- <h2 id="SYNOPSIS">SYNOPSIS</h2>
188
-
189
- <p><code>inochi</code> [<var>OPTIONS</var>] <var>TASK</var> [<var>RAKE_OPTIONS</var>]</p>
190
-
191
- <p><code>inochi init</code> project=<var>PROJECT</var> [package=<var>PACKAGE</var>] [merger=<var>MERGER</var>]</p>
192
-
193
- <h2 id="DESCRIPTION">DESCRIPTION</h2>
194
-
195
- <p>Runs the given <var>TASK</var> (see <strong>TASKS</strong> below) while passing the given
196
- <var>RAKE_OPTIONS</var> to <span class="man-ref">rake<span class="s">(1)</span></span>.</p>
197
-
198
- <h2 id="OPTIONS">OPTIONS</h2>
199
-
200
- <dl>
201
- <dt><code>-h</code>, <code>--help</code></dt><dd><p>Display this manual and exit.</p></dd>
202
- <dt><code>-v</code>, <code>--version</code></dt><dd><p>Print version number and exit.</p></dd>
203
- </dl>
204
-
205
-
206
- <h2 id="TASKS">TASKS</h2>
207
-
208
- <p>The following tasks are available for running. Some of them are explained in
209
- more detail below.</p>
210
-
211
- <dl>
212
- <dt class="flush"><strong>ann</strong></dt><dd>Build all release announcements.</dd>
213
- <dt><strong>ann:feed</strong></dt><dd>Build RSS feed announcement.</dd>
214
- <dt><strong>ann:html</strong></dt><dd>Build HTML announcement.</dd>
215
- <dt><strong>ann:text</strong></dt><dd>Build plain text announcement.</dd>
216
- <dt class="flush"><strong>api</strong></dt><dd>Build API documentation.</dd>
217
- <dt class="flush"><strong>clean</strong></dt><dd>Remove any temporary products.</dd>
218
- <dt class="flush"><strong>clobber</strong></dt><dd>Remove any generated file.</dd>
219
- <dt class="flush"><strong>gem</strong></dt><dd>Build release package for RubyGems.</dd>
220
- <dt class="flush"><strong>init</strong></dt><dd>Instill Inochi into current directory.</dd>
221
- <dt class="flush"><strong>man</strong></dt><dd>Build the help manual.</dd>
222
- <dt class="flush"><strong>pub</strong></dt><dd>Publish a release of this project.</dd>
223
- <dt class="flush"><strong>pub:ann</strong></dt><dd>Announce release on all news outlets.</dd>
224
- <dt><strong>pub:ann:raa</strong></dt><dd>Announce release on RAA (Ruby Application Archive).</dd>
225
- <dt><strong>pub:ann:ruby-talk</strong></dt><dd>Announce release on ruby-talk mailing list.</dd>
226
- <dt class="flush"><strong>pub:gem</strong></dt><dd>Publish gem release package to RubyGems.org.</dd>
227
- <dt class="flush"><strong>pub:web</strong></dt><dd>Publish help manual, API docs, and RSS feed to project website.</dd>
228
- </dl>
229
-
230
-
231
- <h3 id="inochi-init">inochi init</h3>
232
-
233
- <p>Installs the Inochi infrastructure for the project (see <strong>PROJECTS</strong> below) in
234
- the current working directory or upgrades a previous installation thereof.</p>
235
-
236
- <p><code>inochi</code> init <code>project</code>=<var>PROJECT</var> [<code>package</code>=<var>PACKAGE</var>] [<code>merger</code>=<var>MERGER</var>]</p>
237
-
238
- <dl>
239
- <dt class="flush"><var>PROJECT</var></dt><dd><p>Name of the project. This will be normalized into the name of a Ruby
240
- module that will serve as a namespace for all code in the project.</p></dd>
241
- <dt class="flush"><var>PACKAGE</var></dt><dd><p>Name of the project's package directory, shell command, and basename of the
242
- project library file.</p></dd>
243
- <dt class="flush"><var>MERGER</var></dt><dd><p>Command that invokes a text merging tool with three arguments: (1) old file,
244
- (2) new file, (3) output file. The command should direct the result of
245
- merging the old file and the new file to the output file. In addition, the
246
- command <em>must not</em> modify the old file or the new file.</p></dd>
247
- </dl>
248
-
249
-
250
- <p>Pre-existing files are not overwritten. Instead, it is your responsibility to
251
- merge changes between pre-existing and newly generated files. You can do this
252
- with the aid of an automated text merging tool such as <a href="http://meld.sourceforge.net">meld</a>, <a href="http://tkdiff.sourceforge.net">tkdiff</a>, or
253
- <a href="http://kdiff3.sourceforge.net">kdiff3</a> by following these steps:</p>
254
-
255
- <ol>
256
- <li><p>Create a file named <code>merge2</code> containing the following text:</p>
257
-
258
- <pre><code>#!/bin/sh
259
- old=$1; new=$2; out=$3;
260
- # meld "$new" "$out" # use meld
261
- # tkdiff "$old" "$new" -o "$out" # use tkdiff
262
- # kdiff3 --merge "$old" "$new" --output "$out" # use kdiff3
263
- </code></pre></li>
264
- <li><p>Uncomment the line corresponding to the tool you wish to use.</p></li>
265
- <li><p>Make the file executable:</p>
266
-
267
- <pre><code>chmod +x merge2
268
- </code></pre></li>
269
- <li><p>Pass the file's path as the value of <var>MERGER</var>:</p>
270
-
271
- <pre><code>inochi init merger=path/to/merge2
272
- </code></pre></li>
273
- </ol>
274
-
275
-
276
- <p>Now your chosen text merging tool will be launched to help you transfer your
277
- changes. When you are finished, save the merged file and exit the merging
278
- tool. If you do not want to transfer any changes, then simply exit the
279
- merging tool <em>without saving</em> any changes to the merged file!</p>
280
-
281
- <h3 id="inochi-api">inochi api</h3>
282
-
283
- <p>Builds API documentation for the project's Ruby library using <a href="http://yardoc.org/more">YARD</a>. Ruby
284
- constructs marked with <code>@private</code> are omitted from the API documentation.</p>
285
-
286
- <h3 id="inochi-man">inochi man</h3>
287
-
288
- <p>Renders the help manual's source files (see <strong>Help manual</strong> below) into:</p>
289
-
290
- <dl>
291
- <dt>man.ronn</dt><dd><p><a href="http://github.com/rtomayko/ronn">Ronn</a> format, rendered by <a href="http://snk.tuxfamily.org/lib/ember/">Ember</a>.</p></dd>
292
- <dt>man.html</dt><dd><p>HTML (Web page) format, rendered by <a href="http://github.com/rtomayko/ronn">Ronn</a>.</p></dd>
293
- <dt>man/man1/<var>PACKAGE</var>.1.gz</dt><dd><p>Roff (UNIX manual page) format, rendered by <a href="http://github.com/rtomayko/ronn">Ronn</a>.</p></dd>
294
- </dl>
295
-
296
-
297
- <h3 id="inochi-gem">inochi gem</h3>
298
-
299
- <p>Builds a release package in RubyGems format (plainly known as a <strong>gem</strong>):</p>
300
-
301
- <dl>
302
- <dt><var>PACKAGE</var>-<var>VERSION</var>.gem</dt><dd><p>The gem itself.</p></dd>
303
- <dt><var>PACKAGE</var>-<var>VERSION</var>.gemspec</dt><dd><p>Ruby representation of the gem's specification.</p></dd>
304
- </dl>
305
-
306
-
307
- <p>The gem specification is pre-initialized with information from the project's
308
- Ruby library and help manual. In particular:</p>
309
-
310
- <dl>
311
- <dt>gem.description</dt><dd><p>Plain text version of all content between the <strong>ABOUT</strong> heading and any
312
- subsequent heading.</p></dd>
313
- <dt>gem.authors</dt><dd><p>Plain text version of all content between the <strong>AUTHORS</strong> heading and any
314
- subsequent heading.</p></dd>
315
- <dt>gem.files</dt><dd><p>Only contains the project's <code>LICENSE</code> and <code>CREDITS</code> files, rendered help
316
- manual, Ruby library, shell command, and C extension.</p>
317
-
318
- <p>All other files (such as the test suite and help manual source files) are
319
- omitted (1) to reduce the gem file size and (2) because they are really only
320
- needed during development.</p></dd>
321
- </dl>
322
-
323
-
324
- <p>The gem specification can be further customized through the <code>:gem_spec_logic</code>
325
- parameter defined in the project's options file (see <strong>Options file</strong> below).</p>
326
-
327
- <h3 id="inochi-ann">inochi ann</h3>
328
-
329
- <p>Builds release announcements which can be edited by hand before publishing:</p>
330
-
331
- <dl>
332
- <dt>ann.html</dt><dd><p>Web page version of the release announcement.</p></dd>
333
- <dt class="flush">ann.txt</dt><dd><p>Plain text version of the release announcement; converted from the Web page
334
- version by <a href="http://lynx.isc.org">Lynx</a>.</p></dd>
335
- <dt class="flush">ann.xml</dt><dd><p>RSS feed version of the release announcement.</p></dd>
336
- </dl>
337
-
338
-
339
- <h3 id="inochi-pub-ann-ruby-talk">inochi pub:ann:ruby-talk</h3>
340
-
341
- <p>Announces the release on the <a href="http://www.ruby-lang.org/en/community/mailing-lists/">ruby-talk</a> mailing list.</p>
342
-
343
- <p>It is recommended that you build, review, and edit the <code>ann.txt</code> file <em>by
344
- hand</em> before running this command because (1) the body of that file is
345
- published directly as the announcement message and (2) HTML to plain text
346
- conversion is not perfect.</p>
347
-
348
- <h3 id="inochi-pub-web">inochi pub:web</h3>
349
-
350
- <p>Publishes the help manual, API documentation, and RSS feed to project website
351
- using <span class="man-ref">rsync<span class="s">(1)</span></span> according to the :pub_web_* parameters defined in the
352
- project's options file (see <strong>Options file</strong> below).</p>
353
-
354
- <h2 id="PROJECTS">PROJECTS</h2>
355
-
356
- <p>A project instilled with Inochi is composed of an options file, a license,
357
- source code, documentation, and a Web presence; which are all explained below.</p>
358
-
359
- <h3 id="Options-file">Options file</h3>
360
-
361
- <p>A project's options file is a <a href="http://www.yaml.org/YAML_for_ruby.html">YAML</a> document named <code>inochi.opts</code> that defines
362
- the following optional parameters for the various <a class="man-ref" href="inochi.1.html">inochi<span class="s">(1)</span></a> sub-commands:</p>
363
-
364
- <dl>
365
- <dt>:pub_web_target</dt><dd><p>Location where <code>inochi pub:web</code> will upload files. This value
366
- can use any local/remote/protocol syntax supported by <span class="man-ref">rsync<span class="s">(1)</span></span>.</p></dd>
367
- <dt>:pub_web_options</dt><dd><p>Options for <span class="man-ref">rsync<span class="s">(1)</span></span>, which uploads files for <code>inochi pub:web</code>.</p></dd>
368
- <dt>:pub_web_extras</dt><dd><p>Additional files for <code>inochi pub:web</code> to upload. The values listed
369
- here can use any local/remote/protocol syntax supported by <span class="man-ref">rsync<span class="s">(1)</span></span>.</p>
370
-
371
- <p>Example:</p>
372
-
373
- <pre><code>:pub_web_extras:
374
- - some/file
375
- - some_user@some_host:some/path
376
- </code></pre></dd>
377
- <dt>:gem_spec_logic</dt><dd><p>Arbitrary Ruby code that will configure this project's RubyGem before it
378
- is built by <code>inochi gem</code>. This code has access to a local variable named
379
- <code>gem</code> which holds a Gem::Specification object representing this project.</p>
380
-
381
- <p>Example:</p>
382
-
383
- <pre><code>:gem_spec_logic: |
384
- # show the Inochi-provided specification for this project's gem
385
- puts gem.to_ruby
386
-
387
- # add files that are outside this project directory to the gem
388
- gem.files += ['some', 'files', 'in', 'this', 'directory']
389
-
390
- # omit some added files in this project's directory from the gem
391
- gem.files -= ['lib/top_secret.rb', 'bin/more_top_secret_stuff']
392
-
393
- # and so on... anything is possible! use your imagination!
394
- </code></pre></dd>
395
- </dl>
396
-
397
-
398
- <h3 id="License-file">License file</h3>
399
-
400
- <p>A project's license defines the legal conditions under which the project is
401
- developed and distributed. It is stored in a file named LICENSE at the root
402
- of the project directory.</p>
403
-
404
- <h3 id="Ruby-library">Ruby library</h3>
405
-
406
- <p>A project's Ruby library is composed of the following files:</p>
407
-
408
- <dl>
409
- <dt>lib/<var>PACKAGE</var>.rb</dt><dd><p>Defines the project's namespace (Ruby module or class) and registers
410
- sub-libraries to be automatically loaded on demand (Kernel#autoload).</p></dd>
411
- <dt>lib/<var>PACKAGE</var>/inochi.rb</dt><dd><p>Defines project information in Ruby constants within the project's namespace
412
- (Ruby module or class) and establishes version constraints for gems this
413
- project depends on if RubyGems is available in the user's environment.
414
- Unsatisfied constraints are simply printed to the standard error stream;
415
- they do not raise a <code>Gem::LoadError</code> exception.</p></dd>
416
- </dl>
417
-
418
-
419
- <h3 id="Test-suite">Test suite</h3>
420
-
421
- <p>A project's test suite is composed of the following files:</p>
422
-
423
- <dl>
424
- <dt>test/runner</dt><dd><p>Executable Ruby script that hides the details of running the test suite.</p></dd>
425
- <dt>test/helper.rb</dt><dd><p>Ruby source file that prepares the testing environment by loading a testing
426
- library and defining common knowledge and utility logic shared by the actual
427
- tests.</p></dd>
428
- <dt>test/**/*_test.rb</dt><dd><p>Part of the test suite. Performs the actual testing.</p></dd>
429
- </dl>
430
-
431
-
432
- <h3 id="Shell-command">Shell command</h3>
433
-
434
- <p>A project's shell command is an executable Ruby source file that serves as a
435
- gateway into the project's Ruby library from the command line:</p>
436
-
437
- <dl>
438
- <dt>bin/<var>PACKAGE</var></dt><dd>Expects the project's <code>lib/</code> directory to be on Ruby's $LOAD_PATH (see
439
- <strong>HACKING</strong> below). This requirement is automatically met when a user
440
- installs the project using RubyGems.</dd>
441
- </dl>
442
-
443
-
444
- <h3 id="Help-manual">Help manual</h3>
445
-
446
- <p>A project's help manual is a monolithic <a href="http://en.wikipedia.org/wiki/ERuby">eRuby</a> template that is (1) processed
447
- by <a href="http://snk.tuxfamily.org/lib/ember/">Ember</a> with its shorthand notation, hierarchical unindentation, and
448
- missing <code>&lt;% end %></code> inference features enabled, and (2) composed of the
449
- following source files:</p>
450
-
451
- <dl>
452
- <dt class="flush">MANUAL</dt><dd><p>Primary source file of the help manual that (1) defines common knowledge and
453
- utility logic and (2) divides its content into the following files for
454
- easier editing and maintenance.</p></dd>
455
- <dt class="flush">README</dt><dd><p>Introduces the project, its Web presence, and gives setup instructions.</p></dd>
456
- <dt class="flush">USAGE</dt><dd><p>Explains how to use the project's shell command.</p></dd>
457
- <dt>EXAMPLES</dt><dd><p>Illustrates how to perform common tasks with the project's shell command and
458
- Ruby library, respectively.</p></dd>
459
- <dt class="flush">HACKING</dt><dd><p>Instructs fellow software developers on running, testing, and hacking the
460
- project's source code.</p></dd>
461
- <dt class="flush">HISTORY</dt><dd><p>Records notes about current and past releases of the project in terms of
462
- incompatible changes, new features, bug fixes, and housekeeping activities.</p></dd>
463
- <dt class="flush">CREDITS</dt><dd><p>Attributes all developers and contributors whose efforts have made the
464
- project what it is today.</p></dd>
465
- <dt class="flush">FURTHER</dt><dd><p>Refers to related commands, help manuals, and topics beyond this project.</p></dd>
466
- </dl>
467
-
468
-
469
- <h3 id="Web-presence">Web presence</h3>
470
-
471
- <p>A project's a Web presence is composed, at minimum, of the following:</p>
472
-
473
- <dl>
474
- <dt>Code repository</dt><dd><p>Where fellow software developers can obtain the latest source code.</p></dd>
475
- <dt>Issue tracker</dt><dd><p>Where users and contributors can submit patches, request features, and get
476
- help.</p></dd>
477
- <dt>Official website</dt><dd><p>Where the help manual, API documentation, and announcements RSS feed can be
478
- accessed (hopefully) permanently.</p></dd>
479
- </dl>
480
-
481
-
482
- <p>You may choose to omit some or all of these components by simply not
483
- mentioning them in the <strong>Resources</strong> section of the help manual's README
484
- source file.</p>
485
-
486
- <h2 id="TUTORIAL">TUTORIAL</h2>
487
-
488
- <p>This section shows Inochi is used to create a simple WordCount project.</p>
489
-
490
- <h3 id="Creating-a-new-project">Creating a new project</h3>
491
-
492
- <p>Create a directory for the project:</p>
493
-
494
- <pre><code>mkdir word_count
495
- </code></pre>
496
-
497
- <p>Instill Inochi into the directory:</p>
498
-
499
- <pre><code>cd word_count
500
- inochi init project=WordCount
501
- </code></pre>
502
-
503
- <p>Review pending work marked as "TODO":</p>
504
-
505
- <pre><code>grep TODO -R .
506
- </code></pre>
507
-
508
- <h3 id="Running-the-shell-command">Running the shell command</h3>
509
-
510
- <p>Run the project's shell command:</p>
511
-
512
- <pre><code>ruby -Ilib bin/word_count
513
- </code></pre>
514
-
515
- <p>View the project version number:</p>
516
-
517
- <pre><code>ruby -Ilib bin/word_count --version
518
- </code></pre>
519
-
520
- <p>View the project help manual:</p>
521
-
522
- <pre><code>ruby -Ilib bin/word_count --help
523
- </code></pre>
524
-
525
- <h3 id="Building-the-help-manual">Building the help manual</h3>
526
-
527
- <p>Build the help manual:</p>
528
-
529
- <pre><code>inochi man
530
- </code></pre>
531
-
532
- <p>View the help manual in a terminal:</p>
533
-
534
- <pre><code>man man/man1/word_count.1.gz
535
- </code></pre>
536
-
537
- <p>View the help manual in a Web browser:</p>
538
-
539
- <pre><code>man.html
540
- </code></pre>
541
-
542
- <h3 id="Implementing-the-project">Implementing the project</h3>
543
-
544
- <p>Append the following code to the <code>test/word_count_test.rb</code> file:</p>
545
-
546
- <pre><code>class TestWordCount &lt; Test::Unit::TestCase
547
- def test_handles_empty_input
548
- assert_equal(0, WordCount.count(nil))
549
- assert_equal(0, WordCount.count(''))
550
- assert_equal(0, WordCount.count(' '))
551
- end
552
-
553
- def test_handles_single_words
554
- assert_equal(1, WordCount.count('a'))
555
- assert_equal(1, WordCount.count('foo'))
556
- assert_equal(1, WordCount.count('bar'))
557
- end
558
-
559
- def test_handles_multiple_words
560
- assert_equal(2, WordCount.count('a b'))
561
- assert_equal(2, WordCount.count('a-b'))
562
- assert_equal(2, WordCount.count('a/b'))
563
- end
564
-
565
- def test_ignores_punctuation_and_space
566
- assert_equal(0, WordCount.count('!'))
567
- assert_equal(0, WordCount.count('! @ # % #!@#'))
568
- assert_equal(0, WordCount.count(' !'))
569
- assert_equal(0, WordCount.count('! '))
570
- assert_equal(0, WordCount.count(' ! '))
571
- assert_equal(0, WordCount.count(' ! '))
572
- end
573
- end
574
- </code></pre>
575
-
576
- <p>Run the test suite and observe that all tests fail:</p>
577
-
578
- <pre><code>ruby test/runner
579
- </code></pre>
580
-
581
- <p>Append the following code to the <code>lib/word_count.rb</code> file:</p>
582
-
583
- <pre><code>module WordCount
584
- # Returns the number of words in the given input.
585
- def WordCount.count input
586
- input.to_s.split(/\W+/).length
587
- end
588
- end
589
- </code></pre>
590
-
591
- <p>Run the test suite again and observe that all tests pass:</p>
592
-
593
- <pre><code>ruby test/runner
594
- </code></pre>
595
-
596
- <p>Append the following code to the <code>bin/word_count</code> file:</p>
597
-
598
- <pre><code>input = ARGF.read
599
- total = WordCount.count(input)
600
- puts "There are #{total} words in the input."
601
- </code></pre>
602
-
603
- <p>Run the project's shell command on the <code>README</code> file:</p>
604
-
605
- <pre><code>ruby -Ilib bin/word_count README
606
- </code></pre>
607
-
608
- <h2 id="HACKING">HACKING</h2>
609
-
610
- <p>This section is meant for people who want to develop Inochi's source code.</p>
611
-
612
- <h3 id="Prerequisites">Prerequisites</h3>
613
-
614
- <p>Install Ruby libraries necessary for development:</p>
615
-
616
- <pre><code>gem install inochi --development
617
- </code></pre>
618
-
619
- <h3 id="Infrastructure">Infrastructure</h3>
620
-
621
- <p><a href="http://snk.tuxfamily.org/lib/inochi/">Inochi</a> serves as the project infrastructure for Inochi. It handles tasks
622
- such as building this help manual and API documentation, and packaging,
623
- announcing, and publishing new releases. See its help manual and list of
624
- tasks to get started:</p>
625
-
626
- <pre><code>inochi --help # display help manual
627
- inochi --tasks # list available tasks
628
- </code></pre>
629
-
630
- <h3 id="-LOAD_PATH-setup">$LOAD_PATH setup</h3>
631
-
632
- <p>Ensure that the <code>lib/</code> directory is listed in Ruby's <code>$LOAD_PATH</code> before you
633
- use any libraries therein or run any executables in the <code>bin/</code> directory.</p>
634
-
635
- <p>This can be achieved by passing an option to Ruby:</p>
636
-
637
- <pre><code>ruby -Ilib bin/inochi
638
- irb -Ilib -r inochi
639
- </code></pre>
640
-
641
- <p>Or by setting the <code>$RUBYLIB</code> environment variable:</p>
642
-
643
- <pre><code>export RUBYLIB=lib # bash, ksh, zsh
644
- setenv RUBYLIB lib # csh
645
- set -x RUBYLIB lib # fish
646
-
647
- ruby bin/inochi
648
- irb -r inochi
649
- </code></pre>
650
-
651
- <p>Or by running Ruby through the <a href="http://github.com/chneukirchen/rup/blob/master/ruby-wrapper">ruby-wrapper</a> tool.</p>
652
-
653
- <h3 id="RubyGems-setup">RubyGems setup</h3>
654
-
655
- <p>If you use Ruby 1.8 or older, then ensure that RubyGems is activated before
656
- you use any libraries in the <code>lib/</code> directory or run any executables in the
657
- <code>bin/</code> directory.</p>
658
-
659
- <p>This can be achieved by passing an option to Ruby:</p>
660
-
661
- <pre><code>ruby -rubygems bin/inochi
662
- irb -rubygems -r inochi
663
- </code></pre>
664
-
665
- <p>Or by setting the <code>$RUBYOPT</code> environment variable:</p>
666
-
667
- <pre><code>export RUBYOPT=-rubygems # bash, ksh, zsh
668
- setenv RUBYOPT -rubygems # csh
669
- set -x RUBYOPT -rubygems # fish
670
- </code></pre>
671
-
672
- <h3 id="Running-tests">Running tests</h3>
673
-
674
- <p>Simply execute the included test runner, which sets up Ruby's <code>$LOAD_PATH</code> for
675
- testing, loads the <code>test/helper.rb</code> file, and then evaluates all
676
- <code>test/**/*_test.rb</code> files:</p>
677
-
678
- <pre><code>ruby test/runner
679
- </code></pre>
680
-
681
- <p>Its exit status will indicate whether all tests have passed. It may also
682
- print additional pass/fail information depending on the testing library used
683
- in the <code>test/helper.rb</code> file.</p>
684
-
685
- <h3 id="Contributing">Contributing</h3>
686
-
687
- <p>Fork this project on GitHub (see <strong>Resources</strong> above) and send a pull request.</p>
688
-
689
- <h2 id="HISTORY">HISTORY</h2>
690
-
691
- <p>This section contains release notes of current and past releases.</p>
692
-
693
- <h3 id="Version-4-0-1-2010-07-28-">Version 4.0.1 (2010-07-28)</h3>
694
-
695
- <p>This release fixes a bug in gem version dependency establishment.</p>
696
-
697
- <p>Bug fixes:</p>
698
-
699
- <ul>
700
- <li><p>Gem version dependencies were not being established in Ruby 1.8.7 and
701
- 1.9.2 because <code>Kernel#gem</code> <a href="http://redmine.ruby-lang.org/issues/show/3617">is a private method</a> in those Ruby versions.</p>
702
-
703
- <p>To propagate this fix into your projects, please reinitialize them with
704
- this version of Inochi.</p></li>
705
- </ul>
706
-
707
-
708
- <h3 id="Version-4-0-0-2010-07-25-">Version 4.0.0 (2010-07-25)</h3>
709
-
710
- <p>Incompatible changes:</p>
711
-
712
- <ul>
713
- <li>Rename the "VERSIONS" section in the HISTORY file to "HISTORY".</li>
714
- </ul>
715
-
716
-
717
- <p>Changes you will see in upgraded or newly generated projects:</p>
718
-
719
- <ul>
720
- <li><p>Rename the "FURTHER" file to "BEYOND".</p></li>
721
- <li><p>Rename <code>test/test_helper.rb</code> to just <code>test/helper.rb</code>.</p></li>
722
- <li><p>Store resource URLs in variables in MANUAL for reuse.</p></li>
723
- <li><p>Provide more precise link to ruby-wrapper tool in HACKING.</p></li>
724
- </ul>
725
-
726
-
727
- <p>New features:</p>
728
-
729
- <ul>
730
- <li><p>Ensure that project version matches release notes before building a gem.
731
- This helps to prevent the problem where you sometimes forget to update
732
- both the release notes and the project information file simultaneously.</p></li>
733
- <li><p>Display announcement message to user (and make them confirm it) before
734
- publishing to ruby-talk. This helps to prevent you from appearing inept
735
- and having to apologize later for your publishing blunders.</p></li>
736
- <li><p>Add <code>-d</code> (to enable <code>$DEBUG</code>) and <code>-v</code> (to enable <code>$VERBOSE</code>)
737
- command-line options to the generated <code>test/runner</code> script.</p></li>
738
- </ul>
739
-
740
-
741
- <p>Bug fixes:</p>
742
-
743
- <ul>
744
- <li><p>Various compatibility fixes for Ruby 1.9.2-rc2.</p></li>
745
- <li><p>Prefix <code>test/runner</code> command with "ruby" for Windows users.</p></li>
746
- <li><p>Ember::WEBSITE was always being emitted in README.</p></li>
747
- </ul>
748
-
749
-
750
- <p>Housekeeping:</p>
751
-
752
- <ul>
753
- <li><p>Add version constraints for YARD and Mechanize dependencies.</p></li>
754
- <li><p>Upgrade from Dfect 1.1.0 to Detest 3.1.0 for unit testing.</p></li>
755
- <li><p>Upgrade to Ronn 0.7.0 for generating this user manual.</p></li>
756
- </ul>
757
-
758
-
759
- <h3 id="Version-3-0-0-2010-04-27-">Version 3.0.0 (2010-04-27)</h3>
760
-
761
- <p>Incompatible changes:</p>
762
-
763
- <ul>
764
- <li><p>The <code>require()</code> class method is no longer emitted on your project's
765
- namespace. Instead, gem version constraints are established up front when
766
- your project's Ruby library is first loaded.</p></li>
767
- <li><p>Author names are now fetched from the AUTHORS section, not CREDITS.</p></li>
768
- <li><p>Project information is now placed in the NAME section, not ABOUT.</p></li>
769
- </ul>
770
-
771
-
772
- <p>Bug fixes:</p>
773
-
774
- <ul>
775
- <li><p>Reflect current Inochi version in gem constraint.</p></li>
776
- <li><p>Forgot to list <a href="http://snk.tuxfamily.org/lib/ember/">Ember</a> as a runtime gem dependency.</p></li>
777
- </ul>
778
-
779
-
780
- <p>Housekeeping:</p>
781
-
782
- <ul>
783
- <li><p>Move all task documentation into new <strong>TASKS</strong> section.</p></li>
784
- <li><p>Move TASKS &amp; PROJECTS information into separate files.</p></li>
785
- </ul>
786
-
787
-
788
- <h3 id="Version-2-0-1-2010-04-25-">Version 2.0.1 (2010-04-25)</h3>
789
-
790
- <p>This release fixes some bugs and adds a simple tutorial to the help manual.</p>
791
-
792
- <p>Bug fixes:</p>
793
-
794
- <ul>
795
- <li><p>Task files were not loaded in correct order. As a result, certain Inochi
796
- tasks would fail (depending on the sorting order of your filesystem) with
797
- the following cryptic error:</p>
798
-
799
- <pre><code>inochi aborted!
800
- Don't know how to build task ''
801
- /usr/lib/ruby/gems/1.9.1/gems/rake-0.8.7/lib/rake.rb:1728:in `[]'
802
- (See full trace by running task with --trace)
803
- </code></pre></li>
804
- <li><p>LICENSE file template lacked a "TODO" marker.</p></li>
805
- <li><p>Forgot version number heading in announcement.</p></li>
806
- </ul>
807
-
808
-
809
- <p>Housekeeping:</p>
810
-
811
- <ul>
812
- <li>Restored the simple WordCount tutorial from version 1.1.1.
813
- See <strong>TUTORIAL</strong> above.</li>
814
- </ul>
815
-
816
-
817
- <h3 id="Version-2-0-0-2010-04-24-">Version 2.0.0 (2010-04-24)</h3>
818
-
819
- <p>This release makes Inochi a development-time dependency only, documents nearly
820
- everything in the help manual, renders the help manual as a UNIX manual page,
821
- simplifies the project infrastructure it provides, and removes needless cruft.</p>
822
-
823
- <p>Incompatible changes:</p>
824
-
825
- <ul>
826
- <li><p>Inochi is no longer a runtime dependency (gem or otherwise) for projects
827
- that use it. It also no longer runs tests, creates project namespaces, or
828
- provides libraries for internationalization, combinatorics, command-line
829
- parsing, utility logic, or Rakefiles.</p>
830
-
831
- <p>See <strong>PROJECTS</strong> to learn about the new Inochi infrastructure.</p></li>
832
- <li><p>The help manual is now processed by <a href="http://github.com/rtomayko/ronn">Ronn</a> instead of <a href="http://snk.tuxfamily.org/lib/erbook/">ERBook</a>. As a
833
- result, you may only use plain <a href="http://daringfireball.net/projects/markdown">Markdown</a> and <a href="http://en.wikipedia.org/wiki/ERuby">eRuby</a> when writing it.</p></li>
834
- <li><p>Announcement publishing tasks no longer read login information from the
835
- <code>~/.config/inochi/logins.yaml</code> file and prompt you to enter that
836
- information manually instead. As a result, the forementioned file is no
837
- longer recognized or used by Inochi so you may safely delete it.</p></li>
838
- </ul>
839
-
840
-
841
- <p>New features:</p>
842
-
843
- <ul>
844
- <li><p>The help manual is now available as a UNIX manual page (thanks to <a href="http://github.com/rtomayko/ronn">Ronn</a>)
845
- and is now divided into smaller files that can be read directly without
846
- needing a special viewer, and are named according to open-source packaging
847
- conventions (such as README, HACKING, and LICENSE) so that they draw the
848
- attention of users unaccustomed to the organization of your project.</p></li>
849
- <li><p>A <code>require</code> class method is now added to the project's namespace. This
850
- method verifies that the library or gem being required meets the
851
- dependency version constraints defined by the project.</p></li>
852
- <li><p>A <code>test/runner</code> script is now generated. It provides a fast,
853
- self-contained way to run your project's test suite.</p></li>
854
- <li><p>Inochi is now a Rake application. A <code>Rakefile</code> is not necessary.</p></li>
855
- </ul>
856
-
857
-
858
- <p>Housekeeping:</p>
859
-
860
- <ul>
861
- <li><p>Many KISS and YAGNI fueled iterations later, this is it! :-)</p></li>
862
- <li><p>Nearly every aspect of Inochi is now meticulously documented in the help
863
- manual to the best of my ability. If I missed something important, please
864
- notify me or contribute the correction yourself!</p></li>
865
- </ul>
866
-
867
-
868
- <h3 id="Version-1-1-1-2009-10-03-">Version 1.1.1 (2009-10-03)</h3>
869
-
870
- <p>This release improves Ruby 1.9 support and upgrades gem dependencies.</p>
871
-
872
- <p>Bug fixes:</p>
873
-
874
- <ul>
875
- <li><p><code>require()</code> was unable to find project library in Ruby 1.9.2dev.</p></li>
876
- <li><p>Ruby 1.9 warning about "shadowing outer variable".</p></li>
877
- <li><p>Ruby 1.9 error about "incompatible encoding regexp match".</p></li>
878
- </ul>
879
-
880
-
881
- <p>Housekeeping:</p>
882
-
883
- <ul>
884
- <li><p>The "spicycode-rcov" project was officially renamed to "relevance-rcov".</p></li>
885
- <li><p>Upgrade to RubyForge 2.x library for publishing gems.</p></li>
886
- </ul>
887
-
888
-
889
- <h3 id="Version-1-1-0-2009-09-06-">Version 1.1.0 (2009-09-06)</h3>
890
-
891
- <p>This release improves the user manual and scaffold generator output, injects
892
- more metadata into gems, adds support for Microsoft web browsers, and fixes
893
- some bugs.</p>
894
-
895
- <p>New features:</p>
896
-
897
- <ul>
898
- <li><p>Add instructions for building gems without Inochi as a runtime dependency.</p></li>
899
- <li><p>Put release notes in "description" field of gemspec, as <a href="http://www.ruby-forum.com/topic/190220#830072">suggested by Eric
900
- Hodel</a>, so that subscribers
901
- of <a href="http://gems.rubyforge.org/index.rss">the RubyForge gems feed</a> are
902
- aware of the changes in a published gem.</p></li>
903
- <li><p>Set the "date" field in gemspec to project release date.</p></li>
904
- <li><p>Change file extension of generated user manuals from .xhtml to .html to
905
- accomodate Microsoft web browsers' inability to process the
906
- application/xhtml+xml mime type.</p></li>
907
- </ul>
908
-
909
-
910
- <p>Bug fixes:</p>
911
-
912
- <ul>
913
- <li><p>The sdoc library was necessary to run 'rake test'.</p></li>
914
- <li><p>Forgot to add <code>:develop</code> option to scaffold generator output.</p></li>
915
- <li><p>Make "rake lang:dump" unconditionally overwrite the dump file.</p></li>
916
- <li><p>Fix gem not being built and prevent Maruku errors for the dummy
917
- "WordCount" project in the user manual.</p></li>
918
- <li><p>Use /usr/bin/env instead of /usr/bin/ruby to launch Ruby for better
919
- portability.</p></li>
920
- </ul>
921
-
922
-
923
- <p>Housekeeping:</p>
924
-
925
- <ul>
926
- <li><p>Use simpler Copyright reminder at the top of every file.</p></li>
927
- <li><p>Open source is for fun, so <a href="http://loiclemeur.com/english/2009/03/never-criticize-your-competitors.html">be
928
- nice</a>:
929
- speak of "related works" instead of "competitors".</p></li>
930
- <li><p>Rename "Tutorial" to "General walkthrough" in user manual and add a
931
- "Specific topics" section for housing uncommon use cases.</p></li>
932
- <li><p>Remove "logistics" section and redistribute its contents in more
933
- suitable locations in the user manual.</p></li>
934
- </ul>
935
-
936
-
937
- <h3 id="Version-1-0-0-2009-05-03-">Version 1.0.0 (2009-05-03)</h3>
938
-
939
- <p>This release allows your gems to not depend on Inochi, lets you choose which
940
- unit testing library to use, adds new utility libraries and rake tasks, and
941
- fixes some bugs.</p>
942
-
943
- <p>Incompatible changes:</p>
944
-
945
- <ul>
946
- <li><p>Your program is no longer halted by <code>Inochi.init()</code> and <code>Inochi.rake()</code> if
947
- gem dependencies are not satified. A warning is issued instead.</p></li>
948
- <li><p>The <code>project_summary</code> and <code>project_history</code> nodes, which are provided by
949
- <code>Inochi.book()</code> to the user manual, have been renamed to <code>project</code> and
950
- <code>history</code> respectively.</p></li>
951
- <li><p>ERBook 7.1.0 is now used for generating the user manual. This is a major
952
- step up from the previous version, and so it has incompatible changes.
953
- See its release notes for details.</p></li>
954
- <li><p><a href="http://github.com/voloko/sdoc/tree/master">SDoc</a> is now used to generate
955
- API documentation instead of <a href="http://yard.rubyforge.org">YARD</a>. If you
956
- link to particular classes or methods in the generated API documentation,
957
- be sure to update your link addresses!</p></li>
958
- <li><p>Minitest is no longer the default testing library. You must specify which
959
- testing library you want to use via the <code>:test_with</code> option of the
960
- <code>Inochi.rake()</code> method. See the "Test execution" section for details.</p></li>
961
- <li><p>The "pak" rake task, which is provided by <code>Inochi.rake()</code>, has been
962
- renamed to "gem".</p></li>
963
- </ul>
964
-
965
-
966
- <p>New features:</p>
967
-
968
- <ul>
969
- <li><p>Add <code>:inochi_consumer</code> and <code>:inochi_producer</code> options to <code>Inochi.rake()</code>
970
- which allows you to <em>avoid</em> having Inochi as a runtime and development
971
- dependency, respectively, for your project's gem.</p>
972
-
973
- <p>This is useful if you just want to use Inochi facilities for building a
974
- gem for a pure Ruby library that does not have any need for Inochi's
975
- runtime convenience facilities.</p></li>
976
- <li><p>Add <code>:develop</code> option for <code>Inochi.init()</code> which lets you specify RubyGems
977
- as development dependencies in the same way as the <code>:require</code> option.</p></li>
978
- <li><p>Add "lint" rake task which reports <a href="http://www.infoq.com/news/2008/11/static-analysis-tool-roundup">code quality
979
- statistics</a>.</p></li>
980
- <li><p>Add "test:cov" rake task which reports code coverage statistics.</p></li>
981
- <li><p>Add "test:ruby" task which runs all tests with
982
- <a href="http://www.infoq.com/news/2008/02/multiruby-testing">multiruby</a>.</p></li>
983
- <li><p>Add 'rake opts=' environment variable, which lets you specify command-line
984
- arguments directly to the Ruby interpreter, for all test* rake tasks.</p></li>
985
- <li><p>Add inochi/util/combo combinatorics library for enumerations,
986
- permutations, and combinations which are all useful in exhaustive
987
- brute-force unit testing.</p></li>
988
- <li><p>Add inochi/util/tempdir library which really should be in the Ruby
989
- standard library.</p></li>
990
- </ul>
991
-
992
-
993
- <p>Bug fixes:</p>
994
-
995
- <ul>
996
- <li><p>The "enable email notification" checkbox was not activated properly when
997
- posting announcement to ruby-talk mailing list via Ruby-Forum.</p></li>
998
- <li><p>Mark gems needed by <code>Inochi.rake()</code> as <em>development</em> dependencies.</p>
999
-
1000
- <p>Users must now run <code>gem install Inochi --development</code> to install these
1001
- dependencies. This also solves the recursive dependency problem between
1002
- Inochi and ERBook.</p></li>
1003
- <li><p>Set executable in gem specification only if it exists.</p></li>
1004
- <li><p>Fix parsing of stack trace in Ruby 1.9.</p></li>
1005
- </ul>
1006
-
1007
-
1008
- <p>Housekeeping:</p>
1009
-
1010
- <ul>
1011
- <li><p>Write contributor names in CREDITS file instead of in the user manual.</p></li>
1012
- <li><p>Use completely lowercase name for Rakefile.</p></li>
1013
- <li><p>Add copyright statement at the top of every source file.</p></li>
1014
- </ul>
1015
-
1016
-
1017
- <h3 id="Version-0-3-0-2009-02-12-">Version 0.3.0 (2009-02-12)</h3>
1018
-
1019
- <p>This release adds support for language translations, improves the user
1020
- interface, and fixes a show-stopper bug for Windows users.</p>
1021
-
1022
- <p>New features:</p>
1023
-
1024
- <ul>
1025
- <li><p>Add support for language translations of phrases used in a project.</p>
1026
-
1027
- <ul>
1028
- <li><p>Add "lang:dump" Rake task for extracting language phrases from project.</p></li>
1029
- <li><p>Add "lang:conv" Rake task for translating dumped phrases into various
1030
- languages using the BabelFish translation service.</p></li>
1031
- <li><p>Add <code>--locale</code> option to a project's main executable for setting user's
1032
- preferred language in spite of the user's locale environment.</p></li>
1033
- </ul>
1034
- </li>
1035
- <li><p>Notify user when attempting to publish announcements in the "pub" Rake
1036
- tasks.</p></li>
1037
- </ul>
1038
-
1039
-
1040
- <p>Bug fixes:</p>
1041
-
1042
- <ul>
1043
- <li><p>In Windows, <code>ENV['USERPROFILE']</code> gives the path to the user's home
1044
- directory and <code>ENV['HOME']</code> is not defined.</p></li>
1045
- <li><p>The only real solution to the circular gem dependency problem is:</p>
1046
-
1047
- <pre><code>gem install --force
1048
- </code></pre>
1049
-
1050
- <p>You should update the "Setup" section in your projects' user manuals
1051
- accordingly.</p></li>
1052
- </ul>
1053
-
1054
-
1055
- <p>Housekeeping:</p>
1056
-
1057
- <ul>
1058
- <li><p>Break the huge lib/inochi/inochi.rb library into smaller files.</p></li>
1059
- <li><p>Instead of adding methods to singleton classes directly, define modules
1060
- and extend to them so that YARDoc documents the methods appropriately.</p></li>
1061
- <li><p>List all project contributors globally in the "Credits" section.</p></li>
1062
- <li><p>Remove "Contributor kudos" paragraph in release notes in favor of
1063
- crediting contributors inline with each item in the release notes.</p></li>
1064
- <li><p>Mention that the project license is ISC for the reader's convenience.</p></li>
1065
- </ul>
1066
-
1067
-
1068
- <h3 id="Version-0-2-0-2009-01-25-">Version 0.2.0 (2009-01-25)</h3>
1069
-
1070
- <p>This release adds support for unit testing, improves the portability of
1071
- <strong>Inochi</strong> and configurability of your projects, adds new content to the user
1072
- manual, and fixes some bugs.</p>
1073
-
1074
- <p>New features:</p>
1075
-
1076
- <ul>
1077
- <li><p>Added support for unit testing via the
1078
- <a href="http://rubyforge.org/projects/bfts/">minitest</a> library.</p>
1079
-
1080
- <ul>
1081
- <li>The scaffold generator now emits a default unit test for the main
1082
- project library.</li>
1083
- </ul>
1084
- </li>
1085
- <li><p>Added optional ProgramName parameter to the scaffold generator. This
1086
- allows you to specify reasonable program names when your project module
1087
- has a strange capitalization:</p>
1088
-
1089
- <pre><code>$ inochi ERBook
1090
- create er_book/LICENSE
1091
-
1092
- $ inochi ERBook erbook
1093
- create erbook/LICENSE
1094
-
1095
- $ inochi ERBook foobar
1096
- create foobar/LICENSE
1097
- </code></pre></li>
1098
- <li><p>Allow project authors to be specified via
1099
- <code>Inochi.init :YourProject, :authors =&gt; [['name', 'mail']]</code>
1100
- (thanks to Florian Gilcher)</p></li>
1101
- </ul>
1102
-
1103
-
1104
- <p>Bug fixes:</p>
1105
-
1106
- <ul>
1107
- <li><p>Run on both JRuby and normal Ruby in multiple versions and with different
1108
- executable names on Windows. (thanks to Florian Gilcher)</p></li>
1109
- <li><p>Use <code>Gem::RubyGemsVersion</code> instead of a shell command to determine
1110
- rubygems version for generation of setup.erb. (thanks to Florian Gilcher)</p></li>
1111
- <li><p>Add blank lines between all list items, not just multi-line ones, in the
1112
- plain-text version of the release announcement for improved readability.</p></li>
1113
- <li><p>Omit LaTeX-style heading numbers from release announcements. They caused
1114
- confusion, especially in plain-text announcements, when trying to
1115
- determine which version of a project was released.</p></li>
1116
- </ul>
1117
-
1118
-
1119
- <p>Housekeeping:</p>
1120
-
1121
- <dl>
1122
- <dt>Added unit tests for utility methods provided by the <strong>Inochi</strong> module</dt><dd>project name calculation and CamelCase to snake_case conversion.</dd>
1123
- </dl>
1124
-
1125
-
1126
- <h3 id="Version-0-1-0-2009-01-13-">Version 0.1.0 (2009-01-13)</h3>
1127
-
1128
- <p>This release reattempts to fix the <a href="http://www.ruby-forum.com/topic/176173#771281">circular dependency
1129
- problem</a> that occurred when
1130
- installing either Inochi or ERBook.</p>
1131
-
1132
- <p>New features:</p>
1133
-
1134
- <ul>
1135
- <li><code>Inochi.init()</code> now adds <code>#major()</code>, <code>#series()</code>, and <code>#requirement()</code>
1136
- instance methods to a project's <code>VERSION</code> constant.</li>
1137
- </ul>
1138
-
1139
-
1140
- <p>Bug fixes:</p>
1141
-
1142
- <ul>
1143
- <li><p>Solved circular dependency problem by making inochi gem not dependent on
1144
- erbook gem. However, ERBook is still required during runtime and is
1145
- supplied on the <code>gem install</code> command for <strong>Inochi</strong>.</p>
1146
-
1147
- <p>The "Installing" section has been updated accordingly.</p></li>
1148
- <li><p>Add forgotten Rake dependency for <strong>Inochi</strong> gem.</p></li>
1149
- </ul>
1150
-
1151
-
1152
- <h3 id="Version-0-0-1-2009-01-13-">Version 0.0.1 (2009-01-13)</h3>
1153
-
1154
- <p>This release fixes some show-stopper bugs.</p>
1155
-
1156
- <p>Bug fixes:</p>
1157
-
1158
- <ul>
1159
- <li><p>The name of the project library was <a href="http://www.ruby-forum.com/topic/176173#771351">being determined
1160
- incorrectly</a>.
1161
- (thanks to Florian Gilcher)</p></li>
1162
- <li><p>There was a <a href="http://www.ruby-forum.com/topic/176173#771281">circular dependency problem</a> when installing the <strong>Inochi</strong> gem. (thanks to Florian Gilcher)</p>
1163
-
1164
- <p>The solution is to specify the <code>--force</code> option when installing the gem.
1165
- The "Installing" section has been updated accordingly.</p></li>
1166
- <li><p>Generated project scaffolds now check against the major version of the
1167
- <strong>Inochi</strong> gem, to avoid runtime version conflicts.</p></li>
1168
- </ul>
1169
-
1170
-
1171
- <p>Housekeeping:</p>
1172
-
1173
- <ul>
1174
- <li>Only add project libraries to <code>$LOAD_PATH</code> if not already there.</li>
1175
- </ul>
1176
-
1177
-
1178
- <h3 id="Version-0-0-0-2009-01-13-">Version 0.0.0 (2009-01-13)</h3>
1179
-
1180
- <p>This is the first release of Inochi. Enjoy!</p>
1181
-
1182
- <h2 id="AUTHORS">AUTHORS</h2>
1183
-
1184
- <p>Suraj N. Kurapati</p>
1185
-
1186
- <h2 id="CREDITS">CREDITS</h2>
1187
-
1188
- <p>Florian Gilcher,
1189
- Peileppe Production</p>
1190
-
1191
- <p>The "inochi.png" image and its "inochi.svg" source utilize the
1192
- <a href="http://www.openclipart.org/detail/17456">"3 flowers"</a> graphic, which was created and released into
1193
- the public domain by <a href="http://www.openclipart.org/user-detail/Peileppe">Peileppe Production</a> on June 25, 2008.</p>
1194
-
1195
- <h2 id="LICENSE">LICENSE</h2>
1196
-
1197
- <p>(the ISC license)</p>
1198
-
1199
- <p>Copyright 2008 Suraj N. Kurapati <a href="&#109;&#97;&#x69;&#x6c;&#x74;&#x6f;&#x3a;&#115;&#x75;&#110;&#x61;&#107;&#117;&#x40;&#x67;&#109;&#x61;&#105;&#108;&#x2e;&#x63;&#x6f;&#x6d;" data-bare-link="true">&#x73;&#117;&#110;&#97;&#107;&#x75;&#x40;&#x67;&#x6d;&#x61;&#105;&#108;&#46;&#99;&#111;&#109;</a></p>
1200
-
1201
- <p>Permission to use, copy, modify, and/or distribute this software for any
1202
- purpose with or without fee is hereby granted, provided that the above
1203
- copyright notice and this permission notice appear in all copies.</p>
1204
-
1205
- <p>THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
1206
- WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
1207
- MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
1208
- ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
1209
- WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
1210
- ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
1211
- OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.</p>
1212
-
1213
- <h2 id="SEE-ALSO">SEE ALSO</h2>
1214
-
1215
- <p><span class="man-ref">rake<span class="s">(1)</span></span>,
1216
- <span class="man-ref">rsync<span class="s">(1)</span></span>,
1217
- <a href="http://github.com/rtomayko/ronn">Ronn</a>,
1218
- <a href="http://snk.tuxfamily.org/lib/ember/">Ember</a></p>
1219
-
1220
-
1221
- <ol class='man-decor man-foot man foot'>
1222
- <li class='tl'></li>
1223
- <li class='tc'>July 2010</li>
1224
- <li class='tr'>inochi(1)</li>
1225
- </ol>
1226
-
1227
- </div>
1228
- </body>
1229
- </html>