binman 5.0.1 → 5.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -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