/
run.js
116 lines (100 loc) · 3.01 KB
/
run.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
const fs = require("fs-extra")
const jsonfile = require("jsonfile")
const { APIv2, APIVariable } = require("google-font-metadata")
const packagerv1 = require("./packager-v1")
const packagerv2 = require("./packager-v2")
const variable = require("./variable")
const { packageJson, readme, readmeVariable } = require("./templates")
const id = process.argv[2]
if (!id) {
console.warn(`Google Font ID has not been passed into packager.`)
process.exit()
}
const force = process.argv[3]
const font = APIv2[id]
// Set file directories
const fontDir = `packages/${font.id}`
fs.ensureDirSync(fontDir)
// Update checking
let changed = false
if (fs.existsSync(`${fontDir}/metadata.json`)) {
const metadata = jsonfile.readFileSync(`${fontDir}/metadata.json`)
changed = metadata.lastModified !== font.lastModified
} else {
changed = true
}
if (changed || force === "force") {
// Wipe old font files preserving package.json
if (fs.existsSync(`${fontDir}/package.json`)) {
fs.copySync(
`./${fontDir}/package.json`,
`./scripts/temp_packages/${font.id}-package.json`
)
fs.emptyDirSync(fontDir)
fs.copySync(
`./scripts/temp_packages/${font.id}-package.json`,
`./${fontDir}/package.json`
)
fs.removeSync(`./scripts/temp_packages/${font.id}-package.json`)
}
fs.ensureDirSync(`./${fontDir}/files`)
// Generate files
packagerv1(font.id)
packagerv2(font.id)
let variableMeta = false
let variableFlag = false
if (font.id in APIVariable) {
variable(font.id)
variableMeta = APIVariable[font.id].axes
variableFlag = true
}
// Write README.md
let packageReadme
if (variableFlag) {
packageReadme = readmeVariable({
fontId: font.id,
fontName: font.family,
subsets: font.subsets,
weights: font.weights,
styles: font.styles,
version: font.version,
})
} else {
packageReadme = readme({
fontId: font.id,
fontName: font.family,
subsets: font.subsets,
weights: font.weights,
styles: font.styles,
version: font.version,
})
}
fs.writeFileSync(`${fontDir}/README.md`, packageReadme)
// Don't create package.json if already exists to prevent lerna versioning conflicts
if (!fs.existsSync(`${fontDir}/package.json`)) {
// Write out package.json file
const packageJSON = packageJson({
fontId: font.id,
fontName: font.family,
})
fs.writeFileSync(`${fontDir}/package.json`, packageJSON)
}
// Write metadata.json
jsonfile.writeFileSync(`${fontDir}/metadata.json`, {
fontId: font.id,
fontName: font.family,
subsets: font.subsets,
weights: font.weights,
styles: font.styles,
defSubset: font.defSubset,
variable: variableMeta,
lastModified: font.lastModified,
version: font.version,
source: "https://fonts.google.com/",
license: "https://fonts.google.com/attribution",
type: "google",
})
// Copy CHANGELOG.md over from main repo
fs.copySync(`./CHANGELOG.md`, `${fontDir}/CHANGELOG.md`)
}
console.log(`Finished processing ${font.id}`)