@codeyam/codeyam-cli 0.1.0-staging.1 → 0.1.0-staging.8aea589
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/analyzer-template/.build-info.json +7 -7
- package/analyzer-template/log.txt +3 -3
- package/analyzer-template/packages/ai/src/lib/generateChangesEntityKeyAttributes.ts +51 -107
- package/analyzer-template/packages/ai/src/lib/generateEntityKeyAttributes.ts +36 -183
- package/analyzer-template/packages/analyze/src/lib/FileAnalyzer.ts +34 -0
- package/analyzer-template/packages/analyze/src/lib/asts/sourceFiles/getAllDeclaredEntityNodes.ts +238 -0
- package/analyzer-template/packages/analyze/src/lib/asts/sourceFiles/getDeclaredEntityNode.ts +25 -0
- package/analyzer-template/packages/analyze/src/lib/asts/sourceFiles/index.ts +2 -0
- package/analyzer-template/packages/github/dist/utils/src/lib/frameworks/getNextRoutePath.d.ts.map +1 -1
- package/analyzer-template/packages/github/dist/utils/src/lib/frameworks/getNextRoutePath.js +3 -2
- package/analyzer-template/packages/github/dist/utils/src/lib/frameworks/getNextRoutePath.js.map +1 -1
- package/analyzer-template/packages/utils/dist/utils/src/lib/frameworks/getNextRoutePath.d.ts.map +1 -1
- package/analyzer-template/packages/utils/dist/utils/src/lib/frameworks/getNextRoutePath.js +3 -2
- package/analyzer-template/packages/utils/dist/utils/src/lib/frameworks/getNextRoutePath.js.map +1 -1
- package/analyzer-template/packages/utils/src/lib/frameworks/getNextRoutePath.ts +6 -2
- package/analyzer-template/project/writeUniversalMocks.ts +6 -2
- package/background/src/lib/virtualized/project/writeUniversalMocks.js +3 -2
- package/background/src/lib/virtualized/project/writeUniversalMocks.js.map +1 -1
- package/codeyam-cli/scripts/apply-setup.js +288 -0
- package/codeyam-cli/scripts/apply-setup.js.map +1 -0
- package/codeyam-cli/scripts/extract-setup.js +130 -0
- package/codeyam-cli/scripts/extract-setup.js.map +1 -0
- package/codeyam-cli/scripts/fixtures/cal.com/universal-mocks/packages/prisma/index.js +238 -0
- package/codeyam-cli/scripts/fixtures/cal.com/universal-mocks/packages/prisma/index.js.map +1 -0
- package/codeyam-cli/src/utils/analysisRunner.js +4 -3
- package/codeyam-cli/src/utils/analysisRunner.js.map +1 -1
- package/codeyam-cli/src/utils/backgroundServer.js +25 -5
- package/codeyam-cli/src/utils/backgroundServer.js.map +1 -1
- package/codeyam-cli/src/utils/fileWatcher.js +75 -5
- package/codeyam-cli/src/utils/fileWatcher.js.map +1 -1
- package/codeyam-cli/src/utils/queue/job.js +3 -2
- package/codeyam-cli/src/utils/queue/job.js.map +1 -1
- package/codeyam-cli/src/webserver/app/lib/database.js +13 -0
- package/codeyam-cli/src/webserver/app/lib/database.js.map +1 -1
- package/codeyam-cli/src/webserver/backgroundServer.js +15 -35
- package/codeyam-cli/src/webserver/backgroundServer.js.map +1 -1
- package/codeyam-cli/src/webserver/build/client/assets/EntityTypeIcon-rqv54FUY.js +1 -0
- package/codeyam-cli/src/webserver/build/client/assets/{InteractivePreview-Dh-FldQK.js → InteractivePreview-B0oiPem-.js} +1 -1
- package/codeyam-cli/src/webserver/build/client/assets/LibraryFunctionPreview-DqXXjAJ7.js +3 -0
- package/codeyam-cli/src/webserver/build/client/assets/{LogViewer-Dp6DC845.js → LogViewer-BKKG1s2B.js} +1 -1
- package/codeyam-cli/src/webserver/build/client/assets/{SafeScreenshot-xwuhwsZH.js → SafeScreenshot-DU_jxCPD.js} +1 -1
- package/codeyam-cli/src/webserver/build/client/assets/ScenarioPreview-5DY-YIxu.js +6 -0
- package/codeyam-cli/src/webserver/build/client/assets/{ScenarioViewer-M2QuSHKC.js → ScenarioViewer-DmjXUj6m.js} +2 -2
- package/codeyam-cli/src/webserver/build/client/assets/_index-DvSrcxsk.js +1 -0
- package/codeyam-cli/src/webserver/build/client/assets/activity.(_tab)-CsaMd9mb.js +10 -0
- package/codeyam-cli/src/webserver/build/client/assets/chart-column-VXBS6qOn.js +1 -0
- package/codeyam-cli/src/webserver/build/client/assets/circle-alert-n5GUC2AS.js +1 -0
- package/codeyam-cli/src/webserver/build/client/assets/clock-DKqtX8js.js +1 -0
- package/codeyam-cli/src/webserver/build/client/assets/{components-CAx5ONX_.js → components-Dj-Ggnl2.js} +1 -1
- package/codeyam-cli/src/webserver/build/client/assets/{dev.empty-DGy3zrli.js → dev.empty-BbR3FwNc.js} +1 -1
- package/codeyam-cli/src/webserver/build/client/assets/{entity._sha._-1Z6D0fLM.js → entity._sha._-BHiWkb_W.js} +7 -7
- package/codeyam-cli/src/webserver/build/client/assets/{entity._sha_.create-scenario-ChAdTrrU.js → entity._sha_.create-scenario-L7M9Vr5z.js} +1 -1
- package/codeyam-cli/src/webserver/build/client/assets/{entity._sha_.edit._scenarioId-D9L7267w.js → entity._sha_.edit._scenarioId-C9w-q7P3.js} +1 -1
- package/codeyam-cli/src/webserver/build/client/assets/{entityVersioning-DO2gCvXv.js → entityVersioning-Bk_YB1jM.js} +1 -1
- package/codeyam-cli/src/webserver/build/client/assets/{entry.client-C6FRgjPr.js → entry.client-CdGoUs8A.js} +1 -1
- package/codeyam-cli/src/webserver/build/client/assets/file-text-B6Er7j5k.js +1 -0
- package/codeyam-cli/src/webserver/build/client/assets/files-KcDVw1FY.js +1 -0
- package/codeyam-cli/src/webserver/build/client/assets/git-B9uZ8eSJ.js +12 -0
- package/codeyam-cli/src/webserver/build/client/assets/globals-B0f88RTV.css +1 -0
- package/codeyam-cli/src/webserver/build/client/assets/loader-circle-v3c6DFp4.js +1 -0
- package/codeyam-cli/src/webserver/build/client/assets/manifest-fca08d7e.js +1 -0
- package/codeyam-cli/src/webserver/build/client/assets/root-Cf8VBqIb.js +16 -0
- package/codeyam-cli/src/webserver/build/client/assets/search-DA14wXpu.js +1 -0
- package/codeyam-cli/src/webserver/build/client/assets/settings-COJUrwGu.js +1 -0
- package/codeyam-cli/src/webserver/build/client/assets/{settings-Hbf8b7J_.js → settings-NU_ZquhK.js} +1 -1
- package/codeyam-cli/src/webserver/build/client/assets/simulations-CNaMJ-nR.js +1 -0
- package/codeyam-cli/src/webserver/build/client/assets/{useLastLogLine-BBlyqxij.js → useLastLogLine-Lumm1t01.js} +1 -1
- package/codeyam-cli/src/webserver/build/client/assets/useToast-BRShB17p.js +1 -0
- package/codeyam-cli/src/webserver/build/client/assets/zap-BvukH0eN.js +1 -0
- package/codeyam-cli/src/webserver/build/client/favicon.svg +13 -0
- package/codeyam-cli/src/webserver/build/server/assets/{index-eAULANMV.js → index-DHr4rT4u.js} +1 -1
- package/codeyam-cli/src/webserver/build/server/assets/server-build-Bi1mj14J.js +166 -0
- package/codeyam-cli/src/webserver/build/server/index.js +1 -1
- package/codeyam-cli/src/webserver/build-info.json +5 -5
- package/codeyam-cli/src/webserver/public/favicon.svg +13 -0
- package/codeyam-cli/templates/codeyam-setup-skill.md +24 -18
- package/package.json +1 -1
- package/packages/ai/src/lib/generateChangesEntityKeyAttributes.js +51 -107
- package/packages/ai/src/lib/generateChangesEntityKeyAttributes.js.map +1 -1
- package/packages/ai/src/lib/generateEntityKeyAttributes.js +36 -183
- package/packages/ai/src/lib/generateEntityKeyAttributes.js.map +1 -1
- package/packages/analyze/src/lib/FileAnalyzer.js +28 -0
- package/packages/analyze/src/lib/FileAnalyzer.js.map +1 -1
- package/packages/analyze/src/lib/asts/sourceFiles/getAllDeclaredEntityNodes.js +191 -0
- package/packages/analyze/src/lib/asts/sourceFiles/getAllDeclaredEntityNodes.js.map +1 -0
- package/packages/analyze/src/lib/asts/sourceFiles/getDeclaredEntityNode.js +16 -0
- package/packages/analyze/src/lib/asts/sourceFiles/getDeclaredEntityNode.js.map +1 -0
- package/packages/analyze/src/lib/asts/sourceFiles/index.js +2 -0
- package/packages/analyze/src/lib/asts/sourceFiles/index.js.map +1 -1
- package/packages/utils/src/lib/frameworks/getNextRoutePath.js +3 -2
- package/packages/utils/src/lib/frameworks/getNextRoutePath.js.map +1 -1
- package/codeyam-cli/src/webserver/build/client/assets/EntityTypeIcon-GqWwt5wG.js +0 -1
- package/codeyam-cli/src/webserver/build/client/assets/LibraryFunctionPreview-p0fuyqGQ.js +0 -3
- package/codeyam-cli/src/webserver/build/client/assets/ScenarioPreview-Bl2IRh55.js +0 -1
- package/codeyam-cli/src/webserver/build/client/assets/_index-CAVtep9Q.js +0 -1
- package/codeyam-cli/src/webserver/build/client/assets/activity.(_tab)-CLmzsLsT.js +0 -10
- package/codeyam-cli/src/webserver/build/client/assets/chart-column-B2I7jQx2.js +0 -1
- package/codeyam-cli/src/webserver/build/client/assets/circle-alert-GwwOAbhw.js +0 -1
- package/codeyam-cli/src/webserver/build/client/assets/createLucideIcon-CgyOwWip.js +0 -1
- package/codeyam-cli/src/webserver/build/client/assets/files-C3-cQjgv.js +0 -1
- package/codeyam-cli/src/webserver/build/client/assets/git-Dp4EB9nv.js +0 -12
- package/codeyam-cli/src/webserver/build/client/assets/globals-Da3jt49-.css +0 -1
- package/codeyam-cli/src/webserver/build/client/assets/loader-circle-DN7Vr40D.js +0 -1
- package/codeyam-cli/src/webserver/build/client/assets/manifest-172a4629.js +0 -1
- package/codeyam-cli/src/webserver/build/client/assets/root-COyVTsPq.js +0 -16
- package/codeyam-cli/src/webserver/build/client/assets/search-CvyP_1Lo.js +0 -1
- package/codeyam-cli/src/webserver/build/client/assets/settings-MZc4XdmE.js +0 -1
- package/codeyam-cli/src/webserver/build/client/assets/simulations-BMBi0VzO.js +0 -1
- package/codeyam-cli/src/webserver/build/client/assets/useToast-C_VxoXTh.js +0 -1
- package/codeyam-cli/src/webserver/build/client/assets/zap-B4gsLUZQ.js +0 -1
- package/codeyam-cli/src/webserver/build/server/assets/server-build-lutv16q5.js +0 -161
|
@@ -0,0 +1,288 @@
|
|
|
1
|
+
#!/usr/bin/env npx tsx
|
|
2
|
+
/**
|
|
3
|
+
* Apply project setup configuration from fixtures to a target project.
|
|
4
|
+
*
|
|
5
|
+
* Usage:
|
|
6
|
+
* npx tsx codeyam-cli/scripts/apply-setup.ts --project cal.com --target /path/to/target-project
|
|
7
|
+
*
|
|
8
|
+
* This script:
|
|
9
|
+
* 1. Reads setup.json from codeyam-cli/scripts/fixtures/{project}/
|
|
10
|
+
* 2. Creates/updates .codeyam/ directory structure in target
|
|
11
|
+
* 3. Writes .codeyam/config.json
|
|
12
|
+
* 4. Copies universal mock files to .codeyam/universal-mocks/
|
|
13
|
+
* 5. Creates/updates SQLite database with project metadata
|
|
14
|
+
*/
|
|
15
|
+
import * as fs from 'fs';
|
|
16
|
+
import * as path from 'path';
|
|
17
|
+
import { fileURLToPath } from 'url';
|
|
18
|
+
import { parseArgs } from 'util';
|
|
19
|
+
import { randomUUID } from 'crypto';
|
|
20
|
+
import { getSqliteDatabase, createSqliteSchema, upsertProjects, upsertBranches, loadBranches, } from "../../packages/supabase/index.js";
|
|
21
|
+
const __filename = fileURLToPath(import.meta.url);
|
|
22
|
+
const __dirname = path.dirname(__filename);
|
|
23
|
+
async function main() {
|
|
24
|
+
const { values } = parseArgs({
|
|
25
|
+
options: {
|
|
26
|
+
project: { type: 'string', short: 'p' },
|
|
27
|
+
target: { type: 'string', short: 't' },
|
|
28
|
+
},
|
|
29
|
+
});
|
|
30
|
+
const projectName = values.project;
|
|
31
|
+
const targetPath = values.target;
|
|
32
|
+
if (!projectName || !targetPath) {
|
|
33
|
+
console.error('Usage: npx tsx apply-setup.ts --project <name> --target <path>');
|
|
34
|
+
console.error(' --project, -p Name of the fixture to apply (e.g., "cal.com")');
|
|
35
|
+
console.error(' --target, -t Path to the target project');
|
|
36
|
+
process.exit(1);
|
|
37
|
+
}
|
|
38
|
+
const fixturesDir = path.join(__dirname, 'fixtures', projectName);
|
|
39
|
+
const setupJsonPath = path.join(fixturesDir, 'setup.json');
|
|
40
|
+
const fixtureMocksDir = path.join(fixturesDir, 'universal-mocks');
|
|
41
|
+
const codeyamDir = path.join(targetPath, '.codeyam');
|
|
42
|
+
const configJsonPath = path.join(codeyamDir, 'config.json');
|
|
43
|
+
const targetMocksDir = path.join(codeyamDir, 'universal-mocks');
|
|
44
|
+
const dbPath = path.join(codeyamDir, 'db.sqlite3');
|
|
45
|
+
// Validate fixture exists
|
|
46
|
+
if (!fs.existsSync(setupJsonPath)) {
|
|
47
|
+
console.error(`Error: Fixture not found at ${setupJsonPath}`);
|
|
48
|
+
console.error(`Available fixtures:`);
|
|
49
|
+
const fixtures = fs.readdirSync(path.join(__dirname, 'fixtures'));
|
|
50
|
+
for (const f of fixtures) {
|
|
51
|
+
console.error(` - ${f}`);
|
|
52
|
+
}
|
|
53
|
+
process.exit(1);
|
|
54
|
+
}
|
|
55
|
+
// Validate target exists
|
|
56
|
+
if (!fs.existsSync(targetPath)) {
|
|
57
|
+
console.error(`Error: Target path does not exist: ${targetPath}`);
|
|
58
|
+
process.exit(1);
|
|
59
|
+
}
|
|
60
|
+
console.log(`Applying fixture: ${projectName}`);
|
|
61
|
+
console.log(`Target project: ${targetPath}`);
|
|
62
|
+
// Read fixture
|
|
63
|
+
const fixture = JSON.parse(await fs.promises.readFile(setupJsonPath, 'utf-8'));
|
|
64
|
+
// Create .codeyam directory structure
|
|
65
|
+
console.log('\n1. Creating .codeyam directory structure...');
|
|
66
|
+
await fs.promises.mkdir(codeyamDir, { recursive: true });
|
|
67
|
+
await fs.promises.mkdir(path.join(codeyamDir, 'results'), {
|
|
68
|
+
recursive: true,
|
|
69
|
+
});
|
|
70
|
+
await fs.promises.mkdir(path.join(codeyamDir, 'captures'), {
|
|
71
|
+
recursive: true,
|
|
72
|
+
});
|
|
73
|
+
console.log(` Created: ${codeyamDir}`);
|
|
74
|
+
// Write config.json
|
|
75
|
+
console.log('\n2. Writing config.json...');
|
|
76
|
+
const configJson = {
|
|
77
|
+
projectSlug: fixture.projectSlug,
|
|
78
|
+
packageManager: fixture.packageManager,
|
|
79
|
+
webapps: fixture.webapps,
|
|
80
|
+
environmentVariables: [],
|
|
81
|
+
createdAt: new Date().toISOString(),
|
|
82
|
+
branchId: null, // Will be set when branch is created
|
|
83
|
+
};
|
|
84
|
+
await fs.promises.writeFile(configJsonPath, JSON.stringify(configJson, null, 2), 'utf-8');
|
|
85
|
+
console.log(` Wrote: ${configJsonPath}`);
|
|
86
|
+
// Copy universal mocks
|
|
87
|
+
console.log('\n3. Copying universal mocks...');
|
|
88
|
+
if (fs.existsSync(fixtureMocksDir)) {
|
|
89
|
+
// Remove existing mocks dir if it exists
|
|
90
|
+
if (fs.existsSync(targetMocksDir)) {
|
|
91
|
+
await fs.promises.rm(targetMocksDir, { recursive: true });
|
|
92
|
+
}
|
|
93
|
+
// Copy fixture mocks to target
|
|
94
|
+
await fs.promises.cp(fixtureMocksDir, targetMocksDir, { recursive: true });
|
|
95
|
+
// Count files copied
|
|
96
|
+
const countFiles = (dir) => {
|
|
97
|
+
let count = 0;
|
|
98
|
+
const entries = fs.readdirSync(dir, { withFileTypes: true });
|
|
99
|
+
for (const entry of entries) {
|
|
100
|
+
if (entry.isDirectory()) {
|
|
101
|
+
count += countFiles(path.join(dir, entry.name));
|
|
102
|
+
}
|
|
103
|
+
else {
|
|
104
|
+
count++;
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
return count;
|
|
108
|
+
};
|
|
109
|
+
const fileCount = countFiles(targetMocksDir);
|
|
110
|
+
console.log(` Copied: ${fileCount} mock file(s)`);
|
|
111
|
+
}
|
|
112
|
+
else {
|
|
113
|
+
console.log(' No universal mocks in fixture');
|
|
114
|
+
}
|
|
115
|
+
// Read mock file contents to build full universalMocks array
|
|
116
|
+
const universalMocksWithContent = await readMocksWithContent(targetMocksDir, fixture.universalMocks);
|
|
117
|
+
// Setup SQLite database
|
|
118
|
+
console.log('\n4. Setting up SQLite database...');
|
|
119
|
+
// Set the SQLITE_PATH so getSqliteDatabase knows where to look
|
|
120
|
+
process.env.SQLITE_PATH = dbPath;
|
|
121
|
+
const db = getSqliteDatabase(dbPath);
|
|
122
|
+
try {
|
|
123
|
+
// Check if tables exist, create if not
|
|
124
|
+
const tableCheck = await db
|
|
125
|
+
.selectFrom('projects')
|
|
126
|
+
.select(db.fn.count('id').as('count'))
|
|
127
|
+
.executeTakeFirst()
|
|
128
|
+
.catch(() => { });
|
|
129
|
+
if (!tableCheck) {
|
|
130
|
+
console.log(' Creating database schema...');
|
|
131
|
+
await createSqliteSchema(db);
|
|
132
|
+
}
|
|
133
|
+
// Create/update project
|
|
134
|
+
const projectId = randomUUID();
|
|
135
|
+
const project = {
|
|
136
|
+
id: projectId,
|
|
137
|
+
name: fixture.projectSlug,
|
|
138
|
+
slug: fixture.projectSlug,
|
|
139
|
+
path: `local:${targetPath}`,
|
|
140
|
+
metadata: {
|
|
141
|
+
packageManager: fixture.packageManager,
|
|
142
|
+
webapps: fixture.webapps,
|
|
143
|
+
universalMocks: universalMocksWithContent,
|
|
144
|
+
unapprovedPaths: fixture.unapprovedPaths,
|
|
145
|
+
},
|
|
146
|
+
};
|
|
147
|
+
// Check if project already exists
|
|
148
|
+
const existingProject = await db
|
|
149
|
+
.selectFrom('projects')
|
|
150
|
+
.selectAll()
|
|
151
|
+
.where('slug', '=', fixture.projectSlug)
|
|
152
|
+
.executeTakeFirst();
|
|
153
|
+
let finalProjectId;
|
|
154
|
+
if (existingProject) {
|
|
155
|
+
// Update existing project's metadata
|
|
156
|
+
console.log(` Updating existing project: ${fixture.projectSlug}`);
|
|
157
|
+
await db
|
|
158
|
+
.updateTable('projects')
|
|
159
|
+
.set({
|
|
160
|
+
metadata: JSON.stringify(project.metadata),
|
|
161
|
+
updated_at: new Date().toISOString(),
|
|
162
|
+
})
|
|
163
|
+
.where('slug', '=', fixture.projectSlug)
|
|
164
|
+
.execute();
|
|
165
|
+
finalProjectId = existingProject.id;
|
|
166
|
+
}
|
|
167
|
+
else {
|
|
168
|
+
// Insert new project
|
|
169
|
+
console.log(` Creating new project: ${fixture.projectSlug}`);
|
|
170
|
+
await upsertProjects([project]);
|
|
171
|
+
finalProjectId = projectId;
|
|
172
|
+
}
|
|
173
|
+
// Create/update _local branch
|
|
174
|
+
console.log('\n5. Creating _local branch...');
|
|
175
|
+
const existingBranches = await loadBranches({
|
|
176
|
+
projectId: finalProjectId,
|
|
177
|
+
names: ['_local'],
|
|
178
|
+
});
|
|
179
|
+
let branchId;
|
|
180
|
+
if (existingBranches && existingBranches.length > 0) {
|
|
181
|
+
console.log(' Using existing _local branch');
|
|
182
|
+
branchId = existingBranches[0].id;
|
|
183
|
+
}
|
|
184
|
+
else {
|
|
185
|
+
console.log(' Creating new _local branch');
|
|
186
|
+
const localBranch = {
|
|
187
|
+
projectId: finalProjectId,
|
|
188
|
+
name: '_local',
|
|
189
|
+
ref: '_local',
|
|
190
|
+
primary: true,
|
|
191
|
+
activeAt: new Date().toISOString(),
|
|
192
|
+
contentChangedAt: new Date().toISOString(),
|
|
193
|
+
metadata: {
|
|
194
|
+
contributors: [
|
|
195
|
+
{
|
|
196
|
+
username: 'local-dev',
|
|
197
|
+
avatarUrl: 'https://github.com/identicons/local-dev.png',
|
|
198
|
+
},
|
|
199
|
+
],
|
|
200
|
+
commits: { total: 0, last7Days: [] },
|
|
201
|
+
timeline: [
|
|
202
|
+
{
|
|
203
|
+
title: 'Local branch created',
|
|
204
|
+
date: new Date().toISOString(),
|
|
205
|
+
authors: [
|
|
206
|
+
{
|
|
207
|
+
username: 'local-dev',
|
|
208
|
+
avatarUrl: 'https://github.com/identicons/local-dev.png',
|
|
209
|
+
},
|
|
210
|
+
],
|
|
211
|
+
sha: 'local-init',
|
|
212
|
+
},
|
|
213
|
+
],
|
|
214
|
+
},
|
|
215
|
+
};
|
|
216
|
+
const createdBranches = await upsertBranches([localBranch]);
|
|
217
|
+
if (!createdBranches || createdBranches.length === 0) {
|
|
218
|
+
throw new Error('Failed to create _local branch');
|
|
219
|
+
}
|
|
220
|
+
branchId = createdBranches[0].id;
|
|
221
|
+
}
|
|
222
|
+
// Update config.json with the branch ID
|
|
223
|
+
configJson.branchId = branchId;
|
|
224
|
+
await fs.promises.writeFile(configJsonPath, JSON.stringify(configJson, null, 2), 'utf-8');
|
|
225
|
+
console.log(` Updated config.json with branchId: ${branchId}`);
|
|
226
|
+
console.log(' Database updated successfully');
|
|
227
|
+
}
|
|
228
|
+
finally {
|
|
229
|
+
await db.destroy();
|
|
230
|
+
}
|
|
231
|
+
console.log('\nSetup complete!');
|
|
232
|
+
console.log(`\nNext steps:`);
|
|
233
|
+
console.log(` cd ${targetPath}`);
|
|
234
|
+
console.log(` codeyam start`);
|
|
235
|
+
}
|
|
236
|
+
/**
|
|
237
|
+
* Read mock files and merge content with fixture metadata
|
|
238
|
+
*/
|
|
239
|
+
async function readMocksWithContent(mocksDir, mockMetadata) {
|
|
240
|
+
if (!fs.existsSync(mocksDir)) {
|
|
241
|
+
return mockMetadata;
|
|
242
|
+
}
|
|
243
|
+
// Build a map of file contents by path
|
|
244
|
+
const fileContents = new Map();
|
|
245
|
+
const readAllFiles = async (dir, basePath = '') => {
|
|
246
|
+
const entries = await fs.promises.readdir(dir, { withFileTypes: true });
|
|
247
|
+
for (const entry of entries) {
|
|
248
|
+
const fullPath = path.join(dir, entry.name);
|
|
249
|
+
const relativePath = path.join(basePath, entry.name);
|
|
250
|
+
if (entry.isDirectory()) {
|
|
251
|
+
await readAllFiles(fullPath, relativePath);
|
|
252
|
+
}
|
|
253
|
+
else if (/\.(ts|tsx|js|jsx)$/.test(entry.name)) {
|
|
254
|
+
const content = await fs.promises.readFile(fullPath, 'utf-8');
|
|
255
|
+
// Normalize path separators
|
|
256
|
+
const normalizedPath = relativePath.replace(/\\/g, '/');
|
|
257
|
+
fileContents.set(normalizedPath, content);
|
|
258
|
+
}
|
|
259
|
+
}
|
|
260
|
+
};
|
|
261
|
+
await readAllFiles(mocksDir);
|
|
262
|
+
// Merge content into metadata
|
|
263
|
+
// For each mock, find its content by matching filePath
|
|
264
|
+
return mockMetadata.map((mock) => {
|
|
265
|
+
// The filePath in metadata might not have the full path structure
|
|
266
|
+
// Try to find matching file content
|
|
267
|
+
let content = '';
|
|
268
|
+
for (const [filePath, fileContent] of fileContents) {
|
|
269
|
+
if (filePath.endsWith(mock.filePath) ||
|
|
270
|
+
mock.filePath.endsWith(filePath)) {
|
|
271
|
+
// Extract just this entity's code from the file
|
|
272
|
+
// For now, use the full file content - the sync logic will handle extraction
|
|
273
|
+
content = fileContent;
|
|
274
|
+
break;
|
|
275
|
+
}
|
|
276
|
+
}
|
|
277
|
+
return {
|
|
278
|
+
...mock,
|
|
279
|
+
content,
|
|
280
|
+
projectId: '', // Will be set by database
|
|
281
|
+
};
|
|
282
|
+
});
|
|
283
|
+
}
|
|
284
|
+
main().catch((error) => {
|
|
285
|
+
console.error('Error:', error);
|
|
286
|
+
process.exit(1);
|
|
287
|
+
});
|
|
288
|
+
//# sourceMappingURL=apply-setup.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"apply-setup.js","sourceRoot":"","sources":["../../../scripts/apply-setup.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,130 @@
|
|
|
1
|
+
#!/usr/bin/env npx tsx
|
|
2
|
+
/**
|
|
3
|
+
* Extract project setup configuration from a .codeyam database and save as fixtures.
|
|
4
|
+
*
|
|
5
|
+
* Usage:
|
|
6
|
+
* npx tsx codeyam-cli/scripts/extract-setup.ts --project cal.com --source /path/to/cal.com
|
|
7
|
+
*
|
|
8
|
+
* This script:
|
|
9
|
+
* 1. Connects to the SQLite database at {source}/.codeyam/db.sqlite3
|
|
10
|
+
* 2. Extracts project metadata (webapps, universalMocks, etc.)
|
|
11
|
+
* 3. Writes setup.json to codeyam-cli/scripts/fixtures/{project}/
|
|
12
|
+
* 4. Copies universal mock files to fixtures/{project}/universal-mocks/
|
|
13
|
+
*/
|
|
14
|
+
import * as fs from 'fs';
|
|
15
|
+
import * as path from 'path';
|
|
16
|
+
import { fileURLToPath } from 'url';
|
|
17
|
+
import { parseArgs } from 'util';
|
|
18
|
+
import { getSqliteDatabase } from "../../packages/supabase/index.js";
|
|
19
|
+
const __filename = fileURLToPath(import.meta.url);
|
|
20
|
+
const __dirname = path.dirname(__filename);
|
|
21
|
+
async function main() {
|
|
22
|
+
const { values } = parseArgs({
|
|
23
|
+
options: {
|
|
24
|
+
project: { type: 'string', short: 'p' },
|
|
25
|
+
source: { type: 'string', short: 's' },
|
|
26
|
+
},
|
|
27
|
+
});
|
|
28
|
+
const projectName = values.project;
|
|
29
|
+
const sourcePath = values.source;
|
|
30
|
+
if (!projectName || !sourcePath) {
|
|
31
|
+
console.error('Usage: npx tsx extract-setup.ts --project <name> --source <path>');
|
|
32
|
+
console.error(' --project, -p Name for the fixture (e.g., "cal.com")');
|
|
33
|
+
console.error(' --source, -s Path to the project with .codeyam folder');
|
|
34
|
+
process.exit(1);
|
|
35
|
+
}
|
|
36
|
+
const dbPath = path.join(sourcePath, '.codeyam', 'db.sqlite3');
|
|
37
|
+
const sourceMocksDir = path.join(sourcePath, '.codeyam', 'universal-mocks');
|
|
38
|
+
const fixturesDir = path.join(__dirname, 'fixtures', projectName);
|
|
39
|
+
const targetMocksDir = path.join(fixturesDir, 'universal-mocks');
|
|
40
|
+
// Validate source exists
|
|
41
|
+
if (!fs.existsSync(dbPath)) {
|
|
42
|
+
console.error(`Error: Database not found at ${dbPath}`);
|
|
43
|
+
process.exit(1);
|
|
44
|
+
}
|
|
45
|
+
console.log(`Extracting setup from: ${sourcePath}`);
|
|
46
|
+
console.log(`Writing fixtures to: ${fixturesDir}`);
|
|
47
|
+
// Connect to SQLite
|
|
48
|
+
const db = getSqliteDatabase(dbPath);
|
|
49
|
+
try {
|
|
50
|
+
// Query project metadata
|
|
51
|
+
const project = await db
|
|
52
|
+
.selectFrom('projects')
|
|
53
|
+
.selectAll()
|
|
54
|
+
.executeTakeFirst();
|
|
55
|
+
if (!project) {
|
|
56
|
+
console.error('Error: No project found in database');
|
|
57
|
+
process.exit(1);
|
|
58
|
+
}
|
|
59
|
+
// Parse metadata (it's stored as JSON string in SQLite)
|
|
60
|
+
const metadata = typeof project.metadata === 'string'
|
|
61
|
+
? JSON.parse(project.metadata)
|
|
62
|
+
: (project.metadata ?? {});
|
|
63
|
+
// Also check configuration column (some projects use this)
|
|
64
|
+
const configuration = typeof project.configuration === 'string'
|
|
65
|
+
? JSON.parse(project.configuration)
|
|
66
|
+
: (project.configuration ?? {});
|
|
67
|
+
// Merge metadata and configuration (configuration takes precedence)
|
|
68
|
+
const mergedConfig = { ...metadata, ...configuration };
|
|
69
|
+
// Build fixture data
|
|
70
|
+
const fixture = {
|
|
71
|
+
projectSlug: project.slug,
|
|
72
|
+
packageManager: mergedConfig.packageManager ?? 'npm',
|
|
73
|
+
webapps: mergedConfig.webapps ?? [],
|
|
74
|
+
universalMocks: (mergedConfig.universalMocks ?? []).map((mock) => ({
|
|
75
|
+
// Strip content from mocks - we'll store files separately
|
|
76
|
+
filePath: mock.filePath,
|
|
77
|
+
entityName: mock.entityName,
|
|
78
|
+
nodeModule: mock.nodeModule,
|
|
79
|
+
metadata: mock.metadata,
|
|
80
|
+
})),
|
|
81
|
+
unapprovedPaths: mergedConfig.unapprovedPaths,
|
|
82
|
+
pathsToIgnore: mergedConfig.pathsToIgnore,
|
|
83
|
+
};
|
|
84
|
+
// Create fixtures directory
|
|
85
|
+
await fs.promises.mkdir(fixturesDir, { recursive: true });
|
|
86
|
+
// Write setup.json
|
|
87
|
+
const setupJsonPath = path.join(fixturesDir, 'setup.json');
|
|
88
|
+
await fs.promises.writeFile(setupJsonPath, JSON.stringify(fixture, null, 2), 'utf-8');
|
|
89
|
+
console.log(` Wrote: ${setupJsonPath}`);
|
|
90
|
+
// Copy universal mocks directory if it exists
|
|
91
|
+
if (fs.existsSync(sourceMocksDir)) {
|
|
92
|
+
// Remove existing target mocks dir if it exists
|
|
93
|
+
if (fs.existsSync(targetMocksDir)) {
|
|
94
|
+
await fs.promises.rm(targetMocksDir, { recursive: true });
|
|
95
|
+
}
|
|
96
|
+
// Copy the directory
|
|
97
|
+
await fs.promises.cp(sourceMocksDir, targetMocksDir, { recursive: true });
|
|
98
|
+
// Count files copied
|
|
99
|
+
const countFiles = (dir) => {
|
|
100
|
+
let count = 0;
|
|
101
|
+
const entries = fs.readdirSync(dir, { withFileTypes: true });
|
|
102
|
+
for (const entry of entries) {
|
|
103
|
+
if (entry.isDirectory()) {
|
|
104
|
+
count += countFiles(path.join(dir, entry.name));
|
|
105
|
+
}
|
|
106
|
+
else {
|
|
107
|
+
count++;
|
|
108
|
+
}
|
|
109
|
+
}
|
|
110
|
+
return count;
|
|
111
|
+
};
|
|
112
|
+
const fileCount = countFiles(targetMocksDir);
|
|
113
|
+
console.log(` Copied: ${fileCount} mock file(s) to ${targetMocksDir}`);
|
|
114
|
+
}
|
|
115
|
+
else {
|
|
116
|
+
console.log(' No universal-mocks directory found to copy');
|
|
117
|
+
}
|
|
118
|
+
console.log('\nExtraction complete!');
|
|
119
|
+
console.log(`\nTo commit fixtures to git:`);
|
|
120
|
+
console.log(` git add codeyam-cli/scripts/fixtures/${projectName}/`);
|
|
121
|
+
}
|
|
122
|
+
finally {
|
|
123
|
+
await db.destroy();
|
|
124
|
+
}
|
|
125
|
+
}
|
|
126
|
+
main().catch((error) => {
|
|
127
|
+
console.error('Error:', error);
|
|
128
|
+
process.exit(1);
|
|
129
|
+
});
|
|
130
|
+
//# sourceMappingURL=extract-setup.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"extract-setup.js","sourceRoot":"","sources":["../../../scripts/extract-setup.ts"],"names":[],"mappings":"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"}
|