File size: 1,297 Bytes
a5d1c1b
 
 
 
 
 
 
 
 
 
61b1da1
a5d1c1b
 
61b1da1
a5d1c1b
 
 
 
 
 
 
 
 
61b1da1
a5d1c1b
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
import { projectConfigManager } from '../config/project-config.js';
import { syncService } from '../services/sync-service.js';
import { logger } from '../utils/logger.js';
import { outputResult, outputError, OutputOptions } from '../utils/output.js';

export interface SyncCommandOptions extends OutputOptions {
  force?: boolean;
}

export async function handleSync(options: SyncCommandOptions = {}): Promise<void> {
  const workspaceRoot = projectConfigManager.findEvbRoot();
  if (!workspaceRoot) {
    return outputError(
      'Not inside an Ever-Brain project. Run `evb init <repo>` first.',
      'NOT_IN_WORKSPACE',
      options
    );
  }

  try {
    const result = await syncService.sync(workspaceRoot, { force: options.force });

    outputResult(result, options, () => {
      logger.success(`Ever-Brain sync complete!`);
      console.log(`  • Updated:   ${result.updated} files`);
      console.log(`  • Unchanged: ${result.unchanged} files`);
      if (result.removed > 0) {
        console.log(`  • Removed:   ${result.removed} files`);
      }
      console.log(`  • Total:     ${result.total} cached files`);
    });
  } catch (err: unknown) {
    const message = err instanceof Error ? err.message : String(err);
    outputError(message, 'SYNC_ERROR', options);
  }
}