@centricle/rtfm 1.0.3 → 1.1.1
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.
- package/bin/rtfm.js +14 -3
- package/lib/serve.js +3 -2
- package/package.json +1 -1
- package/templates/index.html +15 -1
package/bin/rtfm.js
CHANGED
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
|
|
3
|
+
const fs = require('fs');
|
|
4
|
+
const path = require('path');
|
|
3
5
|
const { serve } = require('../lib/serve');
|
|
4
6
|
const { init } = require('../lib/init');
|
|
5
7
|
const { sidebar } = require('../lib/sidebar');
|
|
@@ -49,6 +51,7 @@ rtfm - Local docs reader. Zero dependencies. Zero network.
|
|
|
49
51
|
|
|
50
52
|
Usage:
|
|
51
53
|
rtfm Serve current directory, open browser
|
|
54
|
+
rtfm [file.md] Serve a single markdown file
|
|
52
55
|
rtfm serve [dir] Serve specified directory
|
|
53
56
|
rtfm init Scaffold rtfm files into current directory
|
|
54
57
|
rtfm sidebar Auto-generate _sidebar.md from *.md files
|
|
@@ -80,7 +83,15 @@ switch (cmd) {
|
|
|
80
83
|
case 'open':
|
|
81
84
|
open(positional[1] || '/', flags);
|
|
82
85
|
break;
|
|
83
|
-
default:
|
|
84
|
-
//
|
|
85
|
-
|
|
86
|
+
default: {
|
|
87
|
+
// Single .md file: serve its directory, open to that file
|
|
88
|
+
const resolved = path.resolve(cmd);
|
|
89
|
+
if (cmd.endsWith('.md') && fs.existsSync(resolved) && fs.statSync(resolved).isFile()) {
|
|
90
|
+
const dir = path.dirname(resolved);
|
|
91
|
+
const docPath = path.basename(resolved, '.md');
|
|
92
|
+
serve(dir, flags, docPath);
|
|
93
|
+
} else {
|
|
94
|
+
serve(cmd, flags);
|
|
95
|
+
}
|
|
96
|
+
}
|
|
86
97
|
}
|
package/lib/serve.js
CHANGED
|
@@ -22,7 +22,7 @@ const MIME_TYPES = {
|
|
|
22
22
|
'.ttf': 'font/ttf'
|
|
23
23
|
};
|
|
24
24
|
|
|
25
|
-
function serve(dir, flags) {
|
|
25
|
+
function serve(dir, flags, openPath) {
|
|
26
26
|
const root = path.resolve(dir);
|
|
27
27
|
|
|
28
28
|
// If not initialized, auto-init + generate sidebar
|
|
@@ -89,7 +89,8 @@ function serve(dir, flags) {
|
|
|
89
89
|
console.log('Press Ctrl+C to stop');
|
|
90
90
|
|
|
91
91
|
if (flags.open) {
|
|
92
|
-
|
|
92
|
+
const target = openPath ? `${url}/#/${openPath}` : url;
|
|
93
|
+
openBrowser(target);
|
|
93
94
|
}
|
|
94
95
|
});
|
|
95
96
|
}
|
package/package.json
CHANGED
package/templates/index.html
CHANGED
|
@@ -184,7 +184,21 @@
|
|
|
184
184
|
loadSidebar: true,
|
|
185
185
|
subMaxLevel: 2,
|
|
186
186
|
auto2top: true,
|
|
187
|
-
routerMode: '
|
|
187
|
+
routerMode: 'hash',
|
|
188
|
+
plugins: [
|
|
189
|
+
function(hook) {
|
|
190
|
+
hook.doneEach(function() {
|
|
191
|
+
var path = window.location.hash.replace(/^#\/?/, '');
|
|
192
|
+
if (path) {
|
|
193
|
+
// Use filename from route as tab title
|
|
194
|
+
var name = path.split('/').pop().replace(/\.md$/i, '');
|
|
195
|
+
document.title = decodeURIComponent(name);
|
|
196
|
+
} else {
|
|
197
|
+
document.title = 'rtfm';
|
|
198
|
+
}
|
|
199
|
+
});
|
|
200
|
+
}
|
|
201
|
+
]
|
|
188
202
|
}
|
|
189
203
|
</script>
|
|
190
204
|
<script src="/docsify.min.js"></script>
|