First build
This commit is contained in:
parent
511556737e
commit
fd773f5832
954 changed files with 305115 additions and 2 deletions
78
src/prefixes.js
Normal file
78
src/prefixes.js
Normal file
|
|
@ -0,0 +1,78 @@
|
|||
'use strict'
|
||||
|
||||
const path = require('path')
|
||||
const fs = require('fs')
|
||||
const { DIRS, readJson, writeJson } = require('./paths')
|
||||
|
||||
const REGISTRY = path.join(DIRS.DATA, 'prefixes.json')
|
||||
const MAIN = 'Main'
|
||||
|
||||
function seed() {
|
||||
const defs = readJson(REGISTRY, null)
|
||||
if (!defs || !Array.isArray(defs.prefixes) || !defs.prefixes.length) {
|
||||
const seeded = { default: MAIN, prefixes: [{ name: MAIN, created: Date.now(), locked: true }] }
|
||||
if (!fs.existsSync(prefixPath(MAIN))) fs.mkdirSync(prefixPath(MAIN), { recursive: true })
|
||||
writeJson(REGISTRY, seeded)
|
||||
}
|
||||
}
|
||||
|
||||
function listPrefixes() {
|
||||
seed()
|
||||
return readJson(REGISTRY, { default: MAIN, prefixes: [] })
|
||||
}
|
||||
|
||||
function savePrefixes(defs) {
|
||||
writeJson(REGISTRY, defs)
|
||||
}
|
||||
|
||||
function normalizeName(name) {
|
||||
return String(name || '').trim().replace(/[^\w .-]/g, '').replace(/\s+/g, ' ')
|
||||
}
|
||||
|
||||
function prefixPath(name) {
|
||||
return path.join(DIRS.PREFIXES, name)
|
||||
}
|
||||
|
||||
function prefixExists(name) {
|
||||
try {
|
||||
fs.accessSync(prefixPath(name))
|
||||
return true
|
||||
} catch {
|
||||
return false
|
||||
}
|
||||
}
|
||||
|
||||
function createPrefix(name) {
|
||||
const clean = normalizeName(name)
|
||||
if (!clean) return { ok: false, error: 'invalidName' }
|
||||
if (clean.toLowerCase() === MAIN.toLowerCase()) return { ok: false, error: 'alreadyExists' }
|
||||
if (fs.existsSync(prefixPath(clean))) return { ok: false, error: 'alreadyExists' }
|
||||
fs.mkdirSync(prefixPath(clean), { recursive: true })
|
||||
const defs = listPrefixes()
|
||||
defs.prefixes.push({ name: clean, created: Date.now() })
|
||||
if (!defs.prefixes.some(p => p.name === defs.default)) defs.default = clean
|
||||
savePrefixes(defs)
|
||||
return { ok: true, name: clean }
|
||||
}
|
||||
|
||||
function deletePrefix(name) {
|
||||
if (String(name).toLowerCase() === MAIN.toLowerCase()) return { ok: false, error: 'isMain' }
|
||||
const defs = listPrefixes()
|
||||
defs.prefixes = defs.prefixes.filter(p => p.name !== name)
|
||||
if (defs.default === name) defs.default = MAIN
|
||||
savePrefixes(defs)
|
||||
try {
|
||||
fs.rmSync(prefixPath(name), { recursive: true, force: true })
|
||||
} catch {}
|
||||
return { ok: true }
|
||||
}
|
||||
|
||||
function setDefaultPrefix(name) {
|
||||
const defs = listPrefixes()
|
||||
if (name && !defs.prefixes.some(p => p.name === name)) return { ok: false, error: 'notFound' }
|
||||
defs.default = name || ''
|
||||
savePrefixes(defs)
|
||||
return { ok: true }
|
||||
}
|
||||
|
||||
module.exports = { listPrefixes, createPrefix, deletePrefix, setDefaultPrefix, prefixPath, prefixExists, normalizeName, MAIN }
|
||||
Loading…
Add table
Add a link
Reference in a new issue