/
sdds
/
plasma
Обзор
Документация
Войти
/
sdds
/
plasma
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
Аналитика
dev
actions/versionate-docs/src/fs.ts
56 строк
2 KB
Fanil Zubairov
feat(versionate-docs): Added versionArchived.json sort
18 мар 2022, 10:41
18 мар 2022, 10:41
fc8d4ee
Код
Авторство
О чём код?
import fs from 'fs'; import { promisify } from 'util'; import { associatedPackages } from './packages'; import { sortVersions } from './utils'; const readFile = promisify(fs.readFile); const writeFile = promisify(fs.writeFile); const lstat = promisify(fs.lstat); /** * При наличии файла в формате JSON, вернет его содержимое. */ const readJson = async <T>(path: string): Promise<T | undefined> => { const stats = await lstat(path); if (!stats.isFile()) { return; } const rawData = await readFile(path); return JSON.parse(rawData.toString()); }; /** * Записать JSON с версиями и ссылками на них. */ export const writeVersionsJson = async (path: string, version: string, url: string) => { const json = (await readJson<Record<string, string>>(path)) || {}; const sortedJson = sortVersions({ ...json, [version]: url }); return writeFile(path, JSON.stringify(sortedJson, null, 4)); }; /** * Найдет пакеты и их версии по ассоциированным с ними сайтами документации. */ export const findAssociatedVersions = async (names: string[]) => { const result: Record<string, string> = {}; await Promise.all( names.map(async (name) => { const pckgName = associatedPackages[name]; const path = `./packages/${pckgName}/package.json`; const pckgJson = await readJson<{ version: string }>(path); if (!pckgJson) { throw new Error(`package.json not found for chain "${name} - ${pckgName}"`); } result[pckgName] = pckgJson.version; }), ); return result; };