44 lines
1.1 KiB
JavaScript
44 lines
1.1 KiB
JavaScript
import { path, globDir, readJsonFile } from './fs.mjs'
|
|
|
|
export const getDesigns = async () => {
|
|
const designs = {}
|
|
const list = await getFolders('designs')
|
|
for (const design of list) {
|
|
const data = await readJsonFile(['designs', design, 'about.json'])
|
|
if (!data.hide) designs[design] = data
|
|
}
|
|
|
|
return designs
|
|
}
|
|
|
|
export const getPackages = async () => {
|
|
const packages = {}
|
|
const list = await getFolders('packages')
|
|
for (const pkg of list) {
|
|
const data = await readJsonFile(['packages', pkg, 'about.json'])
|
|
packages[pkg] = data
|
|
}
|
|
|
|
return packages
|
|
}
|
|
|
|
export const getPlugins = async () => {
|
|
const plugins = {}
|
|
const list = await getFolders('plugins')
|
|
for (const plugin of list) {
|
|
const data = await readJsonFile(['plugins', plugin, 'about.json'])
|
|
plugins[plugin] = data
|
|
}
|
|
|
|
return plugins
|
|
}
|
|
|
|
export const getSoftware = async () => ({
|
|
designs: await getDesigns(),
|
|
packages: await getPackages(),
|
|
plugins: await getPlugins(),
|
|
})
|
|
|
|
// Helper
|
|
const getFolders = async (dir) =>
|
|
(await globDir(dir, '*')).map((file) => path.basename(file)).sort()
|