mirror of
https://github.com/zed-industries/zed.git
synced 2025-02-11 04:36:24 +00:00
50 lines
1.5 KiB
TypeScript
50 lines
1.5 KiB
TypeScript
import * as fs from "fs"
|
|
import toml from "toml"
|
|
import { themes } from "./themes"
|
|
import { ThemeConfig } from "./common"
|
|
|
|
const ACCEPTED_LICENSES_FILE = `${__dirname}/../../script/licenses/zed-licenses.toml`
|
|
|
|
// Use the cargo-about configuration file as the source of truth for supported licenses.
|
|
function parseAcceptedToml(file: string): string[] {
|
|
let buffer = fs.readFileSync(file).toString()
|
|
|
|
let obj = toml.parse(buffer)
|
|
|
|
if (!Array.isArray(obj.accepted)) {
|
|
throw Error("Accepted license source is malformed")
|
|
}
|
|
|
|
return obj.accepted
|
|
}
|
|
|
|
function checkLicenses(themes: ThemeConfig[]) {
|
|
for (const theme of themes) {
|
|
if (!theme.licenseFile) {
|
|
throw Error(`Theme ${theme.name} should have a LICENSE file`)
|
|
}
|
|
}
|
|
}
|
|
|
|
function generateLicenseFile(themes: ThemeConfig[]) {
|
|
checkLicenses(themes)
|
|
for (const theme of themes) {
|
|
const licenseText = fs.readFileSync(theme.licenseFile).toString()
|
|
writeLicense(theme.name, licenseText, theme.licenseUrl)
|
|
}
|
|
}
|
|
|
|
function writeLicense(
|
|
themeName: string,
|
|
licenseText: string,
|
|
licenseUrl?: string
|
|
) {
|
|
process.stdout.write(
|
|
licenseUrl
|
|
? `## [${themeName}](${licenseUrl})\n\n${licenseText}\n********************************************************************************\n\n`
|
|
: `## ${themeName}\n\n${licenseText}\n********************************************************************************\n\n`
|
|
)
|
|
}
|
|
|
|
const acceptedLicenses = parseAcceptedToml(ACCEPTED_LICENSES_FILE)
|
|
generateLicenseFile(themes)
|