UNPKG

cadb

Version:

安卓/鸿蒙系统截图/录屏工具

217 lines (202 loc) 5.64 kB
/** * Created by Niki on 2025/12/4 * 将最近 15 分钟内下载的 p7b 证书移动到 ztrip-harmony 指定 keystore 目录 */ const program = require('commander'); const fs = require('fs'); const path = require('path'); const {ztripHarmony, logRed, logGreen} = require('../common/constants'); const { getSystemHomePath, loadOrCollectProjectPathBatch, } = require('../common/utils'); const ZTRIP_PREFIX = 'ztrip_harmonynext_adhoc'; const TRAVEL_PREFIX = 'travel_harmonynext_adhoc'; const ZTRIP_PREFIX_DEBUG = 'ztrip_harmonynext_debug'; const TRAVEL_PREFIX_DEBUG = 'travel_harmonynext_debug'; const P7B_EXT = '.p7b'; const VALID_MS = 15 * 60 * 1000; // 15分钟 program .option('-c --noCache', 'drop local project path cache') .action(args => { run(args); }) .parse(process.argv); async function run(args) { const downloadsDir = getDownloadsDir(); ensureDownloadsDirExists(downloadsDir); precleanStandardFiles(downloadsDir); const ztripHarmonyPath = await resolveZtripHarmonyPath(args); const candidates = collectCandidates(downloadsDir); if (candidates.length <= 0) { logRed('未找到匹配的 p7b 证书文件'); setTimeout(() => process.exit(0), 100); return; } const now = Date.now(); let movedCount = 0; for (const candidate of candidates) { const {name, full, birthtimeMs} = candidate; if (!isWithinValidWindow(birthtimeMs, now)) { logRed(`文件无效(超过15分钟): ${name}`); continue; } const destInfo = getDestInfo(name, ztripHarmonyPath); if (!destInfo) { logRed(`未知前缀文件, 跳过: ${name}`); continue; } const {destDir, canonicalBaseName} = destInfo; const moved = moveToTarget(full, destDir, canonicalBaseName); if (moved) { logGreen(`已移动: ${name} -> ${destDir}`); movedCount++; } } if (movedCount <= 0) { logRed('未有符合条件的证书被移动'); } setTimeout(() => process.exit(0), 100); } function getDownloadsDir() { return path.join(getSystemHomePath(), 'Downloads'); } function ensureDownloadsDirExists(downloadsDir) { if (!fs.existsSync(downloadsDir)) { logRed(`未找到下载目录: ${downloadsDir}`); process.exit(1); } } function precleanStandardFiles(downloadsDir) { const canonicalNames = [ `${TRAVEL_PREFIX}${P7B_EXT}`, `${ZTRIP_PREFIX}${P7B_EXT}`, `${TRAVEL_PREFIX_DEBUG}${P7B_EXT}`, `${ZTRIP_PREFIX_DEBUG}${P7B_EXT}`, ]; for (const base of canonicalNames) { const filePath = path.join(downloadsDir, base); try { if (fs.existsSync(filePath)) { fs.unlinkSync(filePath); logGreen(`已清理下载目录旧文件: ${base}`); } } catch (e) { // ignore } } } async function resolveZtripHarmonyPath(args) { const {noCache} = args || {}; const [ztripHarmonyPath] = await loadOrCollectProjectPathBatch( [ztripHarmony], noCache, ); return ztripHarmonyPath; } function collectCandidates(downloadsDir) { const fileNames = fs.readdirSync(downloadsDir); if (!fileNames || fileNames.length === 0) { logRed('下载目录为空, 未找到任何证书文件'); return []; } return fileNames .filter(name => { const lower = name.toLowerCase(); return ( (lower.startsWith(ZTRIP_PREFIX) || lower.startsWith(TRAVEL_PREFIX) || lower.startsWith(ZTRIP_PREFIX_DEBUG) || lower.startsWith(TRAVEL_PREFIX_DEBUG)) && lower.endsWith(P7B_EXT) ); }) .map(name => { const full = path.join(downloadsDir, name); try { const stat = fs.statSync(full); return {name, full, birthtimeMs: stat.birthtimeMs}; } catch (e) { return null; } }) .filter(Boolean); } function isWithinValidWindow(birthtimeMs, now) { return now - birthtimeMs <= VALID_MS; } function getDestInfo(name, ztripHarmonyPath) { const lower = name.toLowerCase(); if (lower.startsWith(ZTRIP_PREFIX)) { return { destDir: path.join( ztripHarmonyPath, 'app_config', 'default', 'adhoc', 'keystore', ), canonicalBaseName: `${ZTRIP_PREFIX}${P7B_EXT}`, }; } if (lower.startsWith(TRAVEL_PREFIX)) { return { destDir: path.join( ztripHarmonyPath, 'app_config', 'travel', 'adhoc', 'keystore', ), canonicalBaseName: `${TRAVEL_PREFIX}${P7B_EXT}`, }; } if (lower.startsWith(ZTRIP_PREFIX_DEBUG)) { return { destDir: path.join( ztripHarmonyPath, 'app_config', 'default', 'default', 'keystore', ), canonicalBaseName: `${ZTRIP_PREFIX_DEBUG}${P7B_EXT}`, }; } if (lower.startsWith(TRAVEL_PREFIX_DEBUG)) { return { destDir: path.join( ztripHarmonyPath, 'app_config', 'travel', 'default', 'keystore', ), canonicalBaseName: `${TRAVEL_PREFIX_DEBUG}${P7B_EXT}`, }; } return null; } function moveToTarget(sourceFullPath, destDir, canonicalBaseName) { try { if (!fs.existsSync(destDir)) { fs.mkdirSync(destDir, {recursive: true}); } const target = path.join(destDir, canonicalBaseName); if (fs.existsSync(target)) { fs.unlinkSync(target); } fs.renameSync(sourceFullPath, target); if (fs.existsSync(sourceFullPath)) { try { fs.unlinkSync(sourceFullPath); } catch (e) {} } return true; } catch (err) { logRed( `移动失败: ${path.basename(sourceFullPath)}, ${err?.message || err}`, ); return false; } }