Skip to content

Commit 5c3d9d8

Browse files
Process only the latest patch versions
1 parent 5400408 commit 5c3d9d8

File tree

2 files changed

+54
-35
lines changed

2 files changed

+54
-35
lines changed

lib/get-latest-patch-versions.js

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
import { groupBy } from 'lodash'
2+
import semverCompare from 'semver-compare'
3+
import semverUtils from 'semver-utils'
4+
5+
export function getLatestPatchVersions(versions) {
6+
let groupedVersions = groupBy(
7+
versions.sort(semverCompare).map(semverUtils.parse),
8+
v => `${v.major}.${v.minor}`
9+
)
10+
return Object.values(groupedVersions).map(verGroup => verGroup.pop().version)
11+
}

lib/read-docs.js

Lines changed: 43 additions & 35 deletions
Original file line numberDiff line numberDiff line change
@@ -1,32 +1,42 @@
11
import fs from 'fs-extra'
22
import glob from 'glob'
3-
import path from 'path'
4-
import RSVP from 'rsvp'
53
import { dasherize } from 'inflected'
4+
import { get as deepGet } from 'lodash'
5+
import { getLatestPatchVersions } from './get-latest-patch-versions'
66

77
export default function readDocs(
88
projects,
99
specificVersion = '',
1010
ignorePreviouslyIndexedDoc = false,
1111
runClean = false
1212
) {
13-
console.log('Reading project files')
13+
return projects.reduce(async (prevPromise, projectName) => {
14+
let prevValue = await prevPromise
15+
let prevIndexedVersions = []
1416

15-
let docs = {}
16-
projects.forEach(projectName => {
17-
let fileName = `${dasherize(projectName)}-docs.json`
18-
let folders = glob.sync(`tmp/s3-docs/v${specificVersion}*/${fileName}`)
1917
let projectFile = `tmp/json-docs/${projectName}/projects/${projectName}.json`
20-
let prevIndexedVersions = []
21-
if (fs.existsSync(projectFile)) {
22-
projectFile = JSON.parse(fs.readFileSync(projectFile))
23-
projectFile.data.relationships['project-versions'].data.forEach(({ id }) => {
24-
let version = id.replace(`${projectName}-`, '')
25-
prevIndexedVersions.push(`tmp/s3-docs/v${version}/${projectName}-docs.json`)
26-
})
18+
19+
console.log(projectFile, await fs.pathExists(projectFile))
20+
21+
if (await fs.pathExists(projectFile)) {
22+
projectFile = await fs.readJson(projectFile)
23+
24+
prevIndexedVersions = deepGet(projectFile, 'data.relationships.project-versions.data').map(
25+
({ id }) => id.replace(`${projectName}-`, '')
26+
)
2727
}
2828

29+
let folders = glob.sync(`tmp/s3-docs/v${specificVersion}*/${dasherize(projectName)}-docs.json`)
30+
31+
let availableSourceVersions = folders.map(x =>
32+
x.replace('tmp/s3-docs/v', '').replace(`/${projectName}-docs.json`, '')
33+
)
34+
2935
if (!runClean) {
36+
availableSourceVersions = availableSourceVersions.filter(
37+
version => !prevIndexedVersions.includes(version)
38+
)
39+
3040
folders = folders.filter(f => {
3141
if (!prevIndexedVersions.includes(f) || ignorePreviouslyIndexedDoc) {
3242
return f
@@ -37,25 +47,23 @@ export default function readDocs(
3747
})
3848
}
3949

40-
docs[projectName] = folders.map(docs => {
41-
let version = path.basename(path.dirname(docs)).replace('v', '')
42-
let data
43-
44-
try {
45-
data = JSON.parse(fs.readFileSync(docs, { encoding: 'utf8' }))
46-
} catch (e) {
47-
console.error(docs)
48-
console.error(e.stack)
49-
process.exit(1)
50-
}
51-
console.log('returning from readDocs')
52-
return {
53-
project: projectName,
54-
version,
55-
data,
56-
}
57-
})
58-
})
59-
60-
return RSVP.resolve(docs)
50+
availableSourceVersions = getLatestPatchVersions(availableSourceVersions)
51+
52+
let docs = await Promise.all(
53+
availableSourceVersions.map(async version => {
54+
let data
55+
56+
try {
57+
data = await fs.readJSON(`tmp/s3-docs/v${version}/${projectName}-docs.json`)
58+
return { project: projectName, version, data }
59+
} catch (e) {
60+
console.error(version)
61+
console.error(e.stack)
62+
process.exit(1)
63+
}
64+
})
65+
)
66+
67+
return { ...prevValue, [projectName]: docs }
68+
}, Promise.resolve({}))
6169
}

0 commit comments

Comments
 (0)