Files
sysconfig/mkdir_tree.js
luk 9742f6dab2 refactor: 脚本及配置文件命名统一用 _ 分隔
将 .sh/.bat 脚本与 .js/.plist/.Dockerfile 等文件中以 - 分隔的文件名
改为 _ 分隔,dcloud-renew 目录改为 dcloud、script_nuance 目录改为
nuance,并同步更新脚本内部引用与 README 路径。

Co-Authored-By: AtomCode (deepseek-v4-flash) <noreply@atomgit.com>
2026-08-25 15:11:50 +08:00

74 lines
3.7 KiB
JavaScript

const fs = require('fs');
const path = require('path');
const letters = 'abcdefghijklmnopqrstuvwxyz'.split('');
const wordsByLetter = {
a: ['almond', 'amber', 'apricot', 'atlas', 'aurora', 'avocado', 'alpine', 'amethyst', 'anchor', 'aspen'],
b: ['bamboo', 'beacon', 'berry', 'blossom', 'brisk', 'brook', 'bison', 'butter', 'breeze', 'birch'],
c: ['cabin', 'canyon', 'cedar', 'cinder', 'clover', 'copper', 'coral', 'crimson', 'cumulus', 'currant'],
d: ['daisy', 'delta', 'dune', 'drift', 'dolphin', 'dream', 'durian', 'dewdrop', 'dandelion', 'dynamo'],
e: ['elm', 'ember', 'echo', 'everest', 'eclipse', 'enigma', 'estate', 'eagle', 'elder', 'emerald'],
f: ['falcon', 'fern', 'fig', 'flame', 'forest', 'frost', 'fable', 'fairy', 'fjord', 'fusion'],
g: ['garland', 'gem', 'ginger', 'glacier', 'granite', 'grove', 'garnet', 'grape', 'gull', 'galaxy'],
h: ['harbor', 'hazel', 'heather', 'horizon', 'hunter', 'hyacinth', 'honey', 'hollow', 'harvest', 'holly'],
i: ['island', 'ivory', 'iris', 'inferno', 'ivy', 'indigo', 'icicle', 'ignite', 'imprint', 'inlet'],
j: ['jasmine', 'jet', 'juniper', 'journey', 'jungle', 'joy', 'jasper', 'jolly', 'jacket', 'jade'],
k: ['kepler', 'kiwi', 'kestrel', 'knoll', 'kale', 'kernel', 'kimber', 'koral', 'kite', 'kraken'],
l: ['lagoon', 'lantern', 'lemon', 'lilac', 'lunar', 'linden', 'lotus', 'lark', 'lattice', 'larch'],
m: ['maple', 'marble', 'meadow', 'meteor', 'mint', 'moss', 'mango', 'monarch', 'morrow', 'mulberry'],
n: ['nectar', 'nelson', 'nimbus', 'north', 'nova', 'nutmeg', 'nori', 'night', 'narrow', 'nymph'],
o: ['oak', 'opal', 'orchid', 'orbit', 'otter', 'olive', 'onyx', 'oasis', 'ocean', 'omega'],
p: ['pebble', 'petal', 'pine', 'poppy', 'prairie', 'quartz', 'pixel', 'pocket', 'panda', 'plume'],
q: ['quill', 'quartz', 'quiver', 'quest', 'quince', 'quiet', 'quasar', 'quick', 'quokka', 'quarry'],
r: ['rain', 'raven', 'reed', 'ridge', 'river', 'rose', 'roam', 'ripple', 'ruby', 'ranger'],
s: ['sage', 'saffron', 'salmon', 'sandal', 'sequoia', 'shadow', 'spruce', 'summit', 'sunset', 'safflower'],
t: ['tide', 'timber', 'topaz', 'thistle', 'travel', 'trident', 'tulip', 'tundra', 'talon', 'teal'],
u: ['umbra', 'unity', 'ultra', 'upland', 'utopia', 'uranus', 'umbrella', 'unicorn', 'urban', 'uphill'],
v: ['valley', 'velvet', 'verve', 'violet', 'vivid', 'voyage', 'vapor', 'vulture', 'vine', 'willow'],
w: ['water', 'watson', 'willow', 'whisper', 'wren', 'wander', 'walnut', 'weaver', 'wisp', 'winter'],
x: ['xenon', 'xeric', 'xylem', 'xenial', 'xylophone', 'xanthic', 'xenith', 'xerus', 'xavier', 'xylograph'],
y: ['yarrow', 'yalow', 'yellow', 'yonder', 'yew', 'yogurt', 'yonder', 'young', 'yarn', 'yearn'],
z: ['zephyr', 'zenith', 'zebra', 'zinnia', 'zoe', 'zucchini', 'zen', 'zesty', 'zonal', 'zorro']
};
function randomWord(letter) {
const list = wordsByLetter[letter] || ['word'];
return list[Math.floor(Math.random() * list.length)];
}
function generateTree(baseDir, depth, currentDepth = 1) {
if (currentDepth > depth) {
return;
}
for (const letter of letters) {
const word = randomWord(letter);
const dirName = word;
const fullPath = path.join(baseDir, dirName);
fs.mkdirSync(fullPath, { recursive: true });
if (currentDepth < depth) {
generateTree(fullPath, depth, currentDepth + 1);
}
}
}
function main() {
const depthArg = process.argv[2];
const depth = Number.parseInt(depthArg, 10);
if (!Number.isInteger(depth) || depth < 1) {
console.log('Usage: node generate-nested-random-dirs.js <depth>');
console.log('Example: node generate-nested-random-dirs.js 3');
process.exit(1);
}
const currentDir = process.cwd();
generateTree(currentDir, depth, 1);
console.log(`Created directory tree to depth ${depth} under ${currentDir}`);
}
main();