36 lines
1.0 KiB
JavaScript
36 lines
1.0 KiB
JavaScript
|
|
// 打包命令本地存储:启动台应用 / 项目各自多条 name+cmd,不进云同步。
|
|||
|
|
const PACK_KEY = 'cc-pack-cmds'
|
|||
|
|
|
|||
|
|
/** @typedef {{ name: string, cmd: string }} PackCmd */
|
|||
|
|
|
|||
|
|
function loadAll() {
|
|||
|
|
try { return JSON.parse(localStorage.getItem(PACK_KEY) || '{}') || {} } catch { return {} }
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
function saveAll(map) {
|
|||
|
|
localStorage.setItem(PACK_KEY, JSON.stringify(map))
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
/** @param {'lp'|'proj'} scope @param {number|string} id */
|
|||
|
|
export function packKey(scope, id) {
|
|||
|
|
return `${scope}:${id}`
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
/** @returns {PackCmd[]} */
|
|||
|
|
export function getPackCmds(scope, id) {
|
|||
|
|
const list = loadAll()[packKey(scope, id)]
|
|||
|
|
return Array.isArray(list) ? list.filter(x => x && String(x.cmd || '').trim()) : []
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
/** @param {PackCmd[]} cmds */
|
|||
|
|
export function setPackCmds(scope, id, cmds) {
|
|||
|
|
const map = loadAll()
|
|||
|
|
const cleaned = (cmds || [])
|
|||
|
|
.map(x => ({ name: String(x.name || '').trim(), cmd: String(x.cmd || '').trim() }))
|
|||
|
|
.filter(x => x.cmd)
|
|||
|
|
const k = packKey(scope, id)
|
|||
|
|
if (!cleaned.length) delete map[k]
|
|||
|
|
else map[k] = cleaned
|
|||
|
|
saveAll(map)
|
|||
|
|
}
|