UNPKG

1.7 kBJavaScriptView Raw
1#!/usr/bin/env node
2var fs = require('fs')
3var path = require('path')
4var root = path.resolve(__dirname, '..')
5var glob = require('glob')
6var conversion = { 'cli': 1, 'api': 3, 'files': 5, 'misc': 7 }
7
8glob(root + '/{README.md,doc/*/*.md}', function (er, files) {
9 if (er) throw er
10
11 output(files.map(function (f) {
12 var b = path.basename(f)
13 if (b === 'README.md') return [0, b]
14 if (b === 'index.md') return null
15 var s = conversion[path.basename(path.dirname(f))]
16 return [s, f]
17 }).filter(function (f) {
18 return f
19 }).sort(function (a, b) {
20 return (a[0] === b[0])
21 ? (path.basename(a[1]) === 'npm.md' ? -1
22 : path.basename(b[1]) === 'npm.md' ? 1
23 : a[1] > b[1] ? 1 : -1)
24 : a[0] - b[0]
25 }))
26})
27
28function output (files) {
29 console.log(
30 'npm-index(7) -- Index of all npm documentation\n' +
31 '==============================================\n')
32
33 writeLines(files, 0)
34 writeLines(files, 1, 'Command Line Documentation', 'Using npm on the command line')
35 writeLines(files, 3, 'API Documentation', 'Using npm in your Node programs')
36 writeLines(files, 5, 'Files', 'File system structures npm uses')
37 writeLines(files, 7, 'Misc', 'Various other bits and bobs')
38}
39
40function writeLines (files, sxn, heading, desc) {
41 if (heading) {
42 console.log('## %s\n\n%s\n', heading, desc)
43 }
44 files.filter(function (f) {
45 return f[0] === sxn
46 }).forEach(writeLine)
47}
48
49function writeLine (sd) {
50 var sxn = sd[0] || 1
51 var doc = sd[1]
52 var d = path.basename(doc, '.md')
53
54 var content = fs.readFileSync(doc, 'utf8').split('\n')[0].split('-- ')[1]
55
56 console.log('### %s(%d)\n', d, sxn)
57 console.log(content + '\n')
58}