MCPcopy
hub / github.com/msgbyte/tianji / handler

Function handler

packages/cli/src/commands/worker/init.ts:22–98  ·  view source on GitHub ↗
(argv: Arguments<InitOptions>)

Source from the content-addressed store, hash-verified

20};
21
22export const handler = async (argv: Arguments<InitOptions>): Promise<void> => {
23 const projectName = argv.projectName;
24 const targetDir = projectName
25 ? path.resolve(process.cwd(), projectName)
26 : process.cwd();
27
28 const templateDir = path.resolve(__dirname, '../../templates/worker');
29
30 console.log(chalk.cyan('\n🚀 Initializing Tianji Worker project...\n'));
31
32 // Check if target directory exists and is not empty
33 if (projectName) {
34 if (await fs.pathExists(targetDir)) {
35 const files = await fs.readdir(targetDir);
36 if (files.length > 0) {
37 console.error(
38 chalk.red(
39 `Error: Directory "${projectName}" already exists and is not empty.`
40 )
41 );
42 process.exit(1);
43 }
44 }
45 } else {
46 // If using current directory, check if it's not empty
47 const files = await fs.readdir(targetDir);
48 if (files.length > 0) {
49 console.error(
50 chalk.red(
51 'Error: Current directory is not empty. Please use an empty directory or provide a project name.'
52 )
53 );
54 process.exit(1);
55 }
56 }
57
58 const spinner = ora('Creating project files...').start();
59
60 try {
61 // Ensure target directory exists
62 await fs.ensureDir(targetDir);
63
64 // Copy template files
65 await fs.copy(templateDir, targetDir);
66
67 // Update package.json with project name if provided
68 if (projectName) {
69 const packageJsonPath = path.join(targetDir, 'package.json');
70 const packageJson = await fs.readJson(packageJsonPath);
71 packageJson.name = projectName;
72 await fs.writeJson(packageJsonPath, packageJson, { spaces: 2 });
73
74 // Update .tianjirc with project name
75 const tianjiRcPath = path.join(targetDir, '.tianjirc');
76 const tianjiRc = await fs.readJson(tianjiRcPath);
77 tianjiRc.name = projectName;
78 await fs.writeJson(tianjiRcPath, tianjiRc, { spaces: 2 });
79 }

Callers

nothing calls this directly

Calls 3

logMethod · 0.80
errorMethod · 0.80
startMethod · 0.80

Tested by

no test coverage detected