e498367e2f
- Moves twenty-cli content into twenty-sdk - add a new twenty-sdk:0.1.0 version - this new twenty-sdk exports a cli command called 'twenty' (like twenty-cli before) - deprecates twenty-cli - simplify app init command base-project - use `twenty-sdk:0.1.0` in base project - move the "twenty-sdk/application" barrel to "twenty-sdk" - add `create-twenty-app` package <img width="1512" height="919" alt="image" src="https://github.com/user-attachments/assets/007bef45-4e71-419a-9213-cebed376adbf" /> <img width="1506" height="929" alt="image" src="https://github.com/user-attachments/assets/3de2fec6-1624-4923-ae13-f4e1cf165eb5" />
64 lines
1.8 KiB
TypeScript
64 lines
1.8 KiB
TypeScript
import chalk from 'chalk';
|
|
import { CURRENT_EXECUTION_DIRECTORY } from '../constants/current-execution-directory';
|
|
import { ApiService } from '../services/api.service';
|
|
import { GenerateService } from '../services/generate.service';
|
|
import { type ApiResponse } from '../types/config.types';
|
|
import { loadManifest } from '../utils/load-manifest';
|
|
|
|
export class AppSyncCommand {
|
|
private apiService = new ApiService();
|
|
private generateService = new GenerateService();
|
|
|
|
async execute(
|
|
appPath: string = CURRENT_EXECUTION_DIRECTORY,
|
|
): Promise<ApiResponse<any>> {
|
|
try {
|
|
console.log(chalk.blue('🚀 Syncing Twenty Application'));
|
|
console.log(chalk.gray(`📁 App Path: ${appPath}`));
|
|
console.log('');
|
|
|
|
return await this.synchronize({ appPath });
|
|
} catch (error) {
|
|
console.error(
|
|
chalk.red('Sync failed:'),
|
|
error instanceof Error ? error.message : error,
|
|
);
|
|
throw error;
|
|
}
|
|
}
|
|
|
|
private async synchronize({ appPath }: { appPath: string }) {
|
|
const { manifest, packageJson, yarnLock, shouldGenerate } =
|
|
await loadManifest(appPath);
|
|
|
|
let serverlessSyncResult = await this.apiService.syncApplication({
|
|
manifest,
|
|
packageJson,
|
|
yarnLock,
|
|
});
|
|
|
|
if (shouldGenerate) {
|
|
await this.generateService.generateClient(appPath);
|
|
|
|
const { manifest: manifestWithClient } = await loadManifest(appPath);
|
|
|
|
serverlessSyncResult = await this.apiService.syncApplication({
|
|
manifest: manifestWithClient,
|
|
packageJson,
|
|
yarnLock,
|
|
});
|
|
}
|
|
|
|
if (serverlessSyncResult.success === false) {
|
|
console.error(
|
|
chalk.red('❌ Serverless functions Sync failed:'),
|
|
serverlessSyncResult.error,
|
|
);
|
|
} else {
|
|
console.log(chalk.green('✅ Serverless functions synced successfully'));
|
|
}
|
|
|
|
return serverlessSyncResult;
|
|
}
|
|
}
|