@jakubmazanec/carson 1.3.0-unstable.d6c542d → 1.3.0
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/build/commands/create-project/CreateProject.js +4 -4
- package/build/commands/create-project/CreateProject.js.map +2 -2
- package/build/commands/create-project/runCreateProject.js.map +2 -2
- package/build/commands/create-workspace/CreateWorkspace.js +4 -4
- package/build/commands/create-workspace/CreateWorkspace.js.map +2 -2
- package/build/commands/create-workspace/runCreateWorkspace.js.map +2 -2
- package/build/commands/internals.d.ts +1 -1
- package/build/commands/internals.js +0 -1
- package/build/commands/internals.js.map +2 -2
- package/build/commands/update-workspace/UpdateWorkspace.js +3 -3
- package/build/commands/update-workspace/UpdateWorkspace.js.map +2 -2
- package/build/commands/update-workspace/runUpdateWorkspace.js.map +2 -2
- package/build/commands/update-workspace/updateWorkspaceCommand.js +1 -1
- package/build/commands/update-workspace/updateWorkspaceCommand.js.map +2 -2
- package/build/template/CarsonTemplateError.d.ts +2 -2
- package/build/template/CarsonTemplateError.js +2 -1
- package/build/template/CarsonTemplateError.js.map +2 -2
- package/build/template/applyTemplateRenders.js +7 -7
- package/build/template/applyTemplateRenders.js.map +2 -2
- package/build/template/internals/TemplateRenderSnapshot.d.ts +3 -16
- package/build/template/internals/TemplateRenderSnapshot.js +1 -4
- package/build/template/internals/TemplateRenderSnapshot.js.map +2 -2
- package/build/template/internals/TemplateRenderSnapshots.d.ts +3 -16
- package/build/template/internals/createUsingTemplateRender.d.ts +1 -2
- package/build/template/internals/createUsingTemplateRender.js.map +2 -2
- package/build/template/internals/deleteUsingTemplateRenderSnapshot.d.ts +5 -0
- package/build/template/internals/deleteUsingTemplateRenderSnapshot.js +24 -0
- package/build/template/internals/deleteUsingTemplateRenderSnapshot.js.map +7 -0
- package/build/template/internals/insertUsingTemplateRender.d.ts +1 -2
- package/build/template/internals/insertUsingTemplateRender.js.map +2 -2
- package/build/template/internals/loadTemplateRenderSnapshots.d.ts +1 -4
- package/build/template/internals/mergeUsingTemplateRender.d.ts +1 -2
- package/build/template/internals/mergeUsingTemplateRender.js.map +2 -2
- package/build/template/internals/overwriteUsingTemplateRender.d.ts +1 -2
- package/build/template/internals/overwriteUsingTemplateRender.js.map +2 -2
- package/build/template/internals/saveTemplateRenderSnapshots.js +40 -3
- package/build/template/internals/saveTemplateRenderSnapshots.js.map +2 -2
- package/build/template/internals/simplify.d.ts +4 -0
- package/build/template/internals/simplify.js +20 -0
- package/build/template/internals/simplify.js.map +7 -0
- package/build/template/internals/uninsertUsingTemplateRenderSnapshot.d.ts +2 -0
- package/build/template/internals/{uninsertUsingTemplateRender.js → uninsertUsingTemplateRenderSnapshot.js} +7 -16
- package/build/template/internals/uninsertUsingTemplateRenderSnapshot.js.map +7 -0
- package/build/template/internals/unmergeUsingTemplateRenderSnapshot.d.ts +2 -0
- package/build/template/internals/{unmergeUsingTemplateRender.js → unmergeUsingTemplateRenderSnapshot.js} +9 -15
- package/build/template/internals/unmergeUsingTemplateRenderSnapshot.js.map +7 -0
- package/build/template/internals.d.ts +4 -3
- package/build/template/internals.js +4 -3
- package/build/template/internals.js.map +2 -2
- package/build/template.d.ts +3 -3
- package/build/template.js +0 -3
- package/build/template.js.map +2 -2
- package/build/workspace.d.ts +13 -13
- package/build/workspace.js +0 -13
- package/build/workspace.js.map +2 -2
- package/package.json +32 -32
- package/source/commands/create-project/CreateProject.tsx +4 -4
- package/source/commands/create-project/runCreateProject.ts +1 -1
- package/source/commands/create-workspace/CreateWorkspace.tsx +4 -4
- package/source/commands/create-workspace/runCreateWorkspace.ts +1 -1
- package/source/commands/internals.ts +1 -1
- package/source/commands/update-workspace/UpdateWorkspace.tsx +3 -3
- package/source/commands/update-workspace/runUpdateWorkspace.ts +1 -1
- package/source/commands/update-workspace/updateWorkspaceCommand.tsx +1 -1
- package/source/template/CarsonTemplateError.ts +1 -0
- package/source/template/applyTemplateRenders.ts +7 -7
- package/source/template/internals/TemplateRenderSnapshot.ts +1 -6
- package/source/template/internals/createUsingTemplateRender.ts +1 -5
- package/source/template/internals/{deleteUsingTemplateRender.ts → deleteUsingTemplateRenderSnapshot.ts} +9 -5
- package/source/template/internals/insertUsingTemplateRender.ts +1 -5
- package/source/template/internals/mergeUsingTemplateRender.ts +1 -5
- package/source/template/internals/overwriteUsingTemplateRender.ts +1 -2
- package/source/template/internals/saveTemplateRenderSnapshots.ts +49 -3
- package/source/template/internals/simplify.ts +30 -0
- package/source/template/internals/{uninsertUsingTemplateRender.ts → uninsertUsingTemplateRenderSnapshot.ts} +7 -17
- package/source/template/internals/{unmergeUsingTemplateRender.ts → unmergeUsingTemplateRenderSnapshot.ts} +10 -16
- package/source/template/internals.ts +4 -3
- package/source/template.ts +3 -3
- package/source/workspace.ts +13 -13
- package/build/template/internals/deleteUsingTemplateRender.d.ts +0 -6
- package/build/template/internals/deleteUsingTemplateRender.js +0 -20
- package/build/template/internals/deleteUsingTemplateRender.js.map +0 -7
- package/build/template/internals/uninsertUsingTemplateRender.d.ts +0 -3
- package/build/template/internals/uninsertUsingTemplateRender.js.map +0 -7
- package/build/template/internals/unmergeUsingTemplateRender.d.ts +0 -3
- package/build/template/internals/unmergeUsingTemplateRender.js.map +0 -7
|
@@ -95,17 +95,17 @@ export function CreateProject({ args, workspace }) {
|
|
|
95
95
|
choices: possiblePaths
|
|
96
96
|
}
|
|
97
97
|
},
|
|
98
|
-
values: createProjectInputResult,
|
|
99
98
|
marginTop: 1,
|
|
99
|
+
values: createProjectInputResult,
|
|
100
100
|
onChange: setCreateProjectInputResult,
|
|
101
101
|
onComplete: setCreateProjectInputResult
|
|
102
102
|
}
|
|
103
103
|
),
|
|
104
|
-
status === "in-progress" || status === "finished" ? /* @__PURE__ */ jsxs(Box, {
|
|
105
|
-
/* @__PURE__ */ jsx(Header, { showSpinner: status === "in-progress",
|
|
104
|
+
status === "in-progress" || status === "finished" ? /* @__PURE__ */ jsxs(Box, { flexDirection: "column", marginTop: 1, children: [
|
|
105
|
+
/* @__PURE__ */ jsx(Header, { icon: icons.success, marginBottom: 1, showSpinner: status === "in-progress", children: /* @__PURE__ */ jsx(Text, { children: "Creating project..." }) }),
|
|
106
106
|
jobs.map((job) => /* @__PURE__ */ jsx(Text, { children: `${icons.info} ${job}` }, job))
|
|
107
107
|
] }) : null,
|
|
108
|
-
status === "finished" ? /* @__PURE__ */ jsx(Header, {
|
|
108
|
+
status === "finished" ? /* @__PURE__ */ jsx(Header, { icon: icons.success, marginTop: 1, children: /* @__PURE__ */ jsx(Text, { children: "Done." }) }) : null
|
|
109
109
|
] });
|
|
110
110
|
}
|
|
111
111
|
//# sourceMappingURL=CreateProject.js.map
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../source/commands/create-project/CreateProject.tsx"],
|
|
4
|
-
"sourcesContent": ["import {colors, type CommandArguments, Header, icons, useProgram} from '@jakubmazanec/cli';\nimport chalk from 'chalk';\nimport {Box, Text} from 'ink';\nimport path from 'node:path';\nimport {useEffect, useState} from 'react';\n\nimport {type Workspace} from '../../workspace.js';\nimport {type CommandStatus, packageNameToDirectory} from '../internals.js';\nimport {type createProjectCommand} from './createProjectCommand.js';\nimport {CreateProjectInput, type CreateProjectInputResult} from './CreateProjectInput.js';\nimport {runCreateProject} from './runCreateProject.js';\n\nconst ONLY_ONE_STAR_REGEXP = /^(?!(.*?\\*){2,}|.*? |\\*$).*?\\*.*$/;\n\nexport type CreateProjectProps = {\n args: CommandArguments<typeof createProjectCommand>;\n workspace: Workspace | Workspace<false>;\n};\n\nexport function CreateProject({args, workspace}: CreateProjectProps) {\n let [status, setStatus] = useState<CommandStatus>('not-started');\n let [subscription, setSubscription] = useState<ZenObservable.Subscription | null>(null);\n let [jobs, setJobs] = useState<string[]>([]);\n let [createProjectInputResult, setCreateProjectInputResult] = useState<CreateProjectInputResult>(\n () => ({\n projectName: {value: args.options.name ?? '', isComplete: !!args.options.name},\n projectPath: {value: '', isComplete: false},\n templateId: {value: args.options.template ?? '', isComplete: !!args.options.template},\n }),\n );\n let {exit} = useProgram();\n\n useEffect(() => {\n if (Object.entries(createProjectInputResult).every(([, result]) => result.isComplete)) {\n setStatus('in-progress');\n }\n }, [createProjectInputResult]);\n\n useEffect(() => {\n if (status === 'in-progress' && !subscription) {\n let newSubscription = runCreateProject({\n projectPath: createProjectInputResult.projectPath.value,\n templateId: createProjectInputResult.templateId.value,\n projectName: createProjectInputResult.projectName.value,\n workspace,\n args,\n }).subscribe({\n next(value) {\n setJobs((previousJobs) => [...previousJobs, value]);\n },\n error(error) {\n exit(error);\n },\n complete() {\n newSubscription.unsubscribe();\n setStatus('finished');\n },\n });\n setSubscription(newSubscription);\n }\n\n return () => {\n if (subscription) {\n subscription.unsubscribe();\n }\n };\n }, [args, createProjectInputResult, exit, status, subscription, workspace]);\n\n let possiblePaths: Array<{value: string; label: string}> = [];\n\n if (createProjectInputResult.projectName.value) {\n let destinationDirectory = packageNameToDirectory(createProjectInputResult.projectName.value);\n\n if (workspace.projectGlobs) {\n possiblePaths = workspace.projectGlobs\n .filter((projectGlob) => ONLY_ONE_STAR_REGEXP.test(projectGlob))\n .map((projectGlob) => projectGlob.replace(/\\*/, destinationDirectory))\n .map((projectGlob) => path.join(workspace.path, projectGlob))\n .map((projectPath) => ({\n value: projectPath,\n label: path.relative(workspace.path, projectPath).replace('\\\\', '/'),\n }));\n\n if (!possiblePaths.length) {\n possiblePaths = workspace.projectGlobs\n .filter((projectGlob) => !ONLY_ONE_STAR_REGEXP.test(projectGlob))\n .map((projectGlob) => path.join(workspace.path, projectGlob))\n .map((projectPath) => ({\n value: projectPath,\n label: path.relative(workspace.path, projectPath).replace('\\\\', '/'),\n }));\n }\n\n if (!possiblePaths.length) {\n possiblePaths = [\n {\n value: workspace.path,\n label: workspace.path,\n },\n ];\n }\n } else {\n possiblePaths = [\n {\n value: workspace.path,\n label: workspace.path,\n },\n ];\n }\n }\n\n return (\n <Box flexDirection=\"column\">\n <Text color={colors.body}>\n {`Creating project in the workspace at ${chalk[colors.info](workspace.path)}.`}\n </Text>\n\n <CreateProjectInput\n rows={{\n projectPath: {\n choices: possiblePaths,\n },\n }}\n
|
|
5
|
-
"mappings": "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
|
|
4
|
+
"sourcesContent": ["import {colors, type CommandArguments, Header, icons, useProgram} from '@jakubmazanec/cli';\nimport chalk from 'chalk';\nimport {Box, Text} from 'ink';\nimport path from 'node:path';\nimport {useEffect, useState} from 'react';\n\nimport {type Workspace} from '../../workspace.js';\nimport {type CommandStatus, packageNameToDirectory} from '../internals.js';\nimport {type createProjectCommand} from './createProjectCommand.js';\nimport {CreateProjectInput, type CreateProjectInputResult} from './CreateProjectInput.js';\nimport {runCreateProject} from './runCreateProject.js';\n\nconst ONLY_ONE_STAR_REGEXP = /^(?!(.*?\\*){2,}|.*? |\\*$).*?\\*.*$/;\n\nexport type CreateProjectProps = {\n args: CommandArguments<typeof createProjectCommand>;\n workspace: Workspace | Workspace<false>;\n};\n\nexport function CreateProject({args, workspace}: CreateProjectProps) {\n let [status, setStatus] = useState<CommandStatus>('not-started');\n let [subscription, setSubscription] = useState<ZenObservable.Subscription | null>(null);\n let [jobs, setJobs] = useState<string[]>([]);\n let [createProjectInputResult, setCreateProjectInputResult] = useState<CreateProjectInputResult>(\n () => ({\n projectName: {value: args.options.name ?? '', isComplete: !!args.options.name},\n projectPath: {value: '', isComplete: false},\n templateId: {value: args.options.template ?? '', isComplete: !!args.options.template},\n }),\n );\n let {exit} = useProgram();\n\n useEffect(() => {\n if (Object.entries(createProjectInputResult).every(([, result]) => result.isComplete)) {\n setStatus('in-progress');\n }\n }, [createProjectInputResult]);\n\n useEffect(() => {\n if (status === 'in-progress' && !subscription) {\n let newSubscription = runCreateProject({\n projectPath: createProjectInputResult.projectPath.value,\n templateId: createProjectInputResult.templateId.value,\n projectName: createProjectInputResult.projectName.value,\n workspace,\n args,\n }).subscribe({\n next(value) {\n setJobs((previousJobs) => [...previousJobs, value]);\n },\n error(error) {\n exit(error);\n },\n complete() {\n newSubscription.unsubscribe();\n setStatus('finished');\n },\n });\n setSubscription(newSubscription);\n }\n\n return () => {\n if (subscription) {\n subscription.unsubscribe();\n }\n };\n }, [args, createProjectInputResult, exit, status, subscription, workspace]);\n\n let possiblePaths: Array<{value: string; label: string}> = [];\n\n if (createProjectInputResult.projectName.value) {\n let destinationDirectory = packageNameToDirectory(createProjectInputResult.projectName.value);\n\n if (workspace.projectGlobs) {\n possiblePaths = workspace.projectGlobs\n .filter((projectGlob) => ONLY_ONE_STAR_REGEXP.test(projectGlob))\n .map((projectGlob) => projectGlob.replace(/\\*/, destinationDirectory))\n .map((projectGlob) => path.join(workspace.path, projectGlob))\n .map((projectPath) => ({\n value: projectPath,\n label: path.relative(workspace.path, projectPath).replace('\\\\', '/'),\n }));\n\n if (!possiblePaths.length) {\n possiblePaths = workspace.projectGlobs\n .filter((projectGlob) => !ONLY_ONE_STAR_REGEXP.test(projectGlob))\n .map((projectGlob) => path.join(workspace.path, projectGlob))\n .map((projectPath) => ({\n value: projectPath,\n label: path.relative(workspace.path, projectPath).replace('\\\\', '/'),\n }));\n }\n\n if (!possiblePaths.length) {\n possiblePaths = [\n {\n value: workspace.path,\n label: workspace.path,\n },\n ];\n }\n } else {\n possiblePaths = [\n {\n value: workspace.path,\n label: workspace.path,\n },\n ];\n }\n }\n\n return (\n <Box flexDirection=\"column\">\n <Text color={colors.body}>\n {`Creating project in the workspace at ${chalk[colors.info](workspace.path)}.`}\n </Text>\n\n <CreateProjectInput\n rows={{\n projectPath: {\n choices: possiblePaths,\n },\n }}\n marginTop={1}\n values={createProjectInputResult}\n onChange={setCreateProjectInputResult}\n onComplete={setCreateProjectInputResult}\n />\n\n {status === 'in-progress' || status === 'finished' ?\n <Box flexDirection=\"column\" marginTop={1}>\n <Header icon={icons.success} marginBottom={1} showSpinner={status === 'in-progress'}>\n <Text>Creating project...</Text>\n </Header>\n\n {jobs.map((job) => (\n <Text key={job}>{`${icons.info} ${job}`}</Text>\n ))}\n </Box>\n : null}\n\n {status === 'finished' ?\n <Header icon={icons.success} marginTop={1}>\n <Text>Done.</Text>\n </Header>\n : null}\n </Box>\n );\n}\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
6
|
"names": []
|
|
7
7
|
}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../source/commands/create-project/runCreateProject.ts"],
|
|
4
|
-
"sourcesContent": ["import {type CommandArguments} from '@jakubmazanec/cli';\nimport Observable from 'zen-observable';\n\nimport {type Workspace} from '../../workspace.js';\nimport {type createProjectCommand} from './createProjectCommand.js';\n\nexport type CreateProjectOptions = {\n projectPath: string;\n projectName: string;\n templateId: string;\n workspace: Workspace | Workspace<false>;\n args: CommandArguments<typeof createProjectCommand>;\n};\n\nexport type CreateProjectStatus = string;\n\nexport function runCreateProject({\n projectPath,\n templateId,\n projectName,\n workspace,\n args,\n}: CreateProjectOptions) {\n return new Observable<CreateProjectStatus>((observer) => {\n (async () => {\n observer.next('Creating files');\n\n let project = await workspace.createProject({\n projectPath,\n projectName,\n templateId,\n args,\n });\n\n observer.next('Updating the new project');\n\n // if the project doesn't have config with a template ID, it's on purpose, but it's still needed for the next update, so we'll add it manually\n project.config.template ??= templateId;\n\n await project.update({args});\n })()\n .then(() => {\n observer.complete();\n })\n .catch((error) => {\n observer.error(error);\n });\n });\n}\n"],
|
|
5
|
-
"mappings": ";AACA,OAAO,gBAAgB;AAehB,gBAAS,iBAAiB;AAAA,EAC/B;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,GAAyB;AACvB,SAAO,IAAI,WAAgC,CAAC,aAAa;AACvD,KAAC,YAAY;AACX,eAAS,KAAK,gBAAgB;AAE9B,UAAI,UAAU,MAAM,UAAU,cAAc;AAAA,QAC1C;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MACF,CAAC;AAED,eAAS,KAAK,0BAA0B;AAGxC,cAAQ,OAAO,aAAa;AAE5B,YAAM,QAAQ,OAAO,EAAC,KAAI,CAAC;AAAA,IAC7B,GAAG,EACA,KAAK,MAAM;AACV,eAAS,SAAS;AAAA,IACpB,CAAC,EACA,MAAM,CAAC,
|
|
4
|
+
"sourcesContent": ["import {type CommandArguments} from '@jakubmazanec/cli';\nimport Observable from 'zen-observable';\n\nimport {type Workspace} from '../../workspace.js';\nimport {type createProjectCommand} from './createProjectCommand.js';\n\nexport type CreateProjectOptions = {\n projectPath: string;\n projectName: string;\n templateId: string;\n workspace: Workspace | Workspace<false>;\n args: CommandArguments<typeof createProjectCommand>;\n};\n\nexport type CreateProjectStatus = string;\n\nexport function runCreateProject({\n projectPath,\n templateId,\n projectName,\n workspace,\n args,\n}: CreateProjectOptions) {\n return new Observable<CreateProjectStatus>((observer) => {\n (async () => {\n observer.next('Creating files');\n\n let project = await workspace.createProject({\n projectPath,\n projectName,\n templateId,\n args,\n });\n\n observer.next('Updating the new project');\n\n // if the project doesn't have config with a template ID, it's on purpose, but it's still needed for the next update, so we'll add it manually\n project.config.template ??= templateId;\n\n await project.update({args});\n })()\n .then(() => {\n observer.complete();\n })\n .catch((error: unknown) => {\n observer.error(error);\n });\n });\n}\n"],
|
|
5
|
+
"mappings": ";AACA,OAAO,gBAAgB;AAehB,gBAAS,iBAAiB;AAAA,EAC/B;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,GAAyB;AACvB,SAAO,IAAI,WAAgC,CAAC,aAAa;AACvD,KAAC,YAAY;AACX,eAAS,KAAK,gBAAgB;AAE9B,UAAI,UAAU,MAAM,UAAU,cAAc;AAAA,QAC1C;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MACF,CAAC;AAED,eAAS,KAAK,0BAA0B;AAGxC,cAAQ,OAAO,aAAa;AAE5B,YAAM,QAAQ,OAAO,EAAC,KAAI,CAAC;AAAA,IAC7B,GAAG,EACA,KAAK,MAAM;AACV,eAAS,SAAS;AAAA,IACpB,CAAC,EACA,MAAM,CAAC,UAAmB;AACzB,eAAS,MAAM,KAAK;AAAA,IACtB,CAAC;AAAA,EACL,CAAC;AACH;",
|
|
6
6
|
"names": []
|
|
7
7
|
}
|
|
@@ -52,17 +52,17 @@ export function CreateWorkspace({ args }) {
|
|
|
52
52
|
/* @__PURE__ */ jsx(
|
|
53
53
|
CreateWorkspaceInput,
|
|
54
54
|
{
|
|
55
|
-
values: createWorkspaceInputResult,
|
|
56
55
|
marginTop: 1,
|
|
56
|
+
values: createWorkspaceInputResult,
|
|
57
57
|
onChange: setCreateWorkspaceInputResult,
|
|
58
58
|
onComplete: setCreateWorkspaceInputResult
|
|
59
59
|
}
|
|
60
60
|
),
|
|
61
|
-
status === "in-progress" || status === "finished" ? /* @__PURE__ */ jsxs(Box, {
|
|
62
|
-
/* @__PURE__ */ jsx(Header, { showSpinner: status === "in-progress",
|
|
61
|
+
status === "in-progress" || status === "finished" ? /* @__PURE__ */ jsxs(Box, { flexDirection: "column", marginTop: 1, children: [
|
|
62
|
+
/* @__PURE__ */ jsx(Header, { icon: icons.success, marginBottom: 1, showSpinner: status === "in-progress", children: /* @__PURE__ */ jsx(Text, { children: "Creating workspace..." }) }),
|
|
63
63
|
jobs.map((job) => /* @__PURE__ */ jsx(Text, { children: `${icons.info} ${job}` }, job))
|
|
64
64
|
] }) : null,
|
|
65
|
-
status === "finished" ? /* @__PURE__ */ jsx(Header, {
|
|
65
|
+
status === "finished" ? /* @__PURE__ */ jsx(Header, { icon: icons.success, marginTop: 1, children: /* @__PURE__ */ jsx(Text, { children: "Done." }) }) : null
|
|
66
66
|
] });
|
|
67
67
|
}
|
|
68
68
|
//# sourceMappingURL=CreateWorkspace.js.map
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../source/commands/create-workspace/CreateWorkspace.tsx"],
|
|
4
|
-
"sourcesContent": ["import {colors, type CommandArguments, Header, icons, useProgram} from '@jakubmazanec/cli';\nimport chalk from 'chalk';\nimport {Box, Text} from 'ink';\nimport path from 'node:path';\nimport {useEffect, useState} from 'react';\n\nimport {type CommandStatus} from '../internals.js';\nimport {type createWorkspaceCommand} from './createWorkspaceCommand.js';\nimport {CreateWorkspaceInput, type CreateWorkspaceInputResult} from './CreateWorkspaceInput.js';\nimport {runCreateWorkspace} from './runCreateWorkspace.js';\n\nexport type CreateWorkspaceProps = {\n args: CommandArguments<typeof createWorkspaceCommand>;\n};\n\nexport function CreateWorkspace({args}: CreateWorkspaceProps) {\n let [status, setStatus] = useState<CommandStatus>('not-started');\n let [subscription, setSubscription] = useState<ZenObservable.Subscription | null>(null);\n let [jobs, setJobs] = useState<string[]>([]);\n let [createWorkspaceInputResult, setCreateWorkspaceInputResult] =\n useState<CreateWorkspaceInputResult>(() => ({\n templateId: {value: args.options.template ?? '', isComplete: !!args.options.template},\n }));\n let {exit} = useProgram();\n let workspacePath = path.resolve(process.cwd(), args.options.path ?? '');\n\n useEffect(() => {\n if (Object.entries(createWorkspaceInputResult).every(([, result]) => result.isComplete)) {\n setStatus('in-progress');\n }\n }, [createWorkspaceInputResult]);\n\n useEffect(() => {\n if (status === 'in-progress' && !subscription) {\n let newSubscription = runCreateWorkspace({\n workspacePath,\n templateId: createWorkspaceInputResult.templateId.value,\n args,\n }).subscribe({\n next(value) {\n setJobs((previousJobs) => [...previousJobs, value]);\n },\n error(error) {\n exit(error);\n },\n complete() {\n newSubscription.unsubscribe();\n setStatus('finished');\n },\n });\n\n setSubscription(newSubscription);\n }\n\n return () => {\n if (subscription) {\n subscription.unsubscribe();\n }\n };\n }, [createWorkspaceInputResult, status, subscription, args, exit, workspacePath]);\n\n return (\n <Box flexDirection=\"column\">\n <Text>{`Creating workspace at ${chalk[colors.info](workspacePath)}.`}</Text>\n\n <CreateWorkspaceInput\n
|
|
5
|
-
"mappings": ";AA+DM,cAUE,YAVF;AA/DN,SAAQ,QAA+B,QAAQ,OAAO,kBAAiB;AACvE,OAAO,WAAW;AAClB,SAAQ,KAAK,YAAW;AACxB,OAAO,UAAU;AACjB,SAAQ,WAAW,gBAAe;AAIlC,SAAQ,4BAA4D;AACpE,SAAQ,0BAAyB;AAM1B,gBAAS,gBAAgB,EAAC,KAAI,GAAyB;AAC5D,MAAI,CAAC,QAAQ,SAAS,IAAI,SAAwB,aAAa;AAC/D,MAAI,CAAC,cAAc,eAAe,IAAI,SAA4C,IAAI;AACtF,MAAI,CAAC,MAAM,OAAO,IAAI,SAAmB,CAAC,CAAC;AAC3C,MAAI,CAAC,4BAA4B,6BAA6B,IAC5D,SAAqC,OAAO;AAAA,IAC1C,YAAY,EAAC,OAAO,KAAK,QAAQ,YAAY,IAAI,YAAY,CAAC,CAAC,KAAK,QAAQ,SAAQ;AAAA,EACtF,EAAE;AACJ,MAAI,EAAC,KAAI,IAAI,WAAW;AACxB,MAAI,gBAAgB,KAAK,QAAQ,QAAQ,IAAI,GAAG,KAAK,QAAQ,QAAQ,EAAE;AAEvE,YAAU,MAAM;AACd,QAAI,OAAO,QAAQ,0BAA0B,EAAE,MAAM,CAAC,CAAC,EAAE,MAAM,MAAM,OAAO,UAAU,GAAG;AACvF,gBAAU,aAAa;AAAA,IACzB;AAAA,EACF,GAAG,CAAC,0BAA0B,CAAC;AAE/B,YAAU,MAAM;AACd,QAAI,WAAW,iBAAiB,CAAC,cAAc;AAC7C,UAAI,kBAAkB,mBAAmB;AAAA,QACvC;AAAA,QACA,YAAY,2BAA2B,WAAW;AAAA,QAClD;AAAA,MACF,CAAC,EAAE,UAAU;AAAA,QACX,KAAK,OAAO;AACV,kBAAQ,CAAC,iBAAiB,CAAC,GAAG,cAAc,KAAK,CAAC;AAAA,QACpD;AAAA,QACA,MAAM,OAAO;AACX,eAAK,KAAK;AAAA,QACZ;AAAA,QACA,WAAW;AACT,0BAAgB,YAAY;AAC5B,oBAAU,UAAU;AAAA,QACtB;AAAA,MACF,CAAC;AAED,sBAAgB,eAAe;AAAA,IACjC;AAEA,WAAO,MAAM;AACX,UAAI,cAAc;AAChB,qBAAa,YAAY;AAAA,MAC3B;AAAA,IACF;AAAA,EACF,GAAG,CAAC,4BAA4B,QAAQ,cAAc,MAAM,MAAM,aAAa,CAAC;AAEhF,SACE,qBAAC,OAAI,eAAc,UACjB;AAAA,wBAAC,QAAM,mCAAyB,MAAM,OAAO,IAAI,EAAE,aAAa,CAAC,KAAI;AAAA,IAErE;AAAA,MAAC;AAAA;AAAA,QACC,
|
|
4
|
+
"sourcesContent": ["import {colors, type CommandArguments, Header, icons, useProgram} from '@jakubmazanec/cli';\nimport chalk from 'chalk';\nimport {Box, Text} from 'ink';\nimport path from 'node:path';\nimport {useEffect, useState} from 'react';\n\nimport {type CommandStatus} from '../internals.js';\nimport {type createWorkspaceCommand} from './createWorkspaceCommand.js';\nimport {CreateWorkspaceInput, type CreateWorkspaceInputResult} from './CreateWorkspaceInput.js';\nimport {runCreateWorkspace} from './runCreateWorkspace.js';\n\nexport type CreateWorkspaceProps = {\n args: CommandArguments<typeof createWorkspaceCommand>;\n};\n\nexport function CreateWorkspace({args}: CreateWorkspaceProps) {\n let [status, setStatus] = useState<CommandStatus>('not-started');\n let [subscription, setSubscription] = useState<ZenObservable.Subscription | null>(null);\n let [jobs, setJobs] = useState<string[]>([]);\n let [createWorkspaceInputResult, setCreateWorkspaceInputResult] =\n useState<CreateWorkspaceInputResult>(() => ({\n templateId: {value: args.options.template ?? '', isComplete: !!args.options.template},\n }));\n let {exit} = useProgram();\n let workspacePath = path.resolve(process.cwd(), args.options.path ?? '');\n\n useEffect(() => {\n if (Object.entries(createWorkspaceInputResult).every(([, result]) => result.isComplete)) {\n setStatus('in-progress');\n }\n }, [createWorkspaceInputResult]);\n\n useEffect(() => {\n if (status === 'in-progress' && !subscription) {\n let newSubscription = runCreateWorkspace({\n workspacePath,\n templateId: createWorkspaceInputResult.templateId.value,\n args,\n }).subscribe({\n next(value) {\n setJobs((previousJobs) => [...previousJobs, value]);\n },\n error(error) {\n exit(error);\n },\n complete() {\n newSubscription.unsubscribe();\n setStatus('finished');\n },\n });\n\n setSubscription(newSubscription);\n }\n\n return () => {\n if (subscription) {\n subscription.unsubscribe();\n }\n };\n }, [createWorkspaceInputResult, status, subscription, args, exit, workspacePath]);\n\n return (\n <Box flexDirection=\"column\">\n <Text>{`Creating workspace at ${chalk[colors.info](workspacePath)}.`}</Text>\n\n <CreateWorkspaceInput\n marginTop={1}\n values={createWorkspaceInputResult}\n onChange={setCreateWorkspaceInputResult}\n onComplete={setCreateWorkspaceInputResult}\n />\n\n {status === 'in-progress' || status === 'finished' ?\n <Box flexDirection=\"column\" marginTop={1}>\n <Header icon={icons.success} marginBottom={1} showSpinner={status === 'in-progress'}>\n <Text>Creating workspace...</Text>\n </Header>\n\n {jobs.map((job) => (\n <Text key={job}>{`${icons.info} ${job}`}</Text>\n ))}\n </Box>\n : null}\n\n {status === 'finished' ?\n <Header icon={icons.success} marginTop={1}>\n <Text>Done.</Text>\n </Header>\n : null}\n </Box>\n );\n}\n"],
|
|
5
|
+
"mappings": ";AA+DM,cAUE,YAVF;AA/DN,SAAQ,QAA+B,QAAQ,OAAO,kBAAiB;AACvE,OAAO,WAAW;AAClB,SAAQ,KAAK,YAAW;AACxB,OAAO,UAAU;AACjB,SAAQ,WAAW,gBAAe;AAIlC,SAAQ,4BAA4D;AACpE,SAAQ,0BAAyB;AAM1B,gBAAS,gBAAgB,EAAC,KAAI,GAAyB;AAC5D,MAAI,CAAC,QAAQ,SAAS,IAAI,SAAwB,aAAa;AAC/D,MAAI,CAAC,cAAc,eAAe,IAAI,SAA4C,IAAI;AACtF,MAAI,CAAC,MAAM,OAAO,IAAI,SAAmB,CAAC,CAAC;AAC3C,MAAI,CAAC,4BAA4B,6BAA6B,IAC5D,SAAqC,OAAO;AAAA,IAC1C,YAAY,EAAC,OAAO,KAAK,QAAQ,YAAY,IAAI,YAAY,CAAC,CAAC,KAAK,QAAQ,SAAQ;AAAA,EACtF,EAAE;AACJ,MAAI,EAAC,KAAI,IAAI,WAAW;AACxB,MAAI,gBAAgB,KAAK,QAAQ,QAAQ,IAAI,GAAG,KAAK,QAAQ,QAAQ,EAAE;AAEvE,YAAU,MAAM;AACd,QAAI,OAAO,QAAQ,0BAA0B,EAAE,MAAM,CAAC,CAAC,EAAE,MAAM,MAAM,OAAO,UAAU,GAAG;AACvF,gBAAU,aAAa;AAAA,IACzB;AAAA,EACF,GAAG,CAAC,0BAA0B,CAAC;AAE/B,YAAU,MAAM;AACd,QAAI,WAAW,iBAAiB,CAAC,cAAc;AAC7C,UAAI,kBAAkB,mBAAmB;AAAA,QACvC;AAAA,QACA,YAAY,2BAA2B,WAAW;AAAA,QAClD;AAAA,MACF,CAAC,EAAE,UAAU;AAAA,QACX,KAAK,OAAO;AACV,kBAAQ,CAAC,iBAAiB,CAAC,GAAG,cAAc,KAAK,CAAC;AAAA,QACpD;AAAA,QACA,MAAM,OAAO;AACX,eAAK,KAAK;AAAA,QACZ;AAAA,QACA,WAAW;AACT,0BAAgB,YAAY;AAC5B,oBAAU,UAAU;AAAA,QACtB;AAAA,MACF,CAAC;AAED,sBAAgB,eAAe;AAAA,IACjC;AAEA,WAAO,MAAM;AACX,UAAI,cAAc;AAChB,qBAAa,YAAY;AAAA,MAC3B;AAAA,IACF;AAAA,EACF,GAAG,CAAC,4BAA4B,QAAQ,cAAc,MAAM,MAAM,aAAa,CAAC;AAEhF,SACE,qBAAC,OAAI,eAAc,UACjB;AAAA,wBAAC,QAAM,mCAAyB,MAAM,OAAO,IAAI,EAAE,aAAa,CAAC,KAAI;AAAA,IAErE;AAAA,MAAC;AAAA;AAAA,QACC,WAAW;AAAA,QACX,QAAQ;AAAA,QACR,UAAU;AAAA,QACV,YAAY;AAAA;AAAA,IACd;AAAA,IAEC,WAAW,iBAAiB,WAAW,aACtC,qBAAC,OAAI,eAAc,UAAS,WAAW,GACrC;AAAA,0BAAC,UAAO,MAAM,MAAM,SAAS,cAAc,GAAG,aAAa,WAAW,eACpE,8BAAC,QAAK,mCAAqB,GAC7B;AAAA,MAEC,KAAK,IAAI,CAAC,QACT,oBAAC,QAAgB,aAAG,MAAM,IAAI,IAAI,GAAG,MAA1B,GAA6B,CACzC;AAAA,OACH,IACA;AAAA,IAED,WAAW,aACV,oBAAC,UAAO,MAAM,MAAM,SAAS,WAAW,GACtC,8BAAC,QAAK,mBAAK,GACb,IACA;AAAA,KACJ;AAEJ;",
|
|
6
6
|
"names": []
|
|
7
7
|
}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../source/commands/create-workspace/runCreateWorkspace.ts"],
|
|
4
|
-
"sourcesContent": ["import {type CommandArguments} from '@jakubmazanec/cli';\nimport Observable from 'zen-observable';\n\nimport {Workspace} from '../../workspace.js';\nimport {type createWorkspaceCommand} from './createWorkspaceCommand.js';\n\nexport type CreateWorkspaceOptions = {\n workspacePath: string;\n templateId: string;\n args: CommandArguments<typeof createWorkspaceCommand>;\n};\n\nexport type CreateWorkspaceStatus = string;\n\nexport function runCreateWorkspace({workspacePath, templateId, args}: CreateWorkspaceOptions) {\n return new Observable<CreateWorkspaceStatus>((observer) => {\n (async () => {\n observer.next('Creating files');\n\n let workspace = await Workspace.create({\n args,\n path: workspacePath,\n templateId,\n });\n\n observer.next('Updating the new workspace');\n\n // if the workspace doesn't have config with a template ID, it's on purpose, but it's still needed for the next update, so we'll add it manually\n workspace.config.template ??= templateId;\n\n await workspace.update({args});\n })()\n .then(() => {\n observer.complete();\n })\n .catch((error) => {\n observer.error(error);\n });\n });\n}\n"],
|
|
5
|
-
"mappings": ";AACA,OAAO,gBAAgB;AAEvB,SAAQ,iBAAgB;AAWjB,gBAAS,mBAAmB,EAAC,eAAe,YAAY,KAAI,GAA2B;AAC5F,SAAO,IAAI,WAAkC,CAAC,aAAa;AACzD,KAAC,YAAY;AACX,eAAS,KAAK,gBAAgB;AAE9B,UAAI,YAAY,MAAM,UAAU,OAAO;AAAA,QACrC;AAAA,QACA,MAAM;AAAA,QACN;AAAA,MACF,CAAC;AAED,eAAS,KAAK,4BAA4B;AAG1C,gBAAU,OAAO,aAAa;AAE9B,YAAM,UAAU,OAAO,EAAC,KAAI,CAAC;AAAA,IAC/B,GAAG,EACA,KAAK,MAAM;AACV,eAAS,SAAS;AAAA,IACpB,CAAC,EACA,MAAM,CAAC,
|
|
4
|
+
"sourcesContent": ["import {type CommandArguments} from '@jakubmazanec/cli';\nimport Observable from 'zen-observable';\n\nimport {Workspace} from '../../workspace.js';\nimport {type createWorkspaceCommand} from './createWorkspaceCommand.js';\n\nexport type CreateWorkspaceOptions = {\n workspacePath: string;\n templateId: string;\n args: CommandArguments<typeof createWorkspaceCommand>;\n};\n\nexport type CreateWorkspaceStatus = string;\n\nexport function runCreateWorkspace({workspacePath, templateId, args}: CreateWorkspaceOptions) {\n return new Observable<CreateWorkspaceStatus>((observer) => {\n (async () => {\n observer.next('Creating files');\n\n let workspace = await Workspace.create({\n args,\n path: workspacePath,\n templateId,\n });\n\n observer.next('Updating the new workspace');\n\n // if the workspace doesn't have config with a template ID, it's on purpose, but it's still needed for the next update, so we'll add it manually\n workspace.config.template ??= templateId;\n\n await workspace.update({args});\n })()\n .then(() => {\n observer.complete();\n })\n .catch((error: unknown) => {\n observer.error(error);\n });\n });\n}\n"],
|
|
5
|
+
"mappings": ";AACA,OAAO,gBAAgB;AAEvB,SAAQ,iBAAgB;AAWjB,gBAAS,mBAAmB,EAAC,eAAe,YAAY,KAAI,GAA2B;AAC5F,SAAO,IAAI,WAAkC,CAAC,aAAa;AACzD,KAAC,YAAY;AACX,eAAS,KAAK,gBAAgB;AAE9B,UAAI,YAAY,MAAM,UAAU,OAAO;AAAA,QACrC;AAAA,QACA,MAAM;AAAA,QACN;AAAA,MACF,CAAC;AAED,eAAS,KAAK,4BAA4B;AAG1C,gBAAU,OAAO,aAAa;AAE9B,YAAM,UAAU,OAAO,EAAC,KAAI,CAAC;AAAA,IAC/B,GAAG,EACA,KAAK,MAAM;AACV,eAAS,SAAS;AAAA,IACpB,CAAC,EACA,MAAM,CAAC,UAAmB;AACzB,eAAS,MAAM,KAAK;AAAA,IACtB,CAAC;AAAA,EACL,CAAC;AACH;",
|
|
6
6
|
"names": []
|
|
7
7
|
}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export * from './internals/CommandStatus.js';
|
|
1
|
+
export type * from './internals/CommandStatus.js';
|
|
2
2
|
export * from './internals/packageNameToDirectory.js';
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../source/commands/internals.ts"],
|
|
4
|
-
"sourcesContent": ["export * from './internals/CommandStatus.js';\nexport * from './internals/packageNameToDirectory.js';\n"],
|
|
5
|
-
"mappings": ";
|
|
4
|
+
"sourcesContent": ["export type * from './internals/CommandStatus.js';\nexport * from './internals/packageNameToDirectory.js';\n"],
|
|
5
|
+
"mappings": ";AACA,cAAc;",
|
|
6
6
|
"names": []
|
|
7
7
|
}
|
|
@@ -27,11 +27,11 @@ export function UpdateWorkspace({ workspace, args }) {
|
|
|
27
27
|
}, [args, exit, workspace]);
|
|
28
28
|
return /* @__PURE__ */ jsxs(Box, { flexDirection: "column", children: [
|
|
29
29
|
/* @__PURE__ */ jsx(Text, { children: `Updating workspace at ${chalk[colors.info](workspace.path)}.` }),
|
|
30
|
-
/* @__PURE__ */ jsxs(Box, {
|
|
31
|
-
/* @__PURE__ */ jsx(Header, {
|
|
30
|
+
/* @__PURE__ */ jsxs(Box, { flexDirection: "column", marginTop: 1, children: [
|
|
31
|
+
/* @__PURE__ */ jsx(Header, { icon: icons.success, marginBottom: 1, showSpinner: !isFinished, children: /* @__PURE__ */ jsx(Text, { children: "Updating workspace and projects..." }) }),
|
|
32
32
|
jobs.map((job) => /* @__PURE__ */ jsx(Text, { children: `${icons.info} ${job}` }, job))
|
|
33
33
|
] }),
|
|
34
|
-
isFinished ? /* @__PURE__ */ jsx(Header, {
|
|
34
|
+
isFinished ? /* @__PURE__ */ jsx(Header, { icon: icons.success, marginTop: 1, children: /* @__PURE__ */ jsx(Text, { children: "Done." }) }) : null
|
|
35
35
|
] });
|
|
36
36
|
}
|
|
37
37
|
//# sourceMappingURL=UpdateWorkspace.js.map
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../source/commands/update-workspace/UpdateWorkspace.tsx"],
|
|
4
|
-
"sourcesContent": ["import {colors, type CommandArguments, Header, icons, useProgram} from '@jakubmazanec/cli';\nimport chalk from 'chalk';\nimport {Box, Text} from 'ink';\nimport {useEffect, useState} from 'react';\n\nimport {type Workspace} from '../../workspace.js';\nimport {runUpdateWorkspace} from './runUpdateWorkspace.js';\nimport {type updateWorkspaceCommand} from './updateWorkspaceCommand.js';\n\nexport type UpdateWorkspaceProps = {\n args: CommandArguments<typeof updateWorkspaceCommand>;\n workspace: Workspace | Workspace<false>;\n};\n\nexport function UpdateWorkspace({workspace, args}: UpdateWorkspaceProps) {\n let [isFinished, setIsFinished] = useState(false);\n let [jobs, setJobs] = useState<string[]>([]);\n let {exit} = useProgram();\n\n useEffect(() => {\n let subscription = runUpdateWorkspace({workspace, args}).subscribe({\n next(value) {\n setJobs((previousJobs) => [...previousJobs, value]);\n },\n error(error) {\n exit(error);\n },\n complete() {\n setIsFinished(true);\n },\n });\n\n return () => {\n subscription.unsubscribe();\n };\n }, [args, exit, workspace]);\n\n return (\n <Box flexDirection=\"column\">\n <Text>{`Updating workspace at ${chalk[colors.info](workspace.path)}.`}</Text>\n\n <Box
|
|
5
|
-
"mappings": ";AAuCM,cAEA,YAFA;AAvCN,SAAQ,QAA+B,QAAQ,OAAO,kBAAiB;AACvE,OAAO,WAAW;AAClB,SAAQ,KAAK,YAAW;AACxB,SAAQ,WAAW,gBAAe;AAGlC,SAAQ,0BAAyB;AAQ1B,gBAAS,gBAAgB,EAAC,WAAW,KAAI,GAAyB;AACvE,MAAI,CAAC,YAAY,aAAa,IAAI,SAAS,KAAK;AAChD,MAAI,CAAC,MAAM,OAAO,IAAI,SAAmB,CAAC,CAAC;AAC3C,MAAI,EAAC,KAAI,IAAI,WAAW;AAExB,YAAU,MAAM;AACd,QAAI,eAAe,mBAAmB,EAAC,WAAW,KAAI,CAAC,EAAE,UAAU;AAAA,MACjE,KAAK,OAAO;AACV,gBAAQ,CAAC,iBAAiB,CAAC,GAAG,cAAc,KAAK,CAAC;AAAA,MACpD;AAAA,MACA,MAAM,OAAO;AACX,aAAK,KAAK;AAAA,MACZ;AAAA,MACA,WAAW;AACT,sBAAc,IAAI;AAAA,MACpB;AAAA,IACF,CAAC;AAED,WAAO,MAAM;AACX,mBAAa,YAAY;AAAA,IAC3B;AAAA,EACF,GAAG,CAAC,MAAM,MAAM,SAAS,CAAC;AAE1B,SACE,qBAAC,OAAI,eAAc,UACjB;AAAA,wBAAC,QAAM,mCAAyB,MAAM,OAAO,IAAI,EAAE,UAAU,IAAI,CAAC,KAAI;AAAA,IAEtE,qBAAC,OAAI,
|
|
4
|
+
"sourcesContent": ["import {colors, type CommandArguments, Header, icons, useProgram} from '@jakubmazanec/cli';\nimport chalk from 'chalk';\nimport {Box, Text} from 'ink';\nimport {useEffect, useState} from 'react';\n\nimport {type Workspace} from '../../workspace.js';\nimport {runUpdateWorkspace} from './runUpdateWorkspace.js';\nimport {type updateWorkspaceCommand} from './updateWorkspaceCommand.js';\n\nexport type UpdateWorkspaceProps = {\n args: CommandArguments<typeof updateWorkspaceCommand>;\n workspace: Workspace | Workspace<false>;\n};\n\nexport function UpdateWorkspace({workspace, args}: UpdateWorkspaceProps) {\n let [isFinished, setIsFinished] = useState(false);\n let [jobs, setJobs] = useState<string[]>([]);\n let {exit} = useProgram();\n\n useEffect(() => {\n let subscription = runUpdateWorkspace({workspace, args}).subscribe({\n next(value) {\n setJobs((previousJobs) => [...previousJobs, value]);\n },\n error(error) {\n exit(error);\n },\n complete() {\n setIsFinished(true);\n },\n });\n\n return () => {\n subscription.unsubscribe();\n };\n }, [args, exit, workspace]);\n\n return (\n <Box flexDirection=\"column\">\n <Text>{`Updating workspace at ${chalk[colors.info](workspace.path)}.`}</Text>\n\n <Box flexDirection=\"column\" marginTop={1}>\n <Header icon={icons.success} marginBottom={1} showSpinner={!isFinished}>\n <Text>Updating workspace and projects...</Text>\n </Header>\n\n {jobs.map((job) => (\n <Text key={job}>{`${icons.info} ${job}`}</Text>\n ))}\n </Box>\n\n {isFinished ?\n <Header icon={icons.success} marginTop={1}>\n <Text>Done.</Text>\n </Header>\n : null}\n </Box>\n );\n}\n"],
|
|
5
|
+
"mappings": ";AAuCM,cAEA,YAFA;AAvCN,SAAQ,QAA+B,QAAQ,OAAO,kBAAiB;AACvE,OAAO,WAAW;AAClB,SAAQ,KAAK,YAAW;AACxB,SAAQ,WAAW,gBAAe;AAGlC,SAAQ,0BAAyB;AAQ1B,gBAAS,gBAAgB,EAAC,WAAW,KAAI,GAAyB;AACvE,MAAI,CAAC,YAAY,aAAa,IAAI,SAAS,KAAK;AAChD,MAAI,CAAC,MAAM,OAAO,IAAI,SAAmB,CAAC,CAAC;AAC3C,MAAI,EAAC,KAAI,IAAI,WAAW;AAExB,YAAU,MAAM;AACd,QAAI,eAAe,mBAAmB,EAAC,WAAW,KAAI,CAAC,EAAE,UAAU;AAAA,MACjE,KAAK,OAAO;AACV,gBAAQ,CAAC,iBAAiB,CAAC,GAAG,cAAc,KAAK,CAAC;AAAA,MACpD;AAAA,MACA,MAAM,OAAO;AACX,aAAK,KAAK;AAAA,MACZ;AAAA,MACA,WAAW;AACT,sBAAc,IAAI;AAAA,MACpB;AAAA,IACF,CAAC;AAED,WAAO,MAAM;AACX,mBAAa,YAAY;AAAA,IAC3B;AAAA,EACF,GAAG,CAAC,MAAM,MAAM,SAAS,CAAC;AAE1B,SACE,qBAAC,OAAI,eAAc,UACjB;AAAA,wBAAC,QAAM,mCAAyB,MAAM,OAAO,IAAI,EAAE,UAAU,IAAI,CAAC,KAAI;AAAA,IAEtE,qBAAC,OAAI,eAAc,UAAS,WAAW,GACrC;AAAA,0BAAC,UAAO,MAAM,MAAM,SAAS,cAAc,GAAG,aAAa,CAAC,YAC1D,8BAAC,QAAK,gDAAkC,GAC1C;AAAA,MAEC,KAAK,IAAI,CAAC,QACT,oBAAC,QAAgB,aAAG,MAAM,IAAI,IAAI,GAAG,MAA1B,GAA6B,CACzC;AAAA,OACH;AAAA,IAEC,aACC,oBAAC,UAAO,MAAM,MAAM,SAAS,WAAW,GACtC,8BAAC,QAAK,mBAAK,GACb,IACA;AAAA,KACJ;AAEJ;",
|
|
6
6
|
"names": []
|
|
7
7
|
}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../source/commands/update-workspace/runUpdateWorkspace.ts"],
|
|
4
|
-
"sourcesContent": ["import {type CommandArguments} from '@jakubmazanec/cli';\nimport Observable from 'zen-observable';\n\nimport {type Workspace} from '../../workspace.js';\nimport {type updateWorkspaceCommand} from './updateWorkspaceCommand.js';\n\nexport type UpdateWorkspaceAndProjectsOptions = {\n workspace: Workspace | Workspace<false>;\n args: CommandArguments<typeof updateWorkspaceCommand>;\n};\n\nexport type UpdateWorkspaceAndProjectsStatus = string;\n\nexport function runUpdateWorkspace({workspace, args}: UpdateWorkspaceAndProjectsOptions) {\n return new Observable<UpdateWorkspaceAndProjectsStatus>((observer) => {\n (async () => {\n // update workspace\n observer.next('Updating workspace');\n\n await workspace.update({args});\n\n // update projects\n for (let project of workspace.projects) {\n observer.next(`Updating project ${project.name ?? '?'}`);\n\n await project.update({args});\n }\n })()\n .then(() => {\n observer.complete();\n })\n .catch((error) => {\n observer.error(error);\n });\n });\n}\n"],
|
|
5
|
-
"mappings": ";AACA,OAAO,gBAAgB;AAYhB,gBAAS,mBAAmB,EAAC,WAAW,KAAI,GAAsC;AACvF,SAAO,IAAI,WAA6C,CAAC,aAAa;AACpE,KAAC,YAAY;AAEX,eAAS,KAAK,oBAAoB;AAElC,YAAM,UAAU,OAAO,EAAC,KAAI,CAAC;AAG7B,eAAS,WAAW,UAAU,UAAU;AACtC,iBAAS,KAAK,oBAAoB,QAAQ,QAAQ,GAAG,EAAE;AAEvD,cAAM,QAAQ,OAAO,EAAC,KAAI,CAAC;AAAA,MAC7B;AAAA,IACF,GAAG,EACA,KAAK,MAAM;AACV,eAAS,SAAS;AAAA,IACpB,CAAC,EACA,MAAM,CAAC,
|
|
4
|
+
"sourcesContent": ["import {type CommandArguments} from '@jakubmazanec/cli';\nimport Observable from 'zen-observable';\n\nimport {type Workspace} from '../../workspace.js';\nimport {type updateWorkspaceCommand} from './updateWorkspaceCommand.js';\n\nexport type UpdateWorkspaceAndProjectsOptions = {\n workspace: Workspace | Workspace<false>;\n args: CommandArguments<typeof updateWorkspaceCommand>;\n};\n\nexport type UpdateWorkspaceAndProjectsStatus = string;\n\nexport function runUpdateWorkspace({workspace, args}: UpdateWorkspaceAndProjectsOptions) {\n return new Observable<UpdateWorkspaceAndProjectsStatus>((observer) => {\n (async () => {\n // update workspace\n observer.next('Updating workspace');\n\n await workspace.update({args});\n\n // update projects\n for (let project of workspace.projects) {\n observer.next(`Updating project ${project.name ?? '?'}`);\n\n await project.update({args});\n }\n })()\n .then(() => {\n observer.complete();\n })\n .catch((error: unknown) => {\n observer.error(error);\n });\n });\n}\n"],
|
|
5
|
+
"mappings": ";AACA,OAAO,gBAAgB;AAYhB,gBAAS,mBAAmB,EAAC,WAAW,KAAI,GAAsC;AACvF,SAAO,IAAI,WAA6C,CAAC,aAAa;AACpE,KAAC,YAAY;AAEX,eAAS,KAAK,oBAAoB;AAElC,YAAM,UAAU,OAAO,EAAC,KAAI,CAAC;AAG7B,eAAS,WAAW,UAAU,UAAU;AACtC,iBAAS,KAAK,oBAAoB,QAAQ,QAAQ,GAAG,EAAE;AAEvD,cAAM,QAAQ,OAAO,EAAC,KAAI,CAAC;AAAA,MAC7B;AAAA,IACF,GAAG,EACA,KAAK,MAAM;AACV,eAAS,SAAS;AAAA,IACpB,CAAC,EACA,MAAM,CAAC,UAAmB;AACzB,eAAS,MAAM,KAAK;AAAA,IACtB,CAAC;AAAA,EACL,CAAC;AACH;",
|
|
6
6
|
"names": []
|
|
7
7
|
}
|
|
@@ -17,7 +17,7 @@ export const updateWorkspaceCommand = new Command(
|
|
|
17
17
|
throw project.errors[0];
|
|
18
18
|
}
|
|
19
19
|
}
|
|
20
|
-
await program.renderElement(/* @__PURE__ */ jsx(UpdateWorkspace, {
|
|
20
|
+
await program.renderElement(/* @__PURE__ */ jsx(UpdateWorkspace, { args, workspace }));
|
|
21
21
|
},
|
|
22
22
|
{
|
|
23
23
|
description: "Updates files in a workspace.",
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../source/commands/update-workspace/updateWorkspaceCommand.tsx"],
|
|
4
|
-
"sourcesContent": ["import {Command} from '@jakubmazanec/cli';\nimport path from 'node:path';\n\nimport {Workspace} from '../../workspace.js';\nimport {UpdateWorkspace} from './UpdateWorkspace.js';\n\nexport const updateWorkspaceCommand = new Command(\n 'update workspace',\n async (args, program) => {\n let resolvedPath = path.resolve(process.cwd(), args.options.path ?? '');\n let workspace = await Workspace.findAndRead(resolvedPath, {throwIfNotFound: true});\n\n if (workspace.errors[0]) {\n throw workspace.errors[0];\n }\n\n for (let project of workspace.projects) {\n if (project.errors[0]) {\n throw project.errors[0];\n }\n }\n\n await program.renderElement(<UpdateWorkspace
|
|
5
|
-
"mappings": ";AAsBgC;AAtBhC,SAAQ,eAAc;AACtB,OAAO,UAAU;AAEjB,SAAQ,iBAAgB;AACxB,SAAQ,uBAAsB;AAEvB,aAAM,yBAAyB,IAAI;AAAA,EACxC;AAAA,EACA,OAAO,MAAM,YAAY;AACvB,QAAI,eAAe,KAAK,QAAQ,QAAQ,IAAI,GAAG,KAAK,QAAQ,QAAQ,EAAE;AACtE,QAAI,YAAY,MAAM,UAAU,YAAY,cAAc,EAAC,iBAAiB,KAAI,CAAC;AAEjF,QAAI,UAAU,OAAO,CAAC,GAAG;AACvB,YAAM,UAAU,OAAO,CAAC;AAAA,IAC1B;AAEA,aAAS,WAAW,UAAU,UAAU;AACtC,UAAI,QAAQ,OAAO,CAAC,GAAG;AACrB,cAAM,QAAQ,OAAO,CAAC;AAAA,MACxB;AAAA,IACF;AAEA,UAAM,QAAQ,cAAc,oBAAC,mBAAgB,WAAsB,
|
|
4
|
+
"sourcesContent": ["import {Command} from '@jakubmazanec/cli';\nimport path from 'node:path';\n\nimport {Workspace} from '../../workspace.js';\nimport {UpdateWorkspace} from './UpdateWorkspace.js';\n\nexport const updateWorkspaceCommand = new Command(\n 'update workspace',\n async (args, program) => {\n let resolvedPath = path.resolve(process.cwd(), args.options.path ?? '');\n let workspace = await Workspace.findAndRead(resolvedPath, {throwIfNotFound: true});\n\n if (workspace.errors[0]) {\n throw workspace.errors[0];\n }\n\n for (let project of workspace.projects) {\n if (project.errors[0]) {\n throw project.errors[0];\n }\n }\n\n await program.renderElement(<UpdateWorkspace args={args} workspace={workspace} />);\n },\n {\n description: 'Updates files in a workspace.',\n options: {\n path: {\n type: 'string',\n },\n },\n },\n);\n"],
|
|
5
|
+
"mappings": ";AAsBgC;AAtBhC,SAAQ,eAAc;AACtB,OAAO,UAAU;AAEjB,SAAQ,iBAAgB;AACxB,SAAQ,uBAAsB;AAEvB,aAAM,yBAAyB,IAAI;AAAA,EACxC;AAAA,EACA,OAAO,MAAM,YAAY;AACvB,QAAI,eAAe,KAAK,QAAQ,QAAQ,IAAI,GAAG,KAAK,QAAQ,QAAQ,EAAE;AACtE,QAAI,YAAY,MAAM,UAAU,YAAY,cAAc,EAAC,iBAAiB,KAAI,CAAC;AAEjF,QAAI,UAAU,OAAO,CAAC,GAAG;AACvB,YAAM,UAAU,OAAO,CAAC;AAAA,IAC1B;AAEA,aAAS,WAAW,UAAU,UAAU;AACtC,UAAI,QAAQ,OAAO,CAAC,GAAG;AACrB,cAAM,QAAQ,OAAO,CAAC;AAAA,MACxB;AAAA,IACF;AAEA,UAAM,QAAQ,cAAc,oBAAC,mBAAgB,MAAY,WAAsB,CAAE;AAAA,EACnF;AAAA,EACA;AAAA,IACE,aAAa;AAAA,IACb,SAAS;AAAA,MACP,MAAM;AAAA,QACJ,MAAM;AAAA,MACR;AAAA,IACF;AAAA,EACF;AACF;",
|
|
6
6
|
"names": []
|
|
7
7
|
}
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* A subclass of `Error` that indicates a Carson template failure.
|
|
3
3
|
*/
|
|
4
|
-
export declare const CarsonTemplateError: new (code: "INVALID_CARSON_TEMPLATE_ID" | "CARSON_TEMPLATE_NOT_FOUND" | "STRATEGY_UNSUPPORTED_EXTENSION" | "STRATEGY_MISSING_FILE", options?: import("@jakubmazanec/error").CustomErrorWithDataOptions<{
|
|
4
|
+
export declare const CarsonTemplateError: new (code: "INVALID_CARSON_TEMPLATE_ID" | "CARSON_TEMPLATE_NOT_FOUND" | "STRATEGY_UNSUPPORTED_EXTENSION" | "STRATEGY_MISSING_FILE" | "INVALID_SNAPSHOT", options?: import("@jakubmazanec/error").CustomErrorWithDataOptions<{
|
|
5
5
|
path?: string;
|
|
6
|
-
}> | undefined) => import("@jakubmazanec/error").CustomErrorWithData<"INVALID_CARSON_TEMPLATE_ID" | "CARSON_TEMPLATE_NOT_FOUND" | "STRATEGY_UNSUPPORTED_EXTENSION" | "STRATEGY_MISSING_FILE" | "UNKNOWN_ERROR", {
|
|
6
|
+
}> | undefined) => import("@jakubmazanec/error").CustomErrorWithData<"INVALID_CARSON_TEMPLATE_ID" | "CARSON_TEMPLATE_NOT_FOUND" | "STRATEGY_UNSUPPORTED_EXTENSION" | "STRATEGY_MISSING_FILE" | "INVALID_SNAPSHOT" | "UNKNOWN_ERROR", {
|
|
7
7
|
path?: string;
|
|
8
8
|
}>;
|
|
@@ -6,7 +6,8 @@ export const CarsonTemplateError = createCustomErrorWithData(
|
|
|
6
6
|
INVALID_CARSON_TEMPLATE_ID: 'Invalid Carson template ID "{0}". Carson template ID must consist of a module ID and a template name separated by a colon.',
|
|
7
7
|
CARSON_TEMPLATE_NOT_FOUND: 'Carson template "{0}" was not found in module "{1}".',
|
|
8
8
|
STRATEGY_UNSUPPORTED_EXTENSION: `Strategy "{0}" in the template file "{1}" doesn't support extension "{2}".`,
|
|
9
|
-
STRATEGY_MISSING_FILE: 'Strategy "{0}" in the template file "{1}" is missing file "{2}".'
|
|
9
|
+
STRATEGY_MISSING_FILE: 'Strategy "{0}" in the template file "{1}" is missing file "{2}".',
|
|
10
|
+
INVALID_SNAPSHOT: "Invalid Carson template render snapshot."
|
|
10
11
|
},
|
|
11
12
|
class CarsonTemplateErrorData {
|
|
12
13
|
path;
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../source/template/CarsonTemplateError.ts"],
|
|
4
|
-
"sourcesContent": ["import {createCustomErrorWithData} from '@jakubmazanec/error';\n\n/**\n * A subclass of `Error` that indicates a Carson template failure.\n */\nexport const CarsonTemplateError = createCustomErrorWithData(\n 'CarsonTemplateError',\n {\n INVALID_CARSON_TEMPLATE_ID:\n 'Invalid Carson template ID \"{0}\". Carson template ID must consist of a module ID and a template name separated by a colon.',\n CARSON_TEMPLATE_NOT_FOUND: 'Carson template \"{0}\" was not found in module \"{1}\".',\n STRATEGY_UNSUPPORTED_EXTENSION:\n 'Strategy \"{0}\" in the template file \"{1}\" doesn\\'t support extension \"{2}\".',\n STRATEGY_MISSING_FILE: 'Strategy \"{0}\" in the template file \"{1}\" is missing file \"{2}\".',\n },\n class CarsonTemplateErrorData {\n path?: string;\n },\n);\n"],
|
|
5
|
-
"mappings": ";AAAA,SAAQ,iCAAgC;AAKjC,aAAM,sBAAsB;AAAA,EACjC;AAAA,EACA;AAAA,IACE,4BACE;AAAA,IACF,2BAA2B;AAAA,IAC3B,gCACE;AAAA,IACF,uBAAuB;AAAA,
|
|
4
|
+
"sourcesContent": ["import {createCustomErrorWithData} from '@jakubmazanec/error';\n\n/**\n * A subclass of `Error` that indicates a Carson template failure.\n */\nexport const CarsonTemplateError = createCustomErrorWithData(\n 'CarsonTemplateError',\n {\n INVALID_CARSON_TEMPLATE_ID:\n 'Invalid Carson template ID \"{0}\". Carson template ID must consist of a module ID and a template name separated by a colon.',\n CARSON_TEMPLATE_NOT_FOUND: 'Carson template \"{0}\" was not found in module \"{1}\".',\n STRATEGY_UNSUPPORTED_EXTENSION:\n 'Strategy \"{0}\" in the template file \"{1}\" doesn\\'t support extension \"{2}\".',\n STRATEGY_MISSING_FILE: 'Strategy \"{0}\" in the template file \"{1}\" is missing file \"{2}\".',\n INVALID_SNAPSHOT: 'Invalid Carson template render snapshot.',\n },\n class CarsonTemplateErrorData {\n path?: string;\n },\n);\n"],
|
|
5
|
+
"mappings": ";AAAA,SAAQ,iCAAgC;AAKjC,aAAM,sBAAsB;AAAA,EACjC;AAAA,EACA;AAAA,IACE,4BACE;AAAA,IACF,2BAA2B;AAAA,IAC3B,gCACE;AAAA,IACF,uBAAuB;AAAA,IACvB,kBAAkB;AAAA,EACpB;AAAA,EACA,MAAM,wBAAwB;AAAA,IAC5B;AAAA,EACF;AACF;",
|
|
6
6
|
"names": []
|
|
7
7
|
}
|
|
@@ -6,14 +6,14 @@ import { CARSON_CONFIG_DIRECTORY } from "../constants.js";
|
|
|
6
6
|
import { CarsonTemplateError } from "./CarsonTemplateError.js";
|
|
7
7
|
import {
|
|
8
8
|
createUsingTemplateRender,
|
|
9
|
-
|
|
9
|
+
deleteUsingTemplateRenderSnapshot,
|
|
10
10
|
insertUsingTemplateRender,
|
|
11
11
|
loadTemplateRenderSnapshots,
|
|
12
12
|
mergeUsingTemplateRender,
|
|
13
13
|
overwriteUsingTemplateRender,
|
|
14
14
|
saveTemplateRenderSnapshots,
|
|
15
|
-
|
|
16
|
-
|
|
15
|
+
uninsertUsingTemplateRenderSnapshot,
|
|
16
|
+
unmergeUsingTemplateRenderSnapshot
|
|
17
17
|
} from "./internals.js";
|
|
18
18
|
export async function applyTemplateRenders({
|
|
19
19
|
templateRenders,
|
|
@@ -30,18 +30,18 @@ export async function applyTemplateRenders({
|
|
|
30
30
|
continue;
|
|
31
31
|
}
|
|
32
32
|
if (templateRenderSnapshot.attributes.strategy === "ensure") {
|
|
33
|
-
await
|
|
33
|
+
await deleteUsingTemplateRenderSnapshot(templateRenderSnapshot, targetPath, {
|
|
34
34
|
onlyDeleteWhenContentsMatch: true
|
|
35
35
|
});
|
|
36
36
|
}
|
|
37
37
|
if (templateRenderSnapshot.attributes.strategy === "overwrite") {
|
|
38
|
-
await
|
|
38
|
+
await deleteUsingTemplateRenderSnapshot(templateRenderSnapshot, targetPath);
|
|
39
39
|
}
|
|
40
40
|
if (templateRenderSnapshot.attributes.strategy === "merge") {
|
|
41
|
-
await
|
|
41
|
+
await unmergeUsingTemplateRenderSnapshot(templateRenderSnapshot, targetPath);
|
|
42
42
|
}
|
|
43
43
|
if (templateRenderSnapshot.attributes.strategy[0] === "insert") {
|
|
44
|
-
await
|
|
44
|
+
await uninsertUsingTemplateRenderSnapshot(templateRenderSnapshot, targetPath);
|
|
45
45
|
}
|
|
46
46
|
}
|
|
47
47
|
}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../source/template/applyTemplateRenders.ts"],
|
|
4
|
-
"sourcesContent": ["import fs from 'fs-extra';\nimport path from 'node:path';\nimport prettier from 'prettier';\n\nimport {CARSON_CONFIG_DIRECTORY} from '../constants.js';\nimport {CarsonTemplateError} from './CarsonTemplateError.js';\nimport {\n createUsingTemplateRender,\n
|
|
5
|
-
"mappings": ";AAAA,OAAO,QAAQ;AACf,OAAO,UAAU;AACjB,OAAO,cAAc;AAErB,SAAQ,+BAA8B;AACtC,SAAQ,2BAA0B;AAClC;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,OACK;AAaP,sBAAsB,qBAAqB;AAAA,EACzC;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,GAAgC;AAE9B,QAAM,SAAS,iBAAiB;AAGhC,MAAI,gBAAiB,MAAM,GAAG,WAAW,YAAY,GAAI;AACvD,QAAI,0BAA0B,MAAM,4BAA4B,YAAY;AAE5E,aAAS,0BAA0B,yBAAyB;AAC1D,UAAI,WACF,OAAO,uBAAuB,WAAW,aAAa,WACpD,uBAAuB,WAAW,WAClC,uBAAuB,WAAW,SAAS,CAAC;AAEhD,UAAI,iBAAiB,SAAS,QAAQ,GAAG;AACvC;AAAA,MACF;AAEA,UAAI,uBAAuB,WAAW,aAAa,UAAU;AAC3D,cAAM,
|
|
4
|
+
"sourcesContent": ["import fs from 'fs-extra';\nimport path from 'node:path';\nimport prettier from 'prettier';\n\nimport {CARSON_CONFIG_DIRECTORY} from '../constants.js';\nimport {CarsonTemplateError} from './CarsonTemplateError.js';\nimport {\n createUsingTemplateRender,\n deleteUsingTemplateRenderSnapshot,\n insertUsingTemplateRender,\n loadTemplateRenderSnapshots,\n mergeUsingTemplateRender,\n overwriteUsingTemplateRender,\n saveTemplateRenderSnapshots,\n uninsertUsingTemplateRenderSnapshot,\n unmergeUsingTemplateRenderSnapshot,\n} from './internals.js';\nimport {type TemplateRenders} from './TemplateRenders.js';\n\nexport type ApplyTemplateRendersOptions = {\n templateRenders: TemplateRenders;\n targetPath: string;\n snapshotPath?: string | undefined;\n ignoreStrategies: string[];\n};\n\n/**\n * Applies rendered Carson template to a specified path, i.e. creates and updates files based on the result of rendering each Carson template file.\n */\nexport async function applyTemplateRenders({\n templateRenders,\n targetPath,\n snapshotPath,\n ignoreStrategies,\n}: ApplyTemplateRendersOptions) {\n // we need to clear Prettier cache, because we are changing file system\n await prettier.clearConfigCache();\n\n // first, we read the existing snapshots and use them to undo previous changes\n if (snapshotPath && (await fs.pathExists(snapshotPath))) {\n let templateRenderSnapshots = await loadTemplateRenderSnapshots(snapshotPath);\n\n for (let templateRenderSnapshot of templateRenderSnapshots) {\n let strategy =\n typeof templateRenderSnapshot.attributes.strategy === 'string' ?\n templateRenderSnapshot.attributes.strategy\n : templateRenderSnapshot.attributes.strategy[0];\n\n if (ignoreStrategies.includes(strategy)) {\n continue;\n }\n\n if (templateRenderSnapshot.attributes.strategy === 'ensure') {\n await deleteUsingTemplateRenderSnapshot(templateRenderSnapshot, targetPath, {\n onlyDeleteWhenContentsMatch: true,\n });\n }\n\n if (templateRenderSnapshot.attributes.strategy === 'overwrite') {\n await deleteUsingTemplateRenderSnapshot(templateRenderSnapshot, targetPath);\n }\n\n if (templateRenderSnapshot.attributes.strategy === 'merge') {\n await unmergeUsingTemplateRenderSnapshot(templateRenderSnapshot, targetPath);\n }\n\n if (templateRenderSnapshot.attributes.strategy[0] === 'insert') {\n await uninsertUsingTemplateRenderSnapshot(templateRenderSnapshot, targetPath);\n }\n }\n }\n\n // second, we apply strategies that create files\n for (let templateRender of templateRenders) {\n let strategy =\n typeof templateRender.attributes.strategy === 'string' ?\n templateRender.attributes.strategy\n : templateRender.attributes.strategy[0];\n\n if (ignoreStrategies.includes(strategy)) {\n continue;\n }\n\n if (templateRender.attributes.strategy === 'create') {\n await createUsingTemplateRender(templateRender, targetPath);\n }\n\n if (templateRender.attributes.strategy === 'ensure') {\n let to = path.join(targetPath, templateRender.attributes.to);\n let doesToExist = await fs.pathExists(to);\n\n if (!doesToExist) {\n await createUsingTemplateRender(templateRender, targetPath);\n }\n }\n }\n\n // third, we apply strategies that change files\n for (let templateRender of templateRenders) {\n let strategy =\n typeof templateRender.attributes.strategy === 'string' ?\n templateRender.attributes.strategy\n : templateRender.attributes.strategy[0];\n\n if (ignoreStrategies.includes(strategy)) {\n continue;\n }\n\n if (templateRender.attributes.strategy === 'overwrite') {\n await overwriteUsingTemplateRender(templateRender, targetPath);\n }\n\n if (templateRender.attributes.strategy === 'merge') {\n await mergeUsingTemplateRender(templateRender, targetPath);\n }\n\n if (templateRender.attributes.strategy[0] === 'insert') {\n await insertUsingTemplateRender(templateRender, targetPath);\n }\n\n if (templateRender.attributes.strategy === 'check') {\n let to = path.join(targetPath, templateRender.attributes.to);\n let doesToExist = await fs.pathExists(to);\n\n if (!doesToExist) {\n throw new CarsonTemplateError('STRATEGY_MISSING_FILE', {\n messageParameters: [templateRender.attributes.strategy, templateRender.template.path, to],\n data: {\n path: to,\n },\n });\n }\n }\n }\n\n if (snapshotPath) {\n await fs.ensureDir(path.join(targetPath, CARSON_CONFIG_DIRECTORY));\n\n await saveTemplateRenderSnapshots(templateRenders, snapshotPath);\n }\n}\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
6
|
"names": []
|
|
7
7
|
}
|
|
@@ -14,31 +14,18 @@ export declare const templateRenderSnapshotSchema: z.ZodObject<{
|
|
|
14
14
|
strategy: "create" | "ensure" | "overwrite" | "merge" | "check" | ["insert", string];
|
|
15
15
|
to: string;
|
|
16
16
|
}>;
|
|
17
|
-
content: z.ZodString
|
|
18
|
-
template: z.ZodObject<{
|
|
19
|
-
path: z.ZodString;
|
|
20
|
-
}, "strict", z.ZodTypeAny, {
|
|
21
|
-
path: string;
|
|
22
|
-
}, {
|
|
23
|
-
path: string;
|
|
24
|
-
}>;
|
|
17
|
+
content: z.ZodOptional<z.ZodString>;
|
|
25
18
|
}, "strict", z.ZodTypeAny, {
|
|
26
|
-
template: {
|
|
27
|
-
path: string;
|
|
28
|
-
};
|
|
29
19
|
attributes: {
|
|
30
20
|
strategy: "create" | "ensure" | "overwrite" | "merge" | "check" | ["insert", string];
|
|
31
21
|
to: string;
|
|
32
22
|
};
|
|
33
|
-
content
|
|
23
|
+
content?: string | undefined;
|
|
34
24
|
}, {
|
|
35
|
-
template: {
|
|
36
|
-
path: string;
|
|
37
|
-
};
|
|
38
25
|
attributes: {
|
|
39
26
|
strategy: "create" | "ensure" | "overwrite" | "merge" | "check" | ["insert", string];
|
|
40
27
|
to: string;
|
|
41
28
|
};
|
|
42
|
-
content
|
|
29
|
+
content?: string | undefined;
|
|
43
30
|
}>;
|
|
44
31
|
export type TemplateRenderSnapshot = z.infer<typeof templateRenderSnapshotSchema>;
|
|
@@ -4,9 +4,6 @@ import { z } from "zod";
|
|
|
4
4
|
import { templateAttributesSchema } from "../TemplateAttributes.js";
|
|
5
5
|
export const templateRenderSnapshotSchema = z.object({
|
|
6
6
|
attributes: baseTemplateAttributesSchema.pick({ to: true }).merge(templateAttributesSchema),
|
|
7
|
-
content: z.string()
|
|
8
|
-
template: z.object({
|
|
9
|
-
path: z.string()
|
|
10
|
-
}).strict()
|
|
7
|
+
content: z.string().optional()
|
|
11
8
|
}).strict();
|
|
12
9
|
//# sourceMappingURL=TemplateRenderSnapshot.js.map
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../source/template/internals/TemplateRenderSnapshot.ts"],
|
|
4
|
-
"sourcesContent": ["import {templateAttributesSchema as baseTemplateAttributesSchema} from '@jakubmazanec/template';\nimport {z} from 'zod';\n\nimport {templateAttributesSchema} from '../TemplateAttributes.js';\n\nexport const templateRenderSnapshotSchema = z\n .object({\n attributes: baseTemplateAttributesSchema.pick({to: true}).merge(templateAttributesSchema),\n content: z.string()
|
|
5
|
-
"mappings": ";AAAA,SAAQ,4BAA4B,oCAAmC;AACvE,SAAQ,SAAQ;AAEhB,SAAQ,gCAA+B;AAEhC,aAAM,+BAA+B,EACzC,OAAO;AAAA,EACN,YAAY,6BAA6B,KAAK,EAAC,IAAI,KAAI,CAAC,EAAE,MAAM,wBAAwB;AAAA,EACxF,SAAS,EAAE,OAAO
|
|
4
|
+
"sourcesContent": ["import {templateAttributesSchema as baseTemplateAttributesSchema} from '@jakubmazanec/template';\nimport {z} from 'zod';\n\nimport {templateAttributesSchema} from '../TemplateAttributes.js';\n\nexport const templateRenderSnapshotSchema = z\n .object({\n attributes: baseTemplateAttributesSchema.pick({to: true}).merge(templateAttributesSchema),\n content: z.string().optional(),\n })\n .strict();\n\nexport type TemplateRenderSnapshot = z.infer<typeof templateRenderSnapshotSchema>;\n"],
|
|
5
|
+
"mappings": ";AAAA,SAAQ,4BAA4B,oCAAmC;AACvE,SAAQ,SAAQ;AAEhB,SAAQ,gCAA+B;AAEhC,aAAM,+BAA+B,EACzC,OAAO;AAAA,EACN,YAAY,6BAA6B,KAAK,EAAC,IAAI,KAAI,CAAC,EAAE,MAAM,wBAAwB;AAAA,EACxF,SAAS,EAAE,OAAO,EAAE,SAAS;AAC/B,CAAC,EACA,OAAO;",
|
|
6
6
|
"names": []
|
|
7
7
|
}
|
|
@@ -14,31 +14,18 @@ export declare const templateRenderSnapshotsSchema: z.ZodArray<z.ZodObject<{
|
|
|
14
14
|
strategy: "create" | "ensure" | "overwrite" | "merge" | "check" | ["insert", string];
|
|
15
15
|
to: string;
|
|
16
16
|
}>;
|
|
17
|
-
content: z.ZodString
|
|
18
|
-
template: z.ZodObject<{
|
|
19
|
-
path: z.ZodString;
|
|
20
|
-
}, "strict", z.ZodTypeAny, {
|
|
21
|
-
path: string;
|
|
22
|
-
}, {
|
|
23
|
-
path: string;
|
|
24
|
-
}>;
|
|
17
|
+
content: z.ZodOptional<z.ZodString>;
|
|
25
18
|
}, "strict", z.ZodTypeAny, {
|
|
26
|
-
template: {
|
|
27
|
-
path: string;
|
|
28
|
-
};
|
|
29
19
|
attributes: {
|
|
30
20
|
strategy: "create" | "ensure" | "overwrite" | "merge" | "check" | ["insert", string];
|
|
31
21
|
to: string;
|
|
32
22
|
};
|
|
33
|
-
content
|
|
23
|
+
content?: string | undefined;
|
|
34
24
|
}, {
|
|
35
|
-
template: {
|
|
36
|
-
path: string;
|
|
37
|
-
};
|
|
38
25
|
attributes: {
|
|
39
26
|
strategy: "create" | "ensure" | "overwrite" | "merge" | "check" | ["insert", string];
|
|
40
27
|
to: string;
|
|
41
28
|
};
|
|
42
|
-
content
|
|
29
|
+
content?: string | undefined;
|
|
43
30
|
}>, "many">;
|
|
44
31
|
export type TemplateRenderSnapshots = z.infer<typeof templateRenderSnapshotsSchema>;
|
|
@@ -1,3 +1,2 @@
|
|
|
1
1
|
import { type TemplateRender } from '../TemplateRender.js';
|
|
2
|
-
|
|
3
|
-
export declare function createUsingTemplateRender(templateRender: TemplateRender | TemplateRenderSnapshot, basePath: string): Promise<void>;
|
|
2
|
+
export declare function createUsingTemplateRender(templateRender: TemplateRender, basePath: string): Promise<void>;
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../source/template/internals/createUsingTemplateRender.ts"],
|
|
4
|
-
"sourcesContent": ["import {type Json} from '@jakubmazanec/zod-utils';\nimport fs from 'fs-extra';\nimport json from 'json5';\nimport path from 'node:path';\nimport yaml from 'yaml';\n\nimport {type TemplateRender} from '../TemplateRender.js';\nimport {merge} from './merge.js';\nimport {prettify} from './prettify.js';\
|
|
5
|
-
"mappings": ";AACA,OAAO,QAAQ;AACf,OAAO,UAAU;AACjB,OAAO,UAAU;AACjB,OAAO,UAAU;AAGjB,SAAQ,aAAY;AACpB,SAAQ,gBAAe;
|
|
4
|
+
"sourcesContent": ["import {type Json} from '@jakubmazanec/zod-utils';\nimport fs from 'fs-extra';\nimport json from 'json5';\nimport path from 'node:path';\nimport yaml from 'yaml';\n\nimport {type TemplateRender} from '../TemplateRender.js';\nimport {merge} from './merge.js';\nimport {prettify} from './prettify.js';\n\nexport async function createUsingTemplateRender(templateRender: TemplateRender, basePath: string) {\n let to = path.join(basePath, templateRender.attributes.to);\n let extension = path.extname(to);\n\n switch (extension) {\n case '.json': {\n if (await fs.pathExists(to)) {\n let targetFile = (await fs.readJson(to)) as Json;\n let fileToMerge = json.parse<Json>(templateRender.content);\n let newFile = JSON.stringify(merge(targetFile, fileToMerge), null, 2);\n\n await fs.writeFile(to, await prettify(newFile, to), {encoding: 'utf8'});\n } else {\n await fs.ensureDir(path.dirname(to));\n await fs.writeFile(to, await prettify(templateRender.content, to), {encoding: 'utf8'});\n }\n\n break;\n }\n\n case '.yaml': {\n if (await fs.pathExists(to)) {\n let targetFile = yaml.parse(await fs.readFile(to, {encoding: 'utf8'})) as unknown;\n let fileToMerge = yaml.parse(templateRender.content) as unknown;\n let newFile = yaml.stringify(merge(targetFile, fileToMerge));\n\n await fs.writeFile(to, await prettify(newFile, to), {encoding: 'utf8'});\n } else {\n await fs.writeFile(to, await prettify(templateRender.content, to), {encoding: 'utf8'});\n }\n\n break;\n }\n\n default: {\n await fs.ensureDir(path.dirname(to));\n await fs.writeFile(to, await prettify(templateRender.content, to), {encoding: 'utf8'});\n\n break;\n }\n }\n}\n"],
|
|
5
|
+
"mappings": ";AACA,OAAO,QAAQ;AACf,OAAO,UAAU;AACjB,OAAO,UAAU;AACjB,OAAO,UAAU;AAGjB,SAAQ,aAAY;AACpB,SAAQ,gBAAe;AAEvB,sBAAsB,0BAA0B,gBAAgC,UAAkB;AAChG,MAAI,KAAK,KAAK,KAAK,UAAU,eAAe,WAAW,EAAE;AACzD,MAAI,YAAY,KAAK,QAAQ,EAAE;AAE/B,UAAQ,WAAW;AAAA,IACjB,KAAK,SAAS;AACZ,UAAI,MAAM,GAAG,WAAW,EAAE,GAAG;AAC3B,YAAI,aAAc,MAAM,GAAG,SAAS,EAAE;AACtC,YAAI,cAAc,KAAK,MAAY,eAAe,OAAO;AACzD,YAAI,UAAU,KAAK,UAAU,MAAM,YAAY,WAAW,GAAG,MAAM,CAAC;AAEpE,cAAM,GAAG,UAAU,IAAI,MAAM,SAAS,SAAS,EAAE,GAAG,EAAC,UAAU,OAAM,CAAC;AAAA,MACxE,OAAO;AACL,cAAM,GAAG,UAAU,KAAK,QAAQ,EAAE,CAAC;AACnC,cAAM,GAAG,UAAU,IAAI,MAAM,SAAS,eAAe,SAAS,EAAE,GAAG,EAAC,UAAU,OAAM,CAAC;AAAA,MACvF;AAEA;AAAA,IACF;AAAA,IAEA,KAAK,SAAS;AACZ,UAAI,MAAM,GAAG,WAAW,EAAE,GAAG;AAC3B,YAAI,aAAa,KAAK,MAAM,MAAM,GAAG,SAAS,IAAI,EAAC,UAAU,OAAM,CAAC,CAAC;AACrE,YAAI,cAAc,KAAK,MAAM,eAAe,OAAO;AACnD,YAAI,UAAU,KAAK,UAAU,MAAM,YAAY,WAAW,CAAC;AAE3D,cAAM,GAAG,UAAU,IAAI,MAAM,SAAS,SAAS,EAAE,GAAG,EAAC,UAAU,OAAM,CAAC;AAAA,MACxE,OAAO;AACL,cAAM,GAAG,UAAU,IAAI,MAAM,SAAS,eAAe,SAAS,EAAE,GAAG,EAAC,UAAU,OAAM,CAAC;AAAA,MACvF;AAEA;AAAA,IACF;AAAA,IAEA,SAAS;AACP,YAAM,GAAG,UAAU,KAAK,QAAQ,EAAE,CAAC;AACnC,YAAM,GAAG,UAAU,IAAI,MAAM,SAAS,eAAe,SAAS,EAAE,GAAG,EAAC,UAAU,OAAM,CAAC;AAErF;AAAA,IACF;AAAA,EACF;AACF;",
|
|
6
6
|
"names": []
|
|
7
7
|
}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import { type TemplateRenderSnapshot } from './TemplateRenderSnapshot.js';
|
|
2
|
+
export type DeleteUsingTemplateRenderOptions = {
|
|
3
|
+
onlyDeleteWhenContentsMatch?: boolean;
|
|
4
|
+
};
|
|
5
|
+
export declare function deleteUsingTemplateRenderSnapshot(templateRenderSnapshot: TemplateRenderSnapshot, basePath: string, options?: DeleteUsingTemplateRenderOptions): Promise<void>;
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
import fs from "fs-extra";
|
|
3
|
+
import path from "node:path";
|
|
4
|
+
import { CarsonTemplateError } from "../CarsonTemplateError.js";
|
|
5
|
+
import { prettify } from "./prettify.js";
|
|
6
|
+
export async function deleteUsingTemplateRenderSnapshot(templateRenderSnapshot, basePath, options) {
|
|
7
|
+
let to = path.join(basePath, templateRenderSnapshot.attributes.to);
|
|
8
|
+
if (!await fs.pathExists(to)) {
|
|
9
|
+
return;
|
|
10
|
+
}
|
|
11
|
+
if (options?.onlyDeleteWhenContentsMatch) {
|
|
12
|
+
if (!templateRenderSnapshot.content) {
|
|
13
|
+
throw new CarsonTemplateError("INVALID_SNAPSHOT");
|
|
14
|
+
}
|
|
15
|
+
let existingContent = await fs.readFile(to, { encoding: "utf8" });
|
|
16
|
+
let newContent = await prettify(templateRenderSnapshot.content, to);
|
|
17
|
+
if (existingContent.trim() === newContent.trim()) {
|
|
18
|
+
await fs.rm(to);
|
|
19
|
+
}
|
|
20
|
+
return;
|
|
21
|
+
}
|
|
22
|
+
await fs.rm(to);
|
|
23
|
+
}
|
|
24
|
+
//# sourceMappingURL=deleteUsingTemplateRenderSnapshot.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../source/template/internals/deleteUsingTemplateRenderSnapshot.ts"],
|
|
4
|
+
"sourcesContent": ["import fs from 'fs-extra';\nimport path from 'node:path';\n\nimport {CarsonTemplateError} from '../CarsonTemplateError.js';\nimport {prettify} from './prettify.js';\nimport {type TemplateRenderSnapshot} from './TemplateRenderSnapshot.js';\n\nexport type DeleteUsingTemplateRenderOptions = {\n onlyDeleteWhenContentsMatch?: boolean;\n};\n\nexport async function deleteUsingTemplateRenderSnapshot(\n templateRenderSnapshot: TemplateRenderSnapshot,\n basePath: string,\n options?: DeleteUsingTemplateRenderOptions,\n) {\n let to = path.join(basePath, templateRenderSnapshot.attributes.to);\n\n if (!(await fs.pathExists(to))) {\n return;\n }\n\n if (options?.onlyDeleteWhenContentsMatch) {\n if (!templateRenderSnapshot.content) {\n throw new CarsonTemplateError('INVALID_SNAPSHOT');\n }\n\n let existingContent = await fs.readFile(to, {encoding: 'utf8'});\n let newContent = await prettify(templateRenderSnapshot.content, to);\n\n if (existingContent.trim() === newContent.trim()) {\n await fs.rm(to);\n }\n\n return;\n }\n\n await fs.rm(to);\n}\n"],
|
|
5
|
+
"mappings": ";AAAA,OAAO,QAAQ;AACf,OAAO,UAAU;AAEjB,SAAQ,2BAA0B;AAClC,SAAQ,gBAAe;AAOvB,sBAAsB,kCACpB,wBACA,UACA,SACA;AACA,MAAI,KAAK,KAAK,KAAK,UAAU,uBAAuB,WAAW,EAAE;AAEjE,MAAI,CAAE,MAAM,GAAG,WAAW,EAAE,GAAI;AAC9B;AAAA,EACF;AAEA,MAAI,SAAS,6BAA6B;AACxC,QAAI,CAAC,uBAAuB,SAAS;AACnC,YAAM,IAAI,oBAAoB,kBAAkB;AAAA,IAClD;AAEA,QAAI,kBAAkB,MAAM,GAAG,SAAS,IAAI,EAAC,UAAU,OAAM,CAAC;AAC9D,QAAI,aAAa,MAAM,SAAS,uBAAuB,SAAS,EAAE;AAElE,QAAI,gBAAgB,KAAK,MAAM,WAAW,KAAK,GAAG;AAChD,YAAM,GAAG,GAAG,EAAE;AAAA,IAChB;AAEA;AAAA,EACF;AAEA,QAAM,GAAG,GAAG,EAAE;AAChB;",
|
|
6
|
+
"names": []
|
|
7
|
+
}
|
|
@@ -1,3 +1,2 @@
|
|
|
1
1
|
import { type TemplateRender } from '../TemplateRender.js';
|
|
2
|
-
|
|
3
|
-
export declare function insertUsingTemplateRender(templateRender: TemplateRender | TemplateRenderSnapshot, basePath: string): Promise<void>;
|
|
2
|
+
export declare function insertUsingTemplateRender(templateRender: TemplateRender, basePath: string): Promise<void>;
|