49 lines
1.3 KiB
TypeScript
49 lines
1.3 KiB
TypeScript
import { isDev } from "./common";
|
|
import fs from 'fs/promises';
|
|
export async function getTemplates() {
|
|
const templatePath = isDev ? './templates.json' : '/app/templates.json';
|
|
const open = await fs.open(templatePath, 'r');
|
|
let data;
|
|
try {
|
|
data = await open.readFile({ encoding: 'utf-8' });
|
|
return JSON.parse(data);
|
|
} catch (error) {
|
|
return []
|
|
} finally {
|
|
await open?.close()
|
|
}
|
|
}
|
|
const compareSemanticVersions = (a: string, b: string) => {
|
|
const a1 = a.split('.');
|
|
const b1 = b.split('.');
|
|
const len = Math.min(a1.length, b1.length);
|
|
for (let i = 0; i < len; i++) {
|
|
const a2 = +a1[i] || 0;
|
|
const b2 = +b1[i] || 0;
|
|
if (a2 !== b2) {
|
|
return a2 > b2 ? 1 : -1;
|
|
}
|
|
}
|
|
return b1.length - a1.length;
|
|
};
|
|
export async function getTags(type: string) {
|
|
|
|
try {
|
|
if (type) {
|
|
const tagsPath = isDev ? './tags.json' : '/app/tags.json';
|
|
const data = await fs.readFile(tagsPath, 'utf8')
|
|
let tags = JSON.parse(data)
|
|
if (tags) {
|
|
tags = tags.find((tag: any) => tag.name.includes(type))
|
|
tags.tags = tags.tags.sort(compareSemanticVersions).reverse();
|
|
return tags
|
|
}
|
|
}
|
|
} catch (error) {
|
|
return []
|
|
|
|
}
|
|
|
|
|
|
}
|