Press n or j to go to the next uncovered block, b, p or k for the previous block.
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 | 5x 5x 5x 5x 5x 5x 5x 5x 5x 5x 16x 16x 16x 16x 14x 14x 14x 14x 14x 14x 14x 14x 14x | import fs from 'fs-extra' import cosmiconfig from 'cosmiconfig' import semver from 'semver' import { join } from 'path' import Ajv from 'ajv' import { relativePath, isRelativePath } from '@/utils' import { MilircSchema } from '@/schema' import { Milirc } from '@/class' const ajv = new Ajv({ useDefaults: true, nullable: true }) const validate = ajv.compile(MilircSchema) const explorer = cosmiconfig('mili') export default async(cwd: string): Promise<Milirc | null> => { let config: Milirc | null = null const filepath = join(cwd, '.milirc.yml') if (!await fs.pathExists(filepath)) return config const result = await explorer.load(filepath) Iif (!result || !result.config) return config config = JSON.parse(JSON.stringify(result.config)) Iif (!config) throw new Error('Cannot load .milirc.yml') Iif (config.mili && semver.lt(config.mili.version, '2.0.0')) throw new Error('Never support auto upgrade from mili@1') const valid = validate(config) Iif (!valid) throw new Error(ajv.errorsText(validate.errors, { dataVar: 'milirc' })) /** The relative template path saved in .milirc is relative to the dir of .milirc */ Iif (isRelativePath(config.template.repository)) { config.template.repository = relativePath(process.cwd(), join(cwd, config.template.repository)) } return config } |