1 | #!/usr/bin/env node
|
2 | var 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 |
|
8 | glob(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 |
|
30 | return
|
31 |
|
32 | function 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 |
|
44 | function 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 |
|
54 | function 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 | }
|