MCPcopy Create free account
hub / github.com/MigoXLab/coderio / registerValidateCommand

Function registerValidateCommand

src/cli/val.ts:29–92  ·  view source on GitHub ↗
(program: Command)

Source from the content-addressed store, hash-verified

27 * @param program - Commander program instance
28 */
29export function registerValidateCommand(program: Command): void {
30 program
31 .command('validate')
32 .alias('val')
33 .description('Validate position misalignment using an existing generated workspace')
34 .option(
35 '-w, --workspace [path]',
36 'Workspace root path (contains process/ and generated app folder). Defaults to coderio/<current-dir> if not specified'
37 )
38 .requiredOption('-u, --url <url>', 'Figma thumbnail URL for validation')
39 .option('--reportonly', 'Run report-only validation (no code edits)', false)
40 .action(async (opts: ValCommandOptions) => {
41 try {
42 // Determine workspace and project name
43 let workspace: WorkspaceStructure;
44 let projectName: string;
45
46 if (opts.workspace) {
47 // Use explicit workspace path
48 const workspacePath = path.resolve(opts.workspace);
49 const parentPath = path.dirname(path.dirname(workspacePath)); // Go up to parent of 'coderio' folder
50 projectName = path.basename(workspacePath);
51 workspace = workspaceManager.initWorkspace(projectName, parentPath);
52 } else {
53 // Default: use current directory name as project name
54 projectName = path.basename(process.env.CODERIO_CLI_USER_CWD ?? process.cwd());
55 workspace = workspaceManager.initWorkspace(projectName);
56 }
57
58 const protocolPath = path.join(workspace.process, 'protocol.json');
59
60 if (!fs.existsSync(protocolPath)) {
61 throw new Error(`Missing protocol at: ${protocolPath}. Run d2p/d2c first to generate process/protocol.json.`);
62 }
63
64 const protocol = readJsonFile<Protocol>(protocolPath);
65
66 // Use the provided URL directly
67 const figmaThumbnailUrl = opts.url;
68
69 // Build ValidationConfig from CLI options
70 const config: ValidationConfig = {
71 validationMode: opts.reportonly ? ValidationMode.ReportOnly : ValidationMode.Full,
72 };
73
74 logger.printInfoLog(`Running validation (${config.validationMode}) using workspace: ${workspace.root}`);
75
76 await runValidation({
77 urlInfo: { fileId: null, name: projectName, nodeId: null, projectName: null },
78 workspace,
79 figmaInfo: { thumbnail: figmaThumbnailUrl },
80 protocol,
81 messages: [],
82 config,
83 });
84
85 // If we reach here, validation passed
86 process.exit(0);

Callers 1

mainFunction · 0.90

Calls 3

runValidationFunction · 0.90
readJsonFileFunction · 0.85
initWorkspaceMethod · 0.80

Tested by

no test coverage detected