binman 5.0.1 → 5.1.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -1,3 +1,37 @@
1
+ ## Version 5.1.0 (2016-02-28)
2
+
3
+ This release splits binman(1) into pieces and improves the documentation.
4
+
5
+ ### Minor:
6
+
7
+ * binman(1) is now deprecated, to be removed in the next major version.
8
+ Please run the new binman-* programs, listed below, directly instead.
9
+
10
+ * Split binman(1) commands into independent programs:
11
+
12
+ * binman-help(1) - add help options to your program
13
+ * binman-html(1) - HTML manpage from header comment
14
+ * binman-rake(1) - run rake(1) tasks from command line
15
+ * binman-roff(1) - UNIX manpage from header comment
16
+ * binman-show(1) - show manpage from header comment
17
+ * binman-text(1) - extract embedded manpage sources
18
+
19
+ * binman-rake(1): allow task names without namespace.
20
+
21
+ You can now run `binman-rake man` instead of `binman-rake binman:man`,
22
+ and similarly `binman-rake web` instead of `binman-rake binman:web`,
23
+ and similarly `binman-rake mkd` instead of `binman-rake binman:mkd`.
24
+
25
+ ### Patch:
26
+
27
+ * README: an epic revision; add copy of md2man(5).
28
+
29
+ * README: add dasht manual pages to examples section.
30
+
31
+ * Clarify optionalness of *PATTERN* in `--help` option.
32
+
33
+ * Upgrade to md2man version 5.1.
34
+
1
35
  ## Version 5.0.1 (2016-02-13)
2
36
 
3
37
  ### Major:
@@ -19,14 +53,6 @@
19
53
 
20
54
  ## Version 4.2.1 (2016-02-12)
21
55
 
22
- ### Patch:
23
-
24
- * Failure when `binman show` is given input on STDIN.
25
-
26
- binman.rb:51:in `basename': no implicit conversion of IO into String (TypeError)
27
-
28
- ## Version 4.2.0 (2016-02-12)
29
-
30
56
  ### Minor:
31
57
 
32
58
  * Add `binman:mkd` rake task to extract `man/man1/*.1.markdown` files.
@@ -49,6 +75,12 @@
49
75
 
50
76
  binman.rb:47:in `basename': no implicit conversion of IO into String (TypeError)
51
77
 
78
+ * Failure when `binman show` is given input on STDIN.
79
+
80
+ binman.rb:51:in `basename': no implicit conversion of IO into String (TypeError)
81
+
82
+ ### Patch:
83
+
52
84
  ## Version 4.1.0 (2016-02-10)
53
85
 
54
86
  ### Minor:
data/bin/binman CHANGED
@@ -1,11 +1,11 @@
1
1
  #!/usr/bin/env ruby
2
2
  =begin =======================================================================
3
3
 
4
- # BINMAN 1 2016-02-13 5.0.1
4
+ # BINMAN 1 2016-02-28 5.1.0
5
5
 
6
6
  ## NAME
7
7
 
8
- binman - man pages for bin scripts
8
+ binman - deprecated; use binman-* instead
9
9
 
10
10
  ## SYNOPSIS
11
11
 
@@ -13,90 +13,36 @@ binman - man pages for bin scripts
13
13
 
14
14
  ## DESCRIPTION
15
15
 
16
- [binman] produces UNIX manual pages for your executable scripts. It can
17
- extract their leading comment headers (defined below), convert them from
18
- markdown(7) into roff(7) using [md2man], and display them using man(1).
16
+ Runs the fellow "`binman`-*COMMAND*" programs listed under "Commands" below.
19
17
 
20
- ### Leading comment headers
21
-
22
- A leading comment header can be one of the following two things:
23
-
24
- 1. A contiguous sequence of single-line comments (which begin with `#`
25
- and optionally continue with a single space followed by any number of
26
- characters until the end of the line) starting at the beginning of the
27
- file (after shebang and encoding comments plus optional blank lines) and
28
- ending at the first single blank line.
29
-
30
- 2. The first embedded document delimited by `=begin` and `=end` lines, which
31
- begin with the respective delimiters and optionally continue with a single
32
- space followed by any number of characters until the end of the line.
33
-
34
- ### Markdown processing divergence
35
-
36
- Although your leading comment headers are written in markdown(7), `binman
37
- conv` inherits the following additions to markdown(7) syntax from md2man(5):
38
-
39
- * There can be at most one top-level heading (H1). It is emitted as `.TH`
40
- in the roff(7) output to define the UNIX manual page's header and footer.
41
-
42
- * Paragraphs whose lines are all uniformly indented by two spaces are
43
- considered to be "indented paragraphs". They are unindented accordingly
44
- before emission as `.IP` in the roff(7) output.
45
-
46
- * Paragraphs whose subsequent lines (all except the first) are uniformly
47
- indented by two spaces are considered to be a "tagged paragraphs". They
48
- are unindented accordingly before emission as `.TP` in the roff(7) output.
49
-
50
- ### Markdown processing extensions
51
-
52
- The following [Redcarpet] extensions are enabled while processing markdown(7):
53
-
54
- * tables
55
- * autolink
56
- * superscript
57
- * strikethrough
58
- * fenced\_code\_blocks
18
+ > Note: This program is deprecated for removal in the next major version. To
19
+ > prepare yourself, please run the fellow binman-* programs directly instead.
59
20
 
60
21
  ## OPTIONS
61
22
 
62
23
  `-h` [*PATTERN*], `--help` [*PATTERN*]
63
- Show this help manual and search for *PATTERN* regular expression therein.
24
+ Show this help manual and optionally search for *PATTERN* regular expression.
64
25
 
65
26
  ## COMMANDS
66
27
 
67
- `text` [*FILE*]
68
- Print the leading comment header extracted from the given *FILE* or STDIN.
28
+ `text` ...
29
+ Runs binman-text(1).
69
30
 
70
- `roff` [*FILE*]
71
- Print the roff(7) conversion of the leading comment header extracted from
72
- the given *FILE* or STDIN.
31
+ `roff` ...
32
+ Runs binman-roff(1).
73
33
 
74
- `html` [*FILE*]
75
- Print the HTML conversion of the leading comment header extracted from
76
- the given *FILE* or STDIN.
34
+ `html` ...
35
+ Runs binman-html(1).
77
36
 
78
- `show` [*FILE*] [*PATTERN*]
79
- Use man(1) to display the roff(7) conversion of the leading comment header
80
- extracted from the given *FILE* or STDIN. If *PATTERN* is given, search for
81
- it within the output displayed by man(1) and jump to first match if found.
82
- If man(1) cannot display the roff(1) conversion, fall back to the showing
83
- the HTML conversion; if that fails too, display the extracted text as-is.
37
+ `show` ...
38
+ Runs binman-show(1).
84
39
 
85
- `help` *FILE* ... [`-h`|`--help` [*PATTERN*]] ... [`--`] ...
86
- If the given argument sequence contains `-h` or `--help`, except after
87
- `--`, optionally followed by a *PATTERN* regular expression that specifies
88
- text to search for and, if found, jump to inside the displayed man page,
89
- then this program extracts the given *FILE*'s leading comment header,
90
- converts it into roff(7), displays it using man(1), and finally exits with
91
- status code `0`. Otherwise, this program exits with status code `111`.
40
+ `help` ...
41
+ Runs binman-help(1).
92
42
 
93
43
  ## SEE ALSO
94
44
 
95
- binman-rake(1), man(1), roff(7), markdown(7)
96
-
97
- [binman]: https://github.com/sunaku/binman
98
- [md2man]: https://github.com/sunaku/md2man
99
- [Redcarpet]: https://github.com/vmg/redcarpet
45
+ binman-rake(1)
100
46
 
101
47
  =end =========================================================================
102
48
 
@@ -0,0 +1,208 @@
1
+ #!/usr/bin/env ruby
2
+ #
3
+ # # BINMAN-HELP 1 2016-02-28 5.1.0
4
+ #
5
+ # ## NAME
6
+ #
7
+ # binman-help - add help options to your program
8
+ #
9
+ # ## SYNOPSIS
10
+ #
11
+ # `binman-help` *FILE* ... [`-h`|`--help` [*PATTERN*]] ... [`--`] ...
12
+ #
13
+ # ## DESCRIPTION
14
+ #
15
+ # If the given argument sequence contains `-h` or `--help`, except after `--`,
16
+ # then this program displays the given *FILE*'s "embedded manpage source",
17
+ # described in binman-text(1), and then terminates with exit status `0`.
18
+ # Otherwise, this program terminates with the nonzero exit status `111`.
19
+ #
20
+ # ### Examples
21
+ #
22
+ # See "Embedded manpage sources" in binman-text(1) for header comment syntax.
23
+ #
24
+ # #### From a shell script
25
+ #
26
+ # ```sh
27
+ # #!/usr/bin/sh
28
+ # # your program's manual page goes here
29
+ #
30
+ # binman-help "$0" "$@" && exit
31
+ # ```
32
+ #
33
+ # #### From a Ruby script
34
+ #
35
+ # ```ruby
36
+ # #!/usr/bin/env ruby
37
+ # # your program's manual page goes here
38
+ #
39
+ # require 'binman'
40
+ # BinMan.help
41
+ # ```
42
+ #
43
+ # You can also specify your program's source file encoding above the manual:
44
+ #
45
+ # ```ruby
46
+ # #!/usr/bin/env ruby
47
+ # # -*- coding: utf-8 -*-
48
+ # # your program's manual page goes here
49
+ # ```
50
+ #
51
+ # You can also write the manual as a multi-line Ruby comment:
52
+ #
53
+ # ```ruby
54
+ # #!/usr/bin/env ruby
55
+ # =begin
56
+ # your program's manual page goes here
57
+ # =end
58
+ # ```
59
+ #
60
+ # You can also specify your program's source file encoding above the manual:
61
+ #
62
+ # ```ruby
63
+ # #!/usr/bin/env ruby
64
+ # # -*- coding: utf-8 -*-
65
+ # =begin
66
+ # your program's manual page goes here
67
+ # =end
68
+ # ```
69
+ #
70
+ # #### From a Perl script
71
+ #
72
+ # ```perl
73
+ # #!/usr/bin/env perl
74
+ # # your program's manual page goes here
75
+ #
76
+ # system('binman-help', __FILE__, @ARGV) == 0 and exit;
77
+ # ```
78
+ #
79
+ # You can also write the manual as a multi-line Ruby comment after `__END__`:
80
+ #
81
+ # ```perl
82
+ # #!/usr/bin/env perl
83
+ # print "your program's code goes here";
84
+ # __END__
85
+ # =begin
86
+ # your program's manual page goes here
87
+ # =end
88
+ # ```
89
+ #
90
+ # #### From a Python script
91
+ #
92
+ # ```python
93
+ # #!/usr/bin/env python
94
+ # # your program's manual page goes here
95
+ #
96
+ # import sys, subprocess
97
+ #
98
+ # subprocess.call(['binman-help', __file__] + sys.argv) == 0 and sys.exit()
99
+ # ```
100
+ #
101
+ # You can also specify your program's source file encoding above the manual:
102
+ #
103
+ # ```python
104
+ # #!/usr/bin/env python
105
+ # # -*- coding: utf-8 -*-
106
+ # # your program's manual page goes here
107
+ # ```
108
+ #
109
+ # You can also write the manual as a multi-line Ruby comment inside a docstring:
110
+ #
111
+ # ```python
112
+ # #!/usr/bin/env python
113
+ # """
114
+ # =begin
115
+ # your program's manual page goes here
116
+ # =end
117
+ # """
118
+ # ```
119
+ #
120
+ # You can also specify your program's source file encoding above the manual:
121
+ #
122
+ # ```python
123
+ # #!/usr/bin/env python
124
+ # # -*- coding: utf-8 -*-
125
+ # """
126
+ # =begin
127
+ # your program's manual page goes here
128
+ # =end
129
+ # """
130
+ # ```
131
+ #
132
+ # #### From an AWK script
133
+ #
134
+ # The technique for determining current AWK script file name [comes from here](
135
+ # http://www.mombu.com/programming/programming/t-the-name-of-script-itself-2040784-print.html
136
+ # ).
137
+ #
138
+ # ```awk
139
+ # #!/usr/bin/awk -f
140
+ # # your program's manual page goes here
141
+ #
142
+ # BEGIN {getline c <"/proc/self/cmdline"; sub(".*-f\0"," ",c); gsub("\0"," ",c);
143
+ # if(system("binman-help" c) == 0){ exit }}
144
+ # ```
145
+ #
146
+ # #### From a Tcl script
147
+ #
148
+ # ```tcl
149
+ # #!/usr/bin/env tclsh
150
+ # # your program's manual page goes here
151
+ #
152
+ # if {![catch {exec -- >/dev/tty binman-help $argv0 {*}$argv}]} {exit}
153
+ # ```
154
+ #
155
+ # You can also write the manual as a multi-line Ruby comment inside an `if 0`:
156
+ #
157
+ # ```tcl
158
+ # #!/usr/bin/env tclsh
159
+ # if 0 {
160
+ # =begin
161
+ # your program's manual page goes here
162
+ # =end
163
+ # }
164
+ # ```
165
+ #
166
+ # #### From a Node.js script
167
+ #
168
+ # ```javascript
169
+ # /*
170
+ # =begin
171
+ # your program's manual page goes here
172
+ # =end
173
+ # */
174
+ #
175
+ # var exec = require('child_process').exec;
176
+ # exec(['>/dev/tty', 'binman-help', __filename].concat(process.argv).
177
+ # join(' '), function(error){ if (error === null){ process.exit(); } });
178
+ # ```
179
+ #
180
+ # ## OPTIONS
181
+ #
182
+ # `-h` [*PATTERN*], `--help` [*PATTERN*]
183
+ # Display manpage and optionally search for *PATTERN* regular expression.
184
+ #
185
+ # ## EXIT STATUS
186
+ #
187
+ # 0
188
+ # Arguments contained help options so manpage was displayed.
189
+ #
190
+ # 111
191
+ # Arguments lacked help options so manpage was not displayed.
192
+ #
193
+ # ## SEE ALSO
194
+ #
195
+ # binman-text(1), binman-roff(1), binman-html(1), binman-show(1), binman(1)
196
+ #
197
+
198
+ require 'binman'
199
+
200
+ # display requested manpage
201
+ file, *args = ARGV
202
+ BinMan.help file, args
203
+
204
+ # fallback to this manpage
205
+ BinMan.help
206
+
207
+ # no manpage was displayed
208
+ exit 111
@@ -0,0 +1,28 @@
1
+ #!/usr/bin/env ruby
2
+ =begin =======================================================================
3
+
4
+ # BINMAN-HTML 1 2016-02-28 5.1.0
5
+
6
+ ## NAME
7
+
8
+ binman-html - HTML manpage from header comment
9
+
10
+ ## SYNOPSIS
11
+
12
+ `binman-html` [*OPTION*]... [*FILE*]
13
+
14
+
15
+ ## DESCRIPTION
16
+
17
+ Extracts the "embedded manpage source", described in binman-text(1), from the
18
+ given *FILE* or STDIN and transforms it into HTML for use in a web browser.
19
+
20
+ ## SEE ALSO
21
+
22
+ binman-text(1), binman-roff(1), binman(1)
23
+
24
+ =end =========================================================================
25
+
26
+ require 'binman'
27
+ BinMan.help
28
+ puts BinMan.html(ARGF)
@@ -1,11 +1,11 @@
1
1
  #!/usr/bin/env ruby
2
2
  =begin =======================================================================
3
3
 
4
- # BINMAN-RAKE 1 2016-02-13 5.0.1
4
+ # BINMAN-RAKE 1 2016-02-28 5.1.0
5
5
 
6
6
  ## NAME
7
7
 
8
- binman-rake - run rake(1) tasks from binman(1)
8
+ binman-rake - run rake(1) tasks from command line
9
9
 
10
10
  ## SYNOPSIS
11
11
 
@@ -23,20 +23,20 @@ If no *TASK* is specified, then the `binman` task is run by default.
23
23
  ## TASKS
24
24
 
25
25
  `binman`
26
- Runs the `binman:man` and `binman:web` tasks, in that order.
26
+ Runs the `binman:mkd`, `binman:man`, and `binman:web` tasks, in that order.
27
27
 
28
- `binman:mkd`
28
+ `binman:mkd` or `mkd`
29
29
  Extracts manual page sources embedded in scripts found in your `bin/`
30
30
  directory and saves them as `man/man1/*.1.markdown` files, which can
31
31
  then be rendered as HTML or UNIX manual pages using md2man-rake(1).
32
32
 
33
- `binman:man`
33
+ `binman:man` or `man`
34
34
  Builds UNIX manual pages from scripts found in your `bin/` directory.
35
35
  It also runs the `md2man:man` task, provided by md2man-rake(1), which
36
36
  builds UNIX manual pages from `*.markdown`, `*.mkd`, and `*.md` files
37
37
  found in or beneath the `man/` subdirectory in your working directory.
38
38
 
39
- `binman:web`
39
+ `binman:web` or `web`
40
40
  Builds HTML manual pages from scripts found in your `bin/` directory.
41
41
  It also runs the `md2man:web` task, provided by md2man-rake(1), which
42
42
  builds HTML manual pages from `*.markdown`, `*.mkd`, and `*.md` files
@@ -44,8 +44,8 @@ If no *TASK* is specified, then the `binman` task is run by default.
44
44
 
45
45
  ## OPTIONS
46
46
 
47
- `-h` [*REGEXP*], `--help` [*REGEXP*]
48
- Show this help manual and search for *REGEXP* regular expression therein.
47
+ `-h` [*PATTERN*], `--help` [*PATTERN*]
48
+ Show this help manual and optionally search for *PATTERN* regular expression.
49
49
 
50
50
  ...
51
51
  Anything else is passed to rake(1); run `rake --help` for documentation.
@@ -64,5 +64,8 @@ Rake.application.init File.basename(__FILE__)
64
64
 
65
65
  require 'binman/rakefile'
66
66
  task :default => :binman
67
+ task :mkd => 'binman:mkd'
68
+ task :man => 'binman:man'
69
+ task :web => 'binman:web'
67
70
 
68
71
  Rake.application.top_level