UNPKG

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