Skip to content

Commit 56ea9a5

Browse files
authored
Merge pull request #119 from runspired/fix-ability-to-run-locally
fix: ensure ember-data works properly
2 parents d25d94a + 2b81619 commit 56ea9a5

16 files changed

+237
-165
lines changed

generate-local.js

Lines changed: 23 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -6,25 +6,33 @@ import minimist from 'minimist'
66
import path from 'path'
77
import 'hard-rejection/register'
88

9+
import { apiDocsProcessor } from './main'
10+
911
const argv = minimist(process.argv.slice(2))
1012

11-
const { project, version } = argv
13+
const { project, version, install, build } = argv
1214

1315
const exit = function exit() {
1416
console.log(...arguments)
1517
process.exit(1)
1618
}
1719

1820
const runCmd = async (cmd, path) => {
19-
console.log(chalk.underline(`Running '${chalk.green(cmd)}'`))
20-
const executedCmd = await execa(cmd, { cwd: path, shell: true })
21+
console.log(chalk.underline(`Running '${chalk.green(cmd)}' in '${path}'`))
22+
try {
23+
const executedCmd = await execa(`cd ${path} && ${cmd}`, { shell: true })
2124

22-
if (executedCmd.failed) {
23-
console.error(executedCmd.stderr)
25+
if (executedCmd.failed) {
26+
console.error(executedCmd.stdout)
27+
console.error(executedCmd.stderr)
28+
process.exit(1)
29+
30+
}
31+
console.log(executedCmd.stdout + '\n')
32+
} catch (error) {
33+
console.log(error)
2434
process.exit(1)
2535
}
26-
27-
console.log(executedCmd.stdout + '\n')
2836
}
2937
;(async () => {
3038
if (!project || !version) {
@@ -55,11 +63,15 @@ const runCmd = async (cmd, path) => {
5563

5664
let buildDocs = async projDirPath => {
5765
checkIfProjectDirExists(projDirPath)
58-
await runCmd('yarn', projDirPath)
5966

60-
console.log('\n\n')
67+
if (install) {
68+
await runCmd(project === 'ember' ? 'yarn' : 'pnpm install', projDirPath)
69+
console.log('\n\n')
70+
}
6171

62-
await runCmd(project === 'ember' ? 'yarn docs' : 'yarn workspace ember-data docs', projDirPath)
72+
if (build) {
73+
await runCmd(project === 'ember' ? 'yarn docs' : 'pnpm build:docs', projDirPath)
74+
}
6375

6476
const projYuiDocFile = `tmp/s3-docs/v${version}/${project}-docs.json`
6577
removeSync(projYuiDocFile)
@@ -81,13 +93,5 @@ const runCmd = async (cmd, path) => {
8193

8294
await buildDocs(dirMap[project])
8395

84-
await execa('yarn', [
85-
'start',
86-
'--project',
87-
project,
88-
'--version',
89-
version,
90-
'--ignorePreviouslyIndexedDoc',
91-
'--no-sync'
92-
]).stdout.pipe(process.stdout)
96+
await apiDocsProcessor([project], [version], true, false, true)
9397
})()

lib/add-inherited-items.js

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,4 @@
11
import _ from 'lodash'
2-
import RSVP from 'rsvp'
32

43
export default function addInheritedItems(docSets) {
54
docSets.forEach(versionData => {
@@ -29,7 +28,7 @@ export default function addInheritedItems(docSets) {
2928
})
3029
})
3130

32-
return RSVP.resolve(docSets)
31+
return Promise.resolve(docSets)
3332
}
3433

3534
function getParents(klass, classes) {

lib/add-since-tags.js

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,4 @@
11
import _ from 'lodash'
2-
import RSVP from 'rsvp'
32

43
export default function addSinceTags(docSets) {
54
let versionIndex = Object.create(null)
@@ -44,7 +43,7 @@ export default function addSinceTags(docSets) {
4443

4544
classes.forEach(klass => (klass.since = versionIndex['class'][klass.name][0]))
4645

47-
return RSVP.resolve(docSets)
46+
return Promise.resolve(docSets)
4847
}
4948

5049
function sortVersionIndex(versionIndex) {

lib/create-classes.js

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,20 +1,21 @@
1-
import RSVP from 'rsvp'
21
import saveDoc from './save-document'
32

4-
export default (document, projectName, projectVersion) => {
3+
export default async function (document, projectName, projectVersion) {
54
let things = document.data
65

7-
return RSVP.map(things, klass => {
6+
for (const klass of things) {
87
if (!klass.id) {
98
console.log(klass)
109
console.log(new Error('WHAT').stack)
1110
process.exit(1)
1211
}
13-
let document = {
12+
const doc = {
1413
data: klass,
1514
}
1615

1716
console.log(`Creating ${klass.id} in ${projectName}-${projectVersion}`)
18-
return saveDoc(document, projectName, projectVersion)
19-
}).then(() => document)
17+
await saveDoc(doc, projectName, projectVersion)
18+
}
19+
20+
return document
2021
}

lib/create-project-versions.js

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,10 @@
11
import tojsonapi from 'yuidoc-to-jsonapi/lib/converter'
2-
import RSVP from 'rsvp'
32
import saveDoc from './save-document'
43
import updateIDs from './update-with-versions-and-project'
54

6-
export default function createProjectVersions(versions, projectName) {
7-
return RSVP.map(versions, version => {
5+
export default async function createProjectVersions(versions, projectName) {
6+
const results = []
7+
for (const version of versions) {
88
let jsonapidoc = updateIDs(tojsonapi(version.data), version.version)
99

1010
let projectData = {
@@ -50,6 +50,8 @@ export default function createProjectVersions(versions, projectName) {
5050
included: [projectData],
5151
}
5252

53-
return saveDoc(versionDocument, projectName, version.version)
54-
})
53+
const result = await saveDoc(versionDocument, projectName, version.version)
54+
results.push(result)
55+
}
56+
return results
5557
}

lib/fetch-yui-docs.js

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,8 @@
1-
import compareVersions from 'compare-versions'
21
import download from 'download'
32
import fs from 'fs-extra'
43
import { isEmpty, trim } from 'lodash'
54
import mkdirp from 'mkdirp'
65
import pkgVersions from 'pkg-versions'
7-
import { all, resolve } from 'rsvp'
86

97
let filterValidVersions = (specificDocsVersion, ignorePreviouslyIndexedDoc) => version => {
108
let isCompatibleVersion =
@@ -20,7 +18,7 @@ let filterValidVersions = (specificDocsVersion, ignorePreviouslyIndexedDoc) => v
2018

2119
async function fetchYuiDocsFromNpm(projects, projectName, filterValidVersionsForRequestedDocs) {
2220
if (!projects.includes(projectName)) {
23-
return resolve()
21+
return Promise.resolve()
2422
}
2523

2624
let projectPkgMap = {
@@ -38,7 +36,7 @@ async function fetchYuiDocsFromNpm(projects, projectName, filterValidVersionsFor
3836
getProjectFileUrl = v => `https://unpkg.com/ember-data@${v}/dist/docs/data.json`
3937
}
4038

41-
return await all(
39+
return await Promise.all(
4240
versionsToProcess.map(async v => {
4341
let url = getProjectFileUrl(v)
4442
let targetDir = `tmp/s3-docs/v${v}`

lib/markup.js

Lines changed: 25 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -1,26 +1,38 @@
1-
import marked from 'marked'
1+
import { marked } from 'marked'
22
import hljs from 'highlight.js'
33
import cheerio from 'cheerio'
44

55
marked.setOptions({
66
highlight: code => hljs.highlightAuto(code).value,
77
})
88

9-
export default doc => {
10-
doc.data.forEach(({ id, attributes }) => {
11-
console.log(`Generating markup for ${id}`)
9+
export default function (doc) {
10+
console.log('transforming markup for document')
11+
for (const data of doc.data) {
12+
const { id, attributes } = data
13+
console.log(`\tGenerating markup for ${id}`)
1214

13-
let description = attributes.description
15+
try {
16+
const description = attributes.description
1417

15-
if (description) {
16-
attributes.description = highlight(description)
17-
}
18+
if (description) {
19+
attributes.description = highlight(description)
20+
}
1821

19-
replaceDescriptionFor(attributes.methods)
20-
replaceDescriptionFor(attributes.properties)
21-
replaceDescriptionFor(attributes.events)
22-
})
22+
// console.log('\tcompleted highlighting')
23+
24+
replaceDescriptionFor(attributes.methods)
25+
replaceDescriptionFor(attributes.properties)
26+
replaceDescriptionFor(attributes.events)
27+
// console.log(`\tMarkup Generated for ${id}\n`)
28+
} catch (e) {
29+
console.log(`Error generating markup for ${id}`)
30+
console.log(e)
31+
process.exit(1)
32+
}
33+
}
2334

35+
console.log('completed markup transformation for document')
2436
return doc
2537
}
2638

@@ -41,7 +53,7 @@ function highlight(description) {
4153
return String.fromCharCode(dec)
4254
})
4355
}
44-
let markedup = removeHLJSPrefix(marked(description))
56+
let markedup = removeHLJSPrefix(marked.parse(description))
4557
let $ = cheerio.load(markedup)
4658

4759
let codeBlocks = $('pre code')

lib/modules-transform.js

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,4 @@
11
import _ from 'lodash'
2-
import RSVP from 'rsvp'
32

43
function addSubModulesParentAttribute(moduleObj) {
54
moduleObj.parent = moduleObj.is_submodule ? moduleObj.module : null
@@ -78,8 +77,8 @@ export default function transformModules(docSets) {
7877
})
7978
})
8079
} catch (e) {
81-
return RSVP.reject(e)
80+
return Promise.reject(e)
8281
}
8382

84-
return RSVP.resolve(docSets)
83+
return Promise.resolve(docSets)
8584
}

lib/normalize-ember-dependencies.js

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,4 @@
11
import _ from 'lodash'
2-
import { Promise } from 'rsvp'
32
import { byType } from './filter-jsonapi-doc'
43

54
const missingDoc = ({ id, version }) => {

lib/normalize-ids.js

Lines changed: 5 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,4 @@
11
import _ from 'lodash'
2-
import RSVP from 'rsvp'
32
import saveDoc from './save-document'
43
import tojsonapi from 'yuidoc-to-jsonapi/lib/converter'
54
import updateIDs from './update-with-versions-and-project'
@@ -38,7 +37,7 @@ function filter176(project, version, { attributes }) {
3837
return project !== 'ember' || parseInt(version.split('.')[1]) < 16 || attributes.name !== 'ember'
3938
}
4039

41-
function normalizeIDs(pVersions, projectName) {
40+
async function normalizeIDs(pVersions, projectName) {
4241
let jsonapidocs = pVersions.map(({ data, version }) => {
4342
Object.keys(data.modules).forEach(k => {
4443
let modWithVer = data.modules[k]
@@ -115,16 +114,15 @@ function normalizeIDs(pVersions, projectName) {
115114
}
116115
})
117116

118-
let versionDocs = RSVP.map(projectVersions, projectVersion => {
117+
for (const projectVersion of projectVersions) {
119118
let doc = { data: projectVersion }
120119

121120
let version = projectVersion.attributes.version
122121

123-
return saveDoc(doc, projectName, version)
124-
})
122+
await saveDoc(doc, projectName, version)
123+
}
125124

126-
let doc = { data: jsonapidoc.data.concat(projectVersions) }
127-
return versionDocs.then(() => doc)
125+
return { data: jsonapidoc.data.concat(projectVersions) }
128126
}
129127

130128
export default normalizeIDs

lib/rev-docs.js

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
11
import revFile from 'rev-file'
22
import fs from 'fs-extra'
33
import ora from 'ora'
4-
import { Promise } from 'rsvp'
54
import { basename as getFileName } from 'path'
65
import { isArray } from 'lodash/lang'
76
import { singularize } from 'inflected'
@@ -60,7 +59,6 @@ function revProjVersionFiles(project, ver) {
6059

6160
fs.writeJsonSync(projVerRevFile, projVerRevContent)
6261
opProgress.succeed('Revving done!')
63-
Promise.resolve()
6462
}
6563

6664
export default revProjVersionFiles

lib/save-document.js

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,11 @@
11
import fs from 'fs-extra'
2-
import RSVP from 'rsvp'
32
import path from 'path'
43
import mkdirp from 'mkdirp'
54
import { pluralize } from 'inflected'
5+
import chalk from 'chalk'
66

77
// updateOrCreate
8-
export default function saveDoc(document, projectName, version = '') {
8+
export default async function saveDoc(document, projectName, version = '') {
99
let documentPath = path.join(
1010
'tmp',
1111
'json-docs',
@@ -17,8 +17,9 @@ export default function saveDoc(document, projectName, version = '') {
1717

1818
let json = JSON.stringify(document, null, 2)
1919

20-
return new RSVP.Promise((resolve, reject) => {
21-
if (document.data.id.length > 50) {
20+
return new Promise((resolve, reject) => {
21+
if ((version.startsWith('1.') || version.startsWith('0.')) && document.data.id.length > 50) {
22+
console.log(chalk.red(`\n\n⚠️ Skipping writing document with id ${chalk.yellow(document.data.id)} because it's too long\n\n`))
2223
// wtf ember 1.0 docs??
2324
return resolve()
2425
}

lib/transform-yui-object.js

Lines changed: 10 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -2,21 +2,14 @@ import transformModules from './modules-transform'
22
import addInheritedItems from './add-inherited-items'
33
import normalizeIDs from './normalize-ids'
44

5-
export default function transformYuiObject(docs, projName) {
6-
return transformModules(docs)
7-
.then(d => {
8-
console.log('transformed', d)
9-
let doc = addInheritedItems(d)
10-
console.log('added inherited')
11-
return doc
12-
})
13-
.then(d => {
14-
let doc = normalizeIDs(d, projName)
15-
console.log('normalized ids')
16-
return doc
17-
})
18-
.catch(e => {
19-
console.error(e)
20-
throw e
21-
})
5+
export default async function transformYuiObject(docs, projName) {
6+
let d = await transformModules(docs)
7+
console.log('\ttransformed yui object')
8+
d = await addInheritedItems(d)
9+
console.log('\tadded inherited')
10+
11+
d = await normalizeIDs(d, projName)
12+
console.log('\tnormalized ids')
13+
14+
return d
2215
}

0 commit comments

Comments
 (0)