Skip to content

Commit ff0477b

Browse files
committed
generating the important docsets
1 parent 3d44ce8 commit ff0477b

File tree

4 files changed

+179
-42
lines changed

4 files changed

+179
-42
lines changed

bin/matrix-docset-gen

Lines changed: 16 additions & 40 deletions
Original file line numberDiff line numberDiff line change
@@ -1,49 +1,25 @@
11
#!/usr/bin/env node
2-
const fs = require('fs');
3-
const path = require('path');
4-
const { cd, mv, exec } = require('shelljs');
2+
const { PROJECTS, gen } = require('..');
53
const args = require('minimist')(process.argv);
6-
const PROJECTS = {
7-
'matrix-js-sdk': {
8-
gitUrl: 'https://github.com/matrix-org/matrix-js-sdk',
9-
docset: {
10-
name: 'MatrixJSSDK',
11-
icon: path.join(__dirname, '..', 'icon.png')
12-
}
13-
},
14-
'matrix-appservice-bridge': {}
15-
}
16-
17-
const project = PROJECTS[args.gen];
184

19-
if (!project) {
20-
console.error(`Usage: matrix-docset-gen --project PROJECT`);
5+
const help = () => {
6+
console.error(`Usage: matrix-docset-gen (--all | --project PROJECT) [--branch BRANCH]`);
217
console.log(`Supported projects:\n\t`+Object.keys(PROJECTS).join('\n\t'));
228
process.exit(1);
239
}
2410

25-
const { gitUrl, docset } = project;
26-
const basename = path.basename(gitUrl);
27-
const dir = path.resolve(path.join('projects', basename));
28-
const dest = path.resolve(path.join('docsets', basename));
29-
const tmpl = path.resolve(path.join('node_modules', 'jsdoc-dash-template'));
30-
const yarn = path.resolve(path.join('node_modules', '.bin', 'yarn'));
31-
const cfg = path.join(dir, 'docset-config.json');
32-
33-
if (fs.existsSync(dir)){
34-
cd(dir);
35-
exec(`git pull origin master`);
11+
if (args.all) {
12+
Object.keys(PROJECTS).map(p=>{
13+
const project = PROJECTS[p];
14+
gen(project, args.branch);
15+
});
16+
} else if (args.gen) {
17+
const project = PROJECTS[args.gen];
18+
if (project) {
19+
gen(project, args.branch);
20+
} else {
21+
help();
22+
}
3623
} else {
37-
exec(`git clone ${gitUrl} ${dir}`);
38-
cd(dir);
24+
help();
3925
}
40-
41-
exec(yarn);
42-
fs.writeFileSync(cfg, JSON.stringify({ docset }));
43-
exec(`jsdoc -c ${cfg} -r lib -P package.json -R README.md -d ${dest} -t ${tmpl} --pedantic`);
44-
45-
const { name, version } = require(path.join(dir, 'package'));
46-
const setroot = path.join(dest, `${docset.name}.docset`);
47-
const docroot = path.join(setroot, 'Contents', 'Resources', 'Documents');
48-
const entries = path.join(docroot, name, version, '*');
49-
mv(entries, docroot);

index.js

Lines changed: 78 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,78 @@
1+
const fs = require('fs');
2+
const path = require('path');
3+
const { cd, mv, exec } = require('shelljs');
4+
const icon = path.join(__dirname, 'icon.png');
5+
6+
module.exports.PROJECTS = {
7+
'matrix-js-sdk': {
8+
src: 'lib',
9+
gitUrl: 'https://github.com/matrix-org/matrix-js-sdk',
10+
defaultBranch: "develop",
11+
docset: { icon, name: 'MatrixJSSDK' }
12+
},
13+
'matrix-appservice-bridge': {
14+
src: 'lib',
15+
gitUrl: 'https://github.com/matrix-org/matrix-appservice-bridge',
16+
defaultBranch: "develop",
17+
docset: { icon, name: 'MatrixAppserviceBridge' }
18+
},
19+
'matrix-appservice-node': {
20+
src: 'lib',
21+
gitUrl: 'https://github.com/matrix-org/matrix-appservice-node',
22+
defaultBranch: "master",
23+
docset: { icon, name: 'MatrixAppserviceNode' }
24+
},
25+
/* Looks like I didn't write code correctly for docset...
26+
* Need to learn how to write JSDocs properly. Disable it for now.
27+
*
28+
* 'matrix-puppet-bridge': {
29+
* src: 'src',
30+
* gitUrl: 'https://github.com/matrix-hacks/matrix-puppet-bridge',
31+
* defaultBranch: "master",
32+
* docset: { icon, name: 'MatrixPuppetBridge' }
33+
* }
34+
*/
35+
/*
36+
* The docset of this one seems quite bad, maybe due to all
37+
* the transpilation or something... Just disable it.
38+
*
39+
*'matrix-react-sdk': {
40+
* gitUrl: 'https://github.com/matrix-org/matrix-react-sdk',
41+
* defaultBranch: "develop",
42+
* docset: { icon, name: 'MatrixReactSDK' }
43+
*},
44+
*/
45+
}
46+
47+
module.exports.gen = function gen(project, forceBranch) {
48+
const { gitUrl, docset } = project;
49+
const basename = path.basename(gitUrl);
50+
const branch = forceBranch || project.defaultBranch || "master";
51+
const dir = path.resolve(path.join(__dirname, 'projects', basename));
52+
const dest = path.resolve(path.join(__dirname, 'docsets', basename));
53+
const tmpl = path.resolve(path.join(__dirname, 'node_modules', 'jsdoc-dash-template'));
54+
const yarn = path.resolve(path.join(__dirname, 'node_modules', '.bin', 'yarn'));
55+
const jsdoc = path.resolve(path.join(__dirname, 'node_modules', '.bin', 'jsdoc'));
56+
const cfg = path.join(dir, 'docset-config.json');
57+
58+
if (fs.existsSync(dir)){
59+
cd(dir);
60+
exec(`git reset --hard`);
61+
exec(`git checkout ${branch}`);
62+
exec(`git pull origin ${branch}`);
63+
} else {
64+
exec(`git clone ${gitUrl} ${dir}`);
65+
cd(dir);
66+
exec(`git checkout ${branch}`);
67+
}
68+
69+
exec(yarn);
70+
fs.writeFileSync(cfg, JSON.stringify({ docset }));
71+
exec(`${jsdoc} -c ${cfg} -r ${project.src} -P package.json -R README.md -d ${dest} -t ${tmpl}`);
72+
73+
const { name, version } = require(path.join(dir, 'package'));
74+
const setroot = path.join(dest, `${docset.name}.docset`);
75+
const docroot = path.join(setroot, 'Contents', 'Resources', 'Documents');
76+
const entries = path.join(docroot, name, version, '*');
77+
mv(entries, docroot);
78+
}

package.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
"main": "index.js",
55
"license": "MIT",
66
"dependencies": {
7+
"jsdoc": "^3.4.3",
78
"jsdoc-dash-template": "^2.0.1",
89
"minimist": "^1.2.0",
910
"shelljs": "^0.7.7",

yarn.lock

Lines changed: 84 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,16 @@ abbrev@1:
66
version "1.1.0"
77
resolved "https://registry.yarnpkg.com/abbrev/-/abbrev-1.1.0.tgz#d0554c2256636e2f56e7c2e5ad183f859428d81f"
88

9+
acorn-jsx@^3.0.0:
10+
version "3.0.1"
11+
resolved "https://registry.yarnpkg.com/acorn-jsx/-/acorn-jsx-3.0.1.tgz#afdf9488fb1ecefc8348f6fb22f464e32a58b36b"
12+
dependencies:
13+
acorn "^3.0.4"
14+
15+
acorn@^3.0.4, acorn@^3.3.0:
16+
version "3.3.0"
17+
resolved "https://registry.yarnpkg.com/acorn/-/acorn-3.3.0.tgz#45e37fb39e8da3f25baee3ff5369e2bb5f22017a"
18+
919
ajv@^4.9.1:
1020
version "4.11.5"
1121
resolved "https://registry.yarnpkg.com/ajv/-/ajv-4.11.5.tgz#b6ee74657b993a01dce44b7944d56f485828d5bd"
@@ -97,6 +107,10 @@ bluebird@^3.3.4, bluebird@^3.4.6:
97107
version "3.5.0"
98108
resolved "https://registry.yarnpkg.com/bluebird/-/bluebird-3.5.0.tgz#791420d7f551eea2897453a8a77653f96606d67c"
99109

110+
bluebird@~3.4.6:
111+
version "3.4.7"
112+
resolved "https://registry.yarnpkg.com/bluebird/-/bluebird-3.4.7.tgz#f72d760be09b7f76d08ed8fae98b289a8d05fab3"
113+
100114
101115
version "2.10.1"
102116
resolved "https://registry.yarnpkg.com/boom/-/boom-2.10.1.tgz#39c8918ceff5799f83f9492a848f625add0c766f"
@@ -130,6 +144,12 @@ caseless@~0.12.0:
130144
version "0.12.0"
131145
resolved "https://registry.yarnpkg.com/caseless/-/caseless-0.12.0.tgz#1b681c21ff84033c826543090689420d187151dc"
132146

147+
catharsis@~0.8.8:
148+
version "0.8.8"
149+
resolved "https://registry.yarnpkg.com/catharsis/-/catharsis-0.8.8.tgz#693479f43aac549d806bd73e924cd0d944951a06"
150+
dependencies:
151+
underscore-contrib "~0.3.0"
152+
133153
chalk@^1.0.0, chalk@^1.1.1:
134154
version "1.1.3"
135155
resolved "https://registry.yarnpkg.com/chalk/-/chalk-1.1.3.tgz#a8115c55e4a702fe4d150abd3872822a7e09fc98"
@@ -294,10 +314,17 @@ end-of-stream@^1.0.0:
294314
dependencies:
295315
once "~1.3.0"
296316

297-
escape-string-regexp@^1.0.2, escape-string-regexp@^1.0.5:
317+
escape-string-regexp@^1.0.2, escape-string-regexp@^1.0.5, escape-string-regexp@~1.0.5:
298318
version "1.0.5"
299319
resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4"
300320

321+
espree@~3.1.7:
322+
version "3.1.7"
323+
resolved "https://registry.yarnpkg.com/espree/-/espree-3.1.7.tgz#fd5deec76a97a5120a9cd3a7cb1177a0923b11d2"
324+
dependencies:
325+
acorn "^3.3.0"
326+
acorn-jsx "^3.0.0"
327+
301328
extend@~3.0.0:
302329
version "3.0.0"
303330
resolved "https://registry.yarnpkg.com/extend/-/extend-3.0.0.tgz#5a474353b9f3353ddd8176dfd37b91c83a46f1d4"
@@ -397,7 +424,7 @@ [email protected]:
397424
version "2.0.3"
398425
resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-2.0.3.tgz#7cd2cdb228a4a3f36e95efa6cc142de7d1a136d0"
399426

400-
graceful-fs@^4.1.2:
427+
graceful-fs@^4.1.2, graceful-fs@^4.1.9:
401428
version "4.1.11"
402429
resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.1.11.tgz#0e8bdfe4d1ddb8854d64e04ea7c00e2a026e5658"
403430

@@ -550,6 +577,10 @@ js-tokens@^3.0.0:
550577
version "3.0.1"
551578
resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-3.0.1.tgz#08e9f132484a2c45a30907e9dc4d5567b7f114d7"
552579

580+
js2xmlparser@~1.0.0:
581+
version "1.0.0"
582+
resolved "https://registry.yarnpkg.com/js2xmlparser/-/js2xmlparser-1.0.0.tgz#5a170f2e8d6476ce45405e04823242513782fe30"
583+
553584
jsbn@~0.1.0:
554585
version "0.1.1"
555586
resolved "https://registry.yarnpkg.com/jsbn/-/jsbn-0.1.1.tgz#a5e654c2e5a2deb5f201d96cefbca80c0ef2f513"
@@ -567,6 +598,23 @@ jsdoc-docset@^0.2.1:
567598
docset-generator "^0.2.1"
568599
object-assign "^4.0.1"
569600

601+
jsdoc@^3.4.3:
602+
version "3.4.3"
603+
resolved "https://registry.yarnpkg.com/jsdoc/-/jsdoc-3.4.3.tgz#e5740d6145c681f6679e6c17783a88dbdd97ccd3"
604+
dependencies:
605+
bluebird "~3.4.6"
606+
catharsis "~0.8.8"
607+
escape-string-regexp "~1.0.5"
608+
espree "~3.1.7"
609+
js2xmlparser "~1.0.0"
610+
klaw "~1.3.0"
611+
marked "~0.3.6"
612+
mkdirp "~0.5.1"
613+
requizzle "~0.2.1"
614+
strip-json-comments "~2.0.1"
615+
taffydb "2.6.2"
616+
underscore "~1.8.3"
617+
570618
571619
version "0.2.3"
572620
resolved "https://registry.yarnpkg.com/json-schema/-/json-schema-0.2.3.tgz#b480c892e59a2f05954ce727bd3f2a4e882f9e13"
@@ -593,6 +641,12 @@ jsprim@^1.2.2:
593641
json-schema "0.2.3"
594642
verror "1.3.6"
595643

644+
klaw@~1.3.0:
645+
version "1.3.1"
646+
resolved "https://registry.yarnpkg.com/klaw/-/klaw-1.3.1.tgz#4088433b46b3b1ba259d78785d8e96f73ba02439"
647+
optionalDependencies:
648+
graceful-fs "^4.1.9"
649+
596650
leven@^2.0.0:
597651
version "2.1.0"
598652
resolved "https://registry.yarnpkg.com/leven/-/leven-2.1.0.tgz#c2e7a9f772094dee9d34202ae8acce4687875580"
@@ -621,6 +675,10 @@ lru-cache@^4.0.1:
621675
pseudomap "^1.0.1"
622676
yallist "^2.0.0"
623677

678+
marked@~0.3.6:
679+
version "0.3.6"
680+
resolved "https://registry.yarnpkg.com/marked/-/marked-0.3.6.tgz#b2c6c618fccece4ef86c4fc6cb8a7cbf5aeda8d7"
681+
624682
mime-db@~1.26.0:
625683
version "1.26.0"
626684
resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.26.0.tgz#eaffcd0e4fc6935cf8134da246e2e6c35305adff"
@@ -886,6 +944,12 @@ request@2, request@^2.75.0, request@^2.79.0:
886944
tunnel-agent "^0.6.0"
887945
uuid "^3.0.0"
888946

947+
requizzle@~0.2.1:
948+
version "0.2.1"
949+
resolved "https://registry.yarnpkg.com/requizzle/-/requizzle-0.2.1.tgz#6943c3530c4d9a7e46f1cddd51c158fc670cdbde"
950+
dependencies:
951+
underscore "~1.6.0"
952+
889953
resolve@^1.1.6:
890954
version "1.3.2"
891955
resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.3.2.tgz#1f0442c9e0cbb8136e87b9305f932f46c7f28235"
@@ -1077,6 +1141,10 @@ supports-color@^2.0.0:
10771141
version "2.0.0"
10781142
resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-2.0.0.tgz#535d045ce6b6363fa40117084629995e9df324c7"
10791143

1144+
1145+
version "2.6.2"
1146+
resolved "https://registry.yarnpkg.com/taffydb/-/taffydb-2.6.2.tgz#7cbcb64b5a141b6a2efc2c5d2c67b4e150b2a268"
1147+
10801148
tar-pack@~3.3.0:
10811149
version "3.3.0"
10821150
resolved "https://registry.yarnpkg.com/tar-pack/-/tar-pack-3.3.0.tgz#30931816418f55afc4d21775afdd6720cee45dae"
@@ -1151,6 +1219,20 @@ uid-number@~0.0.6:
11511219
version "0.0.6"
11521220
resolved "https://registry.yarnpkg.com/uid-number/-/uid-number-0.0.6.tgz#0ea10e8035e8eb5b8e4449f06da1c730663baa81"
11531221

1222+
underscore-contrib@~0.3.0:
1223+
version "0.3.0"
1224+
resolved "https://registry.yarnpkg.com/underscore-contrib/-/underscore-contrib-0.3.0.tgz#665b66c24783f8fa2b18c9f8cbb0e2c7d48c26c7"
1225+
dependencies:
1226+
underscore "1.6.0"
1227+
1228+
[email protected], underscore@~1.6.0:
1229+
version "1.6.0"
1230+
resolved "https://registry.yarnpkg.com/underscore/-/underscore-1.6.0.tgz#8b38b10cacdef63337b8b24e4ff86d45aea529a8"
1231+
1232+
underscore@~1.8.3:
1233+
version "1.8.3"
1234+
resolved "https://registry.yarnpkg.com/underscore/-/underscore-1.8.3.tgz#4f3fb53b106e6097fcf9cb4109f2a5e9bdfa5022"
1235+
11541236
util-deprecate@~1.0.1:
11551237
version "1.0.2"
11561238
resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf"

0 commit comments

Comments
 (0)