binman 4.2.1 → 5.0.1

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 38369c43c1ea8af088cf3eaeb5296faee043d338
4
- data.tar.gz: f1a223a6c61c468678049192da91dd7b2b7f1d05
3
+ metadata.gz: e363154d3d40c1918e0071dcfca3a2448c0ecb3f
4
+ data.tar.gz: 151ca6dec27d919b3e016bd1e024f79a7b9a5b80
5
5
  SHA512:
6
- metadata.gz: 15414e1a37a4ed99312e222535f39aaff07e5b611875f166318a24d392fe919fadd1db501fc792ad48da1b7c2fd44e834c796f4143793049bf69a78b3771d9c9
7
- data.tar.gz: f2ced26dbf65b04d829efca5be61772f8dd40fa37e42fc5e431cbcf3a7c1b9859424c315280415d28618815bc0a3118cc14c4cfed7e8b95a3f6ff7638f6f77c1
6
+ metadata.gz: db2a1c7af572165922a325a8865238f78ccf0472718d9cc33eab0bcb126739889cef7c8f7a7d1e05b11a57613fdf3e6783779d8a3d9a84261544833e435cfc11
7
+ data.tar.gz: e17e17541ce8a98d52f12b93604365d15cdc8572e5c18f87a256c72c4adb1672324b0af5d2092caa4e1d6a58506e2fb723fc9de4a744183c0ce1b1dba7ef318f
@@ -4,7 +4,7 @@
4
4
  Simply [document your script in Markdown][md2man-markdown] as a comment at the
5
5
  top of your script and call `binman show` to display it as a UNIX manual page!
6
6
  Or, call `binman help` to display your manual _only_ when your script receives
7
- with `-h` or `--help` command-line options. Or, call `binman snip` to extract
7
+ with `-h` or `--help` command-line options. Or, call `binman text` to extract
8
8
  the manual from your script for your own custom processing, outside of binman.
9
9
  And that's not all: [see the manual page][binman-man] for more possibilities!
10
10
 
@@ -23,7 +23,7 @@ And that's not all: [see the manual page][binman-man] for more possibilities!
23
23
 
24
24
  * Individual extraction, conversion, and display commands.
25
25
 
26
- * Implemented in roughly 150 lines of pure Ruby code! :-)
26
+ * Implemented in roughly 165 lines of pure Ruby code! :-)
27
27
 
28
28
  ### Demonstration
29
29
 
@@ -33,58 +33,123 @@ And that's not all: [see the manual page][binman-man] for more possibilities!
33
33
 
34
34
  Here are some real examples of processed bin scripts to help you get started:
35
35
 
36
- * [bin/tork](https://raw.github.com/sunaku/tork/master/bin/tork) ⇒
37
- [tork.1.markdown](https://sunaku.github.io/tork/man/man1/tork.1.markdown) ⇒
38
- [tork.1](https://sunaku.github.io/tork/man/man1/tork.1) +
39
- [tork.1.html](https://sunaku.github.io/tork/man/man1/tork.1.html)
40
- * [bin/tork-runner](https://raw.github.com/sunaku/tork/master/bin/tork-runner) ⇒
41
- [tork-runner.1.markdown](https://sunaku.github.io/tork/man/man1/tork-runner.1.markdown) ⇒
42
- [tork-runner.1](https://sunaku.github.io/tork/man/man1/tork-runner.1) +
43
- [tork-runner.1.html](https://sunaku.github.io/tork/man/man1/tork-runner.1.html)
44
- * [bin/tork-herald](https://raw.github.com/sunaku/tork/master/bin/tork-herald) ⇒
45
- [tork-herald.1.markdown](https://sunaku.github.io/tork/man/man1/tork-herald.1.markdown) ⇒
46
- [tork-herald.1](https://sunaku.github.io/tork/man/man1/tork-herald.1) +
47
- [tork-herald.1.html](https://sunaku.github.io/tork/man/man1/tork-herald.1.html)
48
- * [bin/tork-driver](https://raw.github.com/sunaku/tork/master/bin/tork-driver) ⇒
49
- [tork-driver.1.markdown](https://sunaku.github.io/tork/man/man1/tork-driver.1.markdown) ⇒
50
- [tork-driver.1](https://sunaku.github.io/tork/man/man1/tork-driver.1) +
51
- [tork-driver.1.html](https://sunaku.github.io/tork/man/man1/tork-driver.1.html)
52
- * [bin/tork-engine](https://raw.github.com/sunaku/tork/master/bin/tork-engine) ⇒
53
- [tork-engine.1.markdown](https://sunaku.github.io/tork/man/man1/tork-engine.1.markdown) ⇒
54
- [tork-engine.1](https://sunaku.github.io/tork/man/man1/tork-engine.1) +
55
- [tork-engine.1.html](https://sunaku.github.io/tork/man/man1/tork-engine.1.html)
56
- * [bin/tork-master](https://raw.github.com/sunaku/tork/master/bin/tork-master) ⇒
57
- [tork-master.1.markdown](https://sunaku.github.io/tork/man/man1/tork-master.1.markdown) ⇒
58
- [tork-master.1](https://sunaku.github.io/tork/man/man1/tork-master.1) +
59
- [tork-master.1.html](https://sunaku.github.io/tork/man/man1/tork-master.1.html)
60
- * [bin/tork-remote](https://raw.github.com/sunaku/tork/master/bin/tork-remote) ⇒
61
- [tork-remote.1.markdown](https://sunaku.github.io/tork/man/man1/tork-remote.1.markdown) ⇒
62
- [tork-remote.1](https://sunaku.github.io/tork/man/man1/tork-remote.1) +
63
- [tork-remote.1.html](https://sunaku.github.io/tork/man/man1/tork-remote.1.html)
64
- * [bin/tork-notify](https://raw.github.com/sunaku/tork/master/bin/tork-notify) ⇒
65
- [tork-notify.1.markdown](https://sunaku.github.io/tork/man/man1/tork-notify.1.markdown) ⇒
66
- [tork-notify.1](https://sunaku.github.io/tork/man/man1/tork-notify.1) +
67
- [tork-notify.1.html](https://sunaku.github.io/tork/man/man1/tork-notify.1.html)
68
- * [bin/md2man-roff](https://raw.github.com/sunaku/md2man/master/bin/md2man-roff) ⇒
69
- [md2man-roff.1.markdown](https://sunaku.github.io/md2man/man/man1/md2man-roff.1.markdown) ⇒
70
- [md2man-roff.1](https://sunaku.github.io/md2man/man/man1/md2man-roff.1) +
71
- [md2man-roff.1.html](https://sunaku.github.io/md2man/man/man1/md2man-roff.1.html)
72
- * [bin/md2man-html](https://raw.github.com/sunaku/md2man/master/bin/md2man-html) ⇒
73
- [md2man-html.1.markdown](https://sunaku.github.io/md2man/man/man1/md2man-html.1.markdown) ⇒
74
- [md2man-html.1](https://sunaku.github.io/md2man/man/man1/md2man-html.1) +
75
- [md2man-html.1.html](https://sunaku.github.io/md2man/man/man1/md2man-html.1.html)
76
- * [bin/md2man-rake](https://raw.github.com/sunaku/md2man/master/bin/md2man-rake) ⇒
77
- [md2man-rake.1.markdown](https://sunaku.github.io/md2man/man/man1/md2man-rake.1.markdown) ⇒
78
- [md2man-rake.1](https://sunaku.github.io/md2man/man/man1/md2man-rake.1) +
79
- [md2man-rake.1.html](https://sunaku.github.io/md2man/man/man1/md2man-rake.1.html)
80
- * [bin/binman](https://raw.github.com/sunaku/binman/master/bin/binman) ⇒
81
- [binman.1.markdown](https://sunaku.github.io/binman/man/man1/binman.1.markdown) ⇒
82
- [binman.1](https://sunaku.github.io/binman/man/man1/binman.1) +
83
- [binman.1.html](https://sunaku.github.io/binman/man/man1/binman.1.html)
84
- * [bin/binman-rake](https://raw.github.com/sunaku/binman/master/bin/binman-rake) ⇒
85
- [binman-rake.1.markdown](https://sunaku.github.io/binman/man/man1/binman-rake.1.markdown) ⇒
86
- [binman-rake.1](https://sunaku.github.io/binman/man/man1/binman-rake.1) +
87
- [binman-rake.1.html](https://sunaku.github.io/binman/man/man1/binman-rake.1.html)
36
+ * `binman text`
37
+ < [tork](https://raw.github.com/sunaku/tork/master/bin/tork)
38
+ > [tork.1.markdown](https://raw.github.com/sunaku/tork/gh-pages/man/man1/tork.1.markdown)
39
+ * `binman roff`
40
+ < [tork](https://raw.github.com/sunaku/tork/master/bin/tork)
41
+ > [tork.1](https://raw.github.com/sunaku/tork/gh-pages/man/man1/tork.1)
42
+ * `binman html`
43
+ < [tork](https://raw.github.com/sunaku/tork/master/bin/tork)
44
+ > [tork.1.html](https://sunaku.github.io/tork/man/man1/tork.1.html)
45
+ * `binman text`
46
+ < [tork-runner](https://raw.github.com/sunaku/tork/master/bin/tork-runner)
47
+ > [tork-runner.1.markdown](https://raw.github.com/sunaku/tork/gh-pages/man/man1/tork-runner.1.markdown)
48
+ * `binman roff`
49
+ < [tork-runner](https://raw.github.com/sunaku/tork/master/bin/tork-runner)
50
+ > [tork-runner.1](https://raw.github.com/sunaku/tork/gh-pages/man/man1/tork-runner.1)
51
+ * `binman html`
52
+ < [tork-runner](https://raw.github.com/sunaku/tork/master/bin/tork-runner)
53
+ > [tork-runner.1.html](https://sunaku.github.io/tork/man/man1/tork-runner.1.html)
54
+ * `binman text`
55
+ < [tork-herald](https://raw.github.com/sunaku/tork/master/bin/tork-herald)
56
+ > [tork-herald.1.markdown](https://raw.github.com/sunaku/tork/gh-pages/man/man1/tork-herald.1.markdown)
57
+ * `binman roff`
58
+ < [tork-herald](https://raw.github.com/sunaku/tork/master/bin/tork-herald)
59
+ > [tork-herald.1](https://raw.github.com/sunaku/tork/gh-pages/man/man1/tork-herald.1)
60
+ * `binman html`
61
+ < [tork-herald](https://raw.github.com/sunaku/tork/master/bin/tork-herald)
62
+ > [tork-herald.1.html](https://sunaku.github.io/tork/man/man1/tork-herald.1.html)
63
+ * `binman text`
64
+ < [tork-driver](https://raw.github.com/sunaku/tork/master/bin/tork-driver)
65
+ > [tork-driver.1.markdown](https://raw.github.com/sunaku/tork/gh-pages/man/man1/tork-driver.1.markdown)
66
+ * `binman roff`
67
+ < [tork-driver](https://raw.github.com/sunaku/tork/master/bin/tork-driver)
68
+ > [tork-driver.1](https://raw.github.com/sunaku/tork/gh-pages/man/man1/tork-driver.1)
69
+ * `binman html`
70
+ < [tork-driver](https://raw.github.com/sunaku/tork/master/bin/tork-driver)
71
+ > [tork-driver.1.html](https://sunaku.github.io/tork/man/man1/tork-driver.1.html)
72
+ * `binman text`
73
+ < [tork-engine](https://raw.github.com/sunaku/tork/master/bin/tork-engine)
74
+ > [tork-engine.1.markdown](https://raw.github.com/sunaku/tork/gh-pages/man/man1/tork-engine.1.markdown)
75
+ * `binman roff`
76
+ < [tork-engine](https://raw.github.com/sunaku/tork/master/bin/tork-engine)
77
+ > [tork-engine.1](https://raw.github.com/sunaku/tork/gh-pages/man/man1/tork-engine.1)
78
+ * `binman html`
79
+ < [tork-engine](https://raw.github.com/sunaku/tork/master/bin/tork-engine)
80
+ > [tork-engine.1.html](https://sunaku.github.io/tork/man/man1/tork-engine.1.html)
81
+ * `binman text`
82
+ < [tork-master](https://raw.github.com/sunaku/tork/master/bin/tork-master)
83
+ > [tork-master.1.markdown](https://raw.github.com/sunaku/tork/gh-pages/man/man1/tork-master.1.markdown)
84
+ * `binman roff`
85
+ < [tork-master](https://raw.github.com/sunaku/tork/master/bin/tork-master)
86
+ > [tork-master.1](https://raw.github.com/sunaku/tork/gh-pages/man/man1/tork-master.1)
87
+ * `binman html`
88
+ < [tork-master](https://raw.github.com/sunaku/tork/master/bin/tork-master)
89
+ > [tork-master.1.html](https://sunaku.github.io/tork/man/man1/tork-master.1.html)
90
+ * `binman text`
91
+ < [tork-remote](https://raw.github.com/sunaku/tork/master/bin/tork-remote)
92
+ > [tork-remote.1.markdown](https://raw.github.com/sunaku/tork/gh-pages/man/man1/tork-remote.1.markdown)
93
+ * `binman roff`
94
+ < [tork-remote](https://raw.github.com/sunaku/tork/master/bin/tork-remote)
95
+ > [tork-remote.1](https://raw.github.com/sunaku/tork/gh-pages/man/man1/tork-remote.1)
96
+ * `binman html`
97
+ < [tork-remote](https://raw.github.com/sunaku/tork/master/bin/tork-remote)
98
+ > [tork-remote.1.html](https://sunaku.github.io/tork/man/man1/tork-remote.1.html)
99
+ * `binman text`
100
+ < [tork-notify](https://raw.github.com/sunaku/tork/master/bin/tork-notify)
101
+ > [tork-notify.1.markdown](https://raw.github.com/sunaku/tork/gh-pages/man/man1/tork-notify.1.markdown)
102
+ * `binman roff`
103
+ < [tork-notify](https://raw.github.com/sunaku/tork/master/bin/tork-notify)
104
+ > [tork-notify.1](https://raw.github.com/sunaku/tork/gh-pages/man/man1/tork-notify.1)
105
+ * `binman html`
106
+ < [tork-notify](https://raw.github.com/sunaku/tork/master/bin/tork-notify)
107
+ > [tork-notify.1.html](https://sunaku.github.io/tork/man/man1/tork-notify.1.html)
108
+ * `binman text`
109
+ < [md2man-roff](https://raw.github.com/sunaku/md2man/master/bin/md2man-roff)
110
+ > [md2man-roff.1.markdown](https://raw.github.com/sunaku/md2man/gh-pages/man/man1/md2man-roff.1.markdown)
111
+ * `binman roff`
112
+ < [md2man-roff](https://raw.github.com/sunaku/md2man/master/bin/md2man-roff)
113
+ > [md2man-roff.1](https://raw.github.com/sunaku/md2man/gh-pages/man/man1/md2man-roff.1)
114
+ * `binman html`
115
+ < [md2man-roff](https://raw.github.com/sunaku/md2man/master/bin/md2man-roff)
116
+ > [md2man-roff.1.html](https://sunaku.github.io/md2man/man/man1/md2man-roff.1.html)
117
+ * `binman text`
118
+ < [md2man-html](https://raw.github.com/sunaku/md2man/master/bin/md2man-html)
119
+ > [md2man-html.1.markdown](https://raw.github.com/sunaku/md2man/gh-pages/man/man1/md2man-html.1.markdown)
120
+ * `binman roff`
121
+ < [md2man-html](https://raw.github.com/sunaku/md2man/master/bin/md2man-html)
122
+ > [md2man-html.1](https://raw.github.com/sunaku/md2man/gh-pages/man/man1/md2man-html.1)
123
+ * `binman html`
124
+ < [md2man-html](https://raw.github.com/sunaku/md2man/master/bin/md2man-html)
125
+ > [md2man-html.1.html](https://sunaku.github.io/md2man/man/man1/md2man-html.1.html)
126
+ * `binman text`
127
+ < [md2man-rake](https://raw.github.com/sunaku/md2man/master/bin/md2man-rake)
128
+ > [md2man-rake.1.markdown](https://raw.github.com/sunaku/md2man/gh-pages/man/man1/md2man-rake.1.markdown)
129
+ * `binman roff`
130
+ < [md2man-rake](https://raw.github.com/sunaku/md2man/master/bin/md2man-rake)
131
+ > [md2man-rake.1](https://raw.github.com/sunaku/md2man/gh-pages/man/man1/md2man-rake.1)
132
+ * `binman html`
133
+ < [md2man-rake](https://raw.github.com/sunaku/md2man/master/bin/md2man-rake)
134
+ > [md2man-rake.1.html](https://sunaku.github.io/md2man/man/man1/md2man-rake.1.html)
135
+ * `binman text`
136
+ < [binman](https://raw.github.com/sunaku/binman/master/bin/binman)
137
+ > [binman.1.markdown](https://raw.github.com/sunaku/binman/gh-pages/man/man1/binman.1.markdown)
138
+ * `binman roff`
139
+ < [binman](https://raw.github.com/sunaku/binman/master/bin/binman)
140
+ > [binman.1](https://raw.github.com/sunaku/binman/gh-pages/man/man1/binman.1)
141
+ * `binman html`
142
+ < [binman](https://raw.github.com/sunaku/binman/master/bin/binman)
143
+ > [binman.1.html](https://sunaku.github.io/binman/man/man1/binman.1.html)
144
+ * `binman text`
145
+ < [binman-rake](https://raw.github.com/sunaku/binman/master/bin/binman-rake)
146
+ > [binman-rake.1.markdown](https://raw.github.com/sunaku/binman/gh-pages/man/man1/binman-rake.1.markdown)
147
+ * `binman roff`
148
+ < [binman-rake](https://raw.github.com/sunaku/binman/master/bin/binman-rake)
149
+ > [binman-rake.1](https://raw.github.com/sunaku/binman/gh-pages/man/man1/binman-rake.1)
150
+ * `binman html`
151
+ < [binman-rake](https://raw.github.com/sunaku/binman/master/bin/binman-rake)
152
+ > [binman-rake.1.html](https://sunaku.github.io/binman/man/man1/binman-rake.1.html)
88
153
 
89
154
  For examples in even more scripting languages, see the "Usage" section below!
90
155
 
@@ -107,7 +172,7 @@ gem install binman
107
172
  If you also want to build your own manual pages:
108
173
 
109
174
  ```sh
110
- gem install md2man -v '~> 4.0'
175
+ gem install md2man -v '~> 5.0'
111
176
  ```
112
177
 
113
178
  ### Prerequisites
@@ -117,7 +182,7 @@ gem install md2man -v '~> 4.0'
117
182
  ### Development
118
183
 
119
184
  ```sh
120
- git clone git://github.com/sunaku/binman
185
+ git clone https://github.com/sunaku/binman
121
186
  cd binman
122
187
  bundle install
123
188
  bundle exec binman --help # run it directly
@@ -342,7 +407,7 @@ Add this snippet to your gemspec file:
342
407
  ```ruby
343
408
  s.files += Dir['man/man?/*.?'] # UNIX man pages
344
409
  s.files += Dir['man/**/*.{html,css,js}'] # HTML man pages
345
- s.add_development_dependency 'md2man', '~> 4.0'
410
+ s.add_development_dependency 'md2man', '~> 5.0'
346
411
  ```
347
412
 
348
413
  Add the following line to your Rakefile:
@@ -1,3 +1,22 @@
1
+ ## Version 5.0.1 (2016-02-13)
2
+
3
+ ### Major:
4
+
5
+ * Rename `binman snip` command to `binman text`.
6
+
7
+ * Rename `binman conv` command to `binman roff` and make it operate on a bin
8
+ script containing an embedded manual page rather than the extracted latter.
9
+
10
+ * Add `binman html` command which extracts embedded manual page from a given
11
+ bin script, converts it into HTML, and then prints the result to STDOUT.
12
+
13
+ * `binman show` now falls back to displaying a temporary HTML manual page if
14
+ man(1) fails to display the temporary UNIX manual page. This is useful in
15
+ Windows where there is no man(1) reader, but a web browser can be started.
16
+
17
+ * When a HTML manual page is shown, `binman` now blocks until the launched
18
+ web browser exits. Previously, it used to exit immediately (nonblocking).
19
+
1
20
  ## Version 4.2.1 (2016-02-12)
2
21
 
3
22
  ### Patch:
data/bin/binman CHANGED
@@ -1,7 +1,7 @@
1
1
  #!/usr/bin/env ruby
2
2
  =begin =======================================================================
3
3
 
4
- # BINMAN 1 2016-02-12 4.2.1
4
+ # BINMAN 1 2016-02-13 5.0.1
5
5
 
6
6
  ## NAME
7
7
 
@@ -64,17 +64,23 @@ The following [Redcarpet] extensions are enabled while processing markdown(7):
64
64
 
65
65
  ## COMMANDS
66
66
 
67
- `snip` [*FILE*]
67
+ `text` [*FILE*]
68
68
  Print the leading comment header extracted from the given *FILE* or STDIN.
69
69
 
70
- `dump` [*FILE*]
70
+ `roff` [*FILE*]
71
71
  Print the roff(7) conversion of the leading comment header extracted from
72
72
  the given *FILE* or STDIN.
73
73
 
74
+ `html` [*FILE*]
75
+ Print the HTML conversion of the leading comment header extracted from
76
+ the given *FILE* or STDIN.
77
+
74
78
  `show` [*FILE*] [*PATTERN*]
75
79
  Use man(1) to display the roff(7) conversion of the leading comment header
76
80
  extracted from the given *FILE* or STDIN. If *PATTERN* is given, search for
77
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.
78
84
 
79
85
  `help` *FILE* ... [`-h`|`--help` [*PATTERN*]] ... [`--`] ...
80
86
  If the given argument sequence contains `-h` or `--help`, except after
@@ -107,7 +113,7 @@ else
107
113
  case command
108
114
  when 'show'
109
115
  BinMan.send(command, source)
110
- when 'snip', 'dump'
116
+ when 'text', 'roff', 'html'
111
117
  puts BinMan.send(command, source)
112
118
  else
113
119
  warn 'binman: invalid command; try --help'
@@ -1,7 +1,7 @@
1
1
  #!/usr/bin/env ruby
2
2
  =begin =======================================================================
3
3
 
4
- # BINMAN-RAKE 1 2016-02-12 4.2.1
4
+ # BINMAN-RAKE 1 2016-02-13 5.0.1
5
5
 
6
6
  ## NAME
7
7
 
@@ -18,7 +18,7 @@ Gem::Specification.new do |s|
18
18
 
19
19
  s.files += Dir['man/man?/*.?'] # UNIX man pages
20
20
  s.files += Dir['man/**/*.{html,css,js}'] # HTML man pages
21
- s.add_development_dependency 'md2man', '~> 4.0'
21
+ s.add_development_dependency 'md2man', '~> 5.0'
22
22
 
23
23
  s.add_dependency 'opener', '>= 0.1.0', '< 1'
24
24
  s.add_development_dependency 'rake', '~> 10.1'
@@ -16,7 +16,7 @@ module BinMan
16
16
  #
17
17
  # Comment markers and shebang/encoding comments are omitted from result.
18
18
  #
19
- def snip source=nil
19
+ def text source=nil
20
20
  header = read(source)
21
21
 
22
22
  # strip shebang and encoding comments
@@ -31,10 +31,14 @@ module BinMan
31
31
  end.strip
32
32
  end
33
33
 
34
- # Extracts leading comment header content from given
35
- # source and returns the roff(7) conversion thereof.
36
- def dump source=nil
37
- conv snip(source)
34
+ # Renders leading comment header from given source as UNIX man page.
35
+ def roff source=nil
36
+ to_roff text(source)
37
+ end
38
+
39
+ # Renders leading comment header from given source as HTML man page.
40
+ def html source=nil
41
+ to_html text(source)
38
42
  end
39
43
 
40
44
  # Shows leading comment header from given source as UNIX man page and
@@ -50,7 +54,7 @@ module BinMan
50
54
  end
51
55
 
52
56
  # fall back to rendering leading comment header or showing it as-is
53
- header = snip(source)
57
+ header = text(source)
54
58
  return if show_str(header, query)
55
59
  puts header
56
60
  end
@@ -71,23 +75,6 @@ module BinMan
71
75
 
72
76
  private
73
77
 
74
- # Launches man(1) with the given arguments and then tries to search for the
75
- # query (if given) within. This is achieved by specifying the LESS and MORE
76
- # environment variables used by the less(1) and more(1) pagers respectively.
77
- def view query, *argv
78
- env = query ? {'LESS' => [ENV['LESS'], "+/#{query}"].compact.join(' '),
79
- 'MORE' => [ENV['MORE'], "+/#{query}"].compact.join(' ')} : {}
80
- system env, 'man', *argv
81
- end
82
-
83
- # Converts given markdown(7) source into roff(7).
84
- def conv source=nil
85
- require 'md2man/roff/engine'
86
- Md2Man::Roff::ENGINE.render(read(source))
87
- rescue LoadError
88
- raise 'Run `gem install md2man` to use BinMan::dump() or BinMan::show().'
89
- end
90
-
91
78
  # Returns contents of given source I/O, file name, or string.
92
79
  def read source=nil
93
80
  if source.respond_to? :read
@@ -112,16 +99,15 @@ private
112
99
  def show_man path, page, query=nil
113
100
  # try showing roff manual page in man(1) reader in foreground
114
101
  Dir["#{path}/man?/#{page}.?"].any? and
115
- view query, '-M', path, '-a', page, 2 => :close or
102
+ launch_man query, '-M', path, '-a', page, 2 => :close or
116
103
  begin
117
104
  # try showing HTML manual page in a web browser in background
118
105
  require 'opener'
119
106
  Dir["#{path}/**/#{page}.*.html"].map do |html|
107
+ puts html
120
108
  begin
121
109
  # close streams to avoid interference with man(1) reader
122
- Opener.spawn html, 0 => :close, 1 => :close, 2 => :close
123
- puts html
124
- true
110
+ Opener.system html, 0 => :close, 1 => :close, 2 => :close
125
111
  rescue Errno::ENOENT
126
112
  # designated opener program was not found on this system
127
113
  end
@@ -129,10 +115,20 @@ private
129
115
  end
130
116
  end
131
117
 
118
+ # Launches man(1) with the given arguments and then tries to search for the
119
+ # query (if given) within. This is achieved by specifying the LESS and MORE
120
+ # environment variables used by the less(1) and more(1) pagers respectively.
121
+ def launch_man query, *argv
122
+ env = query ? {'LESS' => [ENV['LESS'], "+/#{query}"].compact.join(' '),
123
+ 'MORE' => [ENV['MORE'], "+/#{query}"].compact.join(' ')} : {}
124
+ system env, 'man', *argv
125
+ end
126
+
132
127
  # Tries to display the given header string in man(1) reader
133
128
  # and returns true if successful; else you need a fallback.
134
129
  def show_str header, query=nil
135
- roff = conv(header)
130
+ roff = to_roff(header)
131
+ html = to_html(header)
136
132
 
137
133
  require 'tempfile'
138
134
  Tempfile.open 'binman' do |temp|
@@ -146,6 +142,7 @@ private
146
142
 
147
143
  # write the given header string to temporary file and show it
148
144
  File.open(temp_man_file, 'w') {|file| file << roff }
145
+ File.open(temp_man_file + '.html', 'w') {|file| file << html }
149
146
  return true if show_man(temp_man_path, temp_man_page, query)
150
147
  ensure
151
148
  FileUtils.rm_rf temp_man_root
@@ -156,4 +153,20 @@ private
156
153
  rescue => error
157
154
  warn "binman: #{error}"
158
155
  end
156
+
157
+ # Converts given markdown(7) source into roff(7).
158
+ def to_roff source=nil
159
+ require 'md2man/roff/engine'
160
+ Md2Man::Roff::ENGINE.render(read(source))
161
+ rescue LoadError
162
+ raise 'Run `gem install md2man` to use BinMan::roff().'
163
+ end
164
+
165
+ # Converts given markdown(7) source into roff(7).
166
+ def to_html source=nil
167
+ require 'md2man/html/engine'
168
+ Md2Man::HTML::ENGINE.render(read(source))
169
+ rescue LoadError
170
+ raise 'Run `gem install md2man` to use BinMan::html().'
171
+ end
159
172
  end
@@ -17,7 +17,7 @@ mkds = bins.pathmap("#{dir}/%n.1.markdown")
17
17
 
18
18
  bins.zip(mkds).each do |src, dst|
19
19
  file dst => [dir, src] do
20
- output = BinMan.snip(src)
20
+ output = BinMan.text(src)
21
21
  File.open(dst, 'w') {|f| f << output }
22
22
  end
23
23
  end