wgc 0.89.3 → 0.90.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/dist/package.json +1 -1
- package/dist/src/commands/feature-subgraph/commands/create.js +1 -1
- package/dist/src/commands/feature-subgraph/commands/create.js.map +1 -1
- package/dist/src/commands/feature-subgraph/commands/publish.js +6 -6
- package/dist/src/commands/feature-subgraph/commands/publish.js.map +1 -1
- package/dist/src/commands/router/commands/plugin/commands/create.d.ts +4 -0
- package/dist/src/commands/router/commands/plugin/commands/create.js +53 -0
- package/dist/src/commands/router/commands/plugin/commands/create.js.map +1 -0
- package/dist/src/commands/router/commands/plugin/commands/delete.d.ts +4 -0
- package/dist/src/commands/router/commands/plugin/commands/delete.js +135 -0
- package/dist/src/commands/router/commands/plugin/commands/delete.js.map +1 -0
- package/dist/src/commands/router/commands/plugin/commands/generate.d.ts +4 -0
- package/dist/src/commands/router/commands/plugin/commands/generate.js +57 -0
- package/dist/src/commands/router/commands/plugin/commands/generate.js.map +1 -0
- package/dist/src/commands/router/commands/plugin/commands/init.js +7 -10
- package/dist/src/commands/router/commands/plugin/commands/init.js.map +1 -1
- package/dist/src/commands/router/commands/plugin/commands/publish.d.ts +4 -0
- package/dist/src/commands/router/commands/plugin/commands/publish.js +301 -0
- package/dist/src/commands/router/commands/plugin/commands/publish.js.map +1 -0
- package/dist/src/commands/router/commands/plugin/index.js +8 -0
- package/dist/src/commands/router/commands/plugin/index.js.map +1 -1
- package/dist/src/commands/router/commands/plugin/templates/plugin.d.ts +1 -0
- package/dist/src/commands/router/commands/plugin/templates/plugin.js +28 -1
- package/dist/src/commands/router/commands/plugin/templates/plugin.js.map +1 -1
- package/dist/src/commands/subgraph/commands/create.js +2 -0
- package/dist/src/commands/subgraph/commands/create.js.map +1 -1
- package/dist/src/commands/subgraph/commands/publish.js +2 -0
- package/dist/src/commands/subgraph/commands/publish.js.map +1 -1
- package/dist/src/core/config.d.ts +1 -0
- package/dist/src/core/config.js +1 -0
- package/dist/src/core/config.js.map +1 -1
- package/dist/src/core/types/types.d.ts +1 -1
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/package.json +5 -5
package/dist/package.json
CHANGED
|
@@ -14,7 +14,7 @@ export default (opts) => {
|
|
|
14
14
|
command.description('Creates a feature subgraph on the control plane.');
|
|
15
15
|
command.argument('<name>', 'The name of the feature subgraph to create.');
|
|
16
16
|
command.option('-n, --namespace [string]', 'The namespace of the feature subgraph.');
|
|
17
|
-
command.
|
|
17
|
+
command.option('-r, --routing-url <url>', 'The routing url of your feature subgraph. This is the url at which the feature subgraph will be accessible.');
|
|
18
18
|
command.option('--subscription-url [url]', 'The url used for subscriptions. If empty, it defaults to same url used for routing.');
|
|
19
19
|
command.option('--subscription-protocol <protocol>', 'The protocol to use when subscribing to the feature subgraph. The supported protocols are ws, sse, and sse_post.');
|
|
20
20
|
command.option('--websocket-subprotocol <protocol>', websocketSubprotocolDescription);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"create.js","sourceRoot":"","sources":["../../../../../src/commands/feature-subgraph/commands/create.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AACrC,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAC5C,OAAO,EAAE,cAAc,EAAE,MAAM,kDAAkD,CAAC;AAClF,OAAO,EAAE,gCAAgC,EAAE,gCAAgC,EAAE,MAAM,2BAA2B,CAAC;AAC/G,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAC7C,OAAO,GAAG,MAAM,KAAK,CAAC;AACtB,OAAO,EAAE,OAAO,EAAE,MAAM,OAAO,CAAC;AAChC,OAAO,EAAE,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"create.js","sourceRoot":"","sources":["../../../../../src/commands/feature-subgraph/commands/create.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,14 +1,14 @@
|
|
|
1
|
-
import { readFile } from 'node:fs/promises';
|
|
2
1
|
import { existsSync } from 'node:fs';
|
|
2
|
+
import { readFile } from 'node:fs/promises';
|
|
3
|
+
import { SubgraphType } from '@wundergraph/cosmo-connect/dist/platform/v1/platform_pb';
|
|
4
|
+
import { parseGraphQLSubscriptionProtocol, parseGraphQLWebsocketSubprotocol } from '@wundergraph/cosmo-shared';
|
|
3
5
|
import { Command, program } from 'commander';
|
|
4
6
|
import ora from 'ora';
|
|
5
7
|
import { resolve } from 'pathe';
|
|
6
8
|
import pc from 'picocolors';
|
|
7
|
-
import { parseGraphQLSubscriptionProtocol, parseGraphQLWebsocketSubprotocol } from '@wundergraph/cosmo-shared';
|
|
8
|
-
import { getBaseHeaders } from '../../../core/config.js';
|
|
9
|
-
import { validateSubscriptionProtocols } from '../../../utils.js';
|
|
10
9
|
import { websocketSubprotocolDescription } from '../../../constants.js';
|
|
11
10
|
import { handleCompositionResult } from '../../../handle-composition-result.js';
|
|
11
|
+
import { validateSubscriptionProtocols } from '../../../utils.js';
|
|
12
12
|
export default (opts) => {
|
|
13
13
|
const command = new Command('publish');
|
|
14
14
|
command.description("Publishes a feature subgraph on the control plane. If the feature subgraph doesn't exists, it will be created.\nIf the publication leads to composition errors, the errors will be visible in the Studio.\nThe router will continue to work with the latest valid schema.");
|
|
@@ -69,8 +69,8 @@ export default (opts) => {
|
|
|
69
69
|
websocketSubprotocol: options.websocketSubprotocol
|
|
70
70
|
? parseGraphQLWebsocketSubprotocol(options.websocketSubprotocol)
|
|
71
71
|
: undefined,
|
|
72
|
-
|
|
73
|
-
|
|
72
|
+
// passing Standard type to the backend, because the users have to use the 'wgc router plugin publish' command to publish the plugin
|
|
73
|
+
type: SubgraphType.STANDARD,
|
|
74
74
|
});
|
|
75
75
|
try {
|
|
76
76
|
handleCompositionResult({
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"publish.js","sourceRoot":"","sources":["../../../../../src/commands/feature-subgraph/commands/publish.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"publish.js","sourceRoot":"","sources":["../../../../../src/commands/feature-subgraph/commands/publish.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
import { existsSync } from 'node:fs';
|
|
2
|
+
import { readFile } from 'node:fs/promises';
|
|
3
|
+
import { EnumStatusCode } from '@wundergraph/cosmo-connect/dist/common/common_pb';
|
|
4
|
+
import { SubgraphType } from '@wundergraph/cosmo-connect/dist/platform/v1/platform_pb';
|
|
5
|
+
import { splitLabel } from '@wundergraph/cosmo-shared';
|
|
6
|
+
import { Command, program } from 'commander';
|
|
7
|
+
import ora from 'ora';
|
|
8
|
+
import { resolve } from 'pathe';
|
|
9
|
+
import pc from 'picocolors';
|
|
10
|
+
import { getBaseHeaders } from '../../../../../core/config.js';
|
|
11
|
+
export default (opts) => {
|
|
12
|
+
const command = new Command('create');
|
|
13
|
+
command.description('Creates a federated plugin subgraph on the control plane.');
|
|
14
|
+
command.argument('<name>', 'The name of the plugin subgraph to create. It is usually in the format of <org>.<service.name> and is used to uniquely identify your plugin subgraph.');
|
|
15
|
+
command.option('-n, --namespace [string]', 'The namespace of the plugin subgraph.');
|
|
16
|
+
command.option('--label [labels...]', 'The labels to apply to the subgraph. The labels are passed in the format <key>=<value> <key>=<value>.');
|
|
17
|
+
command.option('--readme <path-to-readme>', 'The markdown file which describes the subgraph.');
|
|
18
|
+
command.action(async (name, options) => {
|
|
19
|
+
var _a, _b, _c;
|
|
20
|
+
let readmeFile;
|
|
21
|
+
if (options.readme) {
|
|
22
|
+
readmeFile = resolve(options.readme);
|
|
23
|
+
if (!existsSync(readmeFile)) {
|
|
24
|
+
program.error(pc.red(pc.bold(`The readme file '${pc.bold(readmeFile)}' does not exist. Please check the path and try again.`)));
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
const spinner = ora('Plugin Subgraph is being created...').start();
|
|
28
|
+
const resp = await opts.client.platform.createFederatedSubgraph({
|
|
29
|
+
name,
|
|
30
|
+
namespace: options.namespace,
|
|
31
|
+
labels: options.label ? options.label.map((label) => splitLabel(label)) : [],
|
|
32
|
+
routingUrl: '',
|
|
33
|
+
readme: readmeFile ? await readFile(readmeFile, 'utf8') : undefined,
|
|
34
|
+
type: SubgraphType.GRPC_PLUGIN,
|
|
35
|
+
}, {
|
|
36
|
+
headers: getBaseHeaders(),
|
|
37
|
+
});
|
|
38
|
+
if (((_a = resp.response) === null || _a === void 0 ? void 0 : _a.code) === EnumStatusCode.OK) {
|
|
39
|
+
spinner.succeed('Plugin Subgraph was created successfully.');
|
|
40
|
+
}
|
|
41
|
+
else {
|
|
42
|
+
spinner.fail('Failed to create pluginsubgraph.');
|
|
43
|
+
if ((_b = resp.response) === null || _b === void 0 ? void 0 : _b.details) {
|
|
44
|
+
console.log(pc.red(pc.bold((_c = resp.response) === null || _c === void 0 ? void 0 : _c.details)));
|
|
45
|
+
}
|
|
46
|
+
process.exitCode = 1;
|
|
47
|
+
// eslint-disable-next-line no-useless-return
|
|
48
|
+
return;
|
|
49
|
+
}
|
|
50
|
+
});
|
|
51
|
+
return command;
|
|
52
|
+
};
|
|
53
|
+
//# sourceMappingURL=create.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"create.js","sourceRoot":"","sources":["../../../../../../../src/commands/router/commands/plugin/commands/create.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,135 @@
|
|
|
1
|
+
import { Command } from 'commander';
|
|
2
|
+
import pc from 'picocolors';
|
|
3
|
+
import { EnumStatusCode } from '@wundergraph/cosmo-connect/dist/common/common_pb';
|
|
4
|
+
import inquirer from 'inquirer';
|
|
5
|
+
import Table from 'cli-table3';
|
|
6
|
+
import ora from 'ora';
|
|
7
|
+
import { getBaseHeaders } from '../../../../../core/config.js';
|
|
8
|
+
export default (opts) => {
|
|
9
|
+
const command = new Command('delete');
|
|
10
|
+
command.description('Deletes a plugin subgraph on the control plane.');
|
|
11
|
+
command.argument('<name>', 'The name of the plugin subgraph to delete.');
|
|
12
|
+
command.option('-n, --namespace [string]', 'The namespace of the plugin subgraph.');
|
|
13
|
+
command.option('-f --force', 'Flag to force the deletion (skip confirmation).');
|
|
14
|
+
command.option('--suppress-warnings', 'This flag suppresses any warnings produced by composition.');
|
|
15
|
+
command.action(async (name, options) => {
|
|
16
|
+
var _a, _b, _c;
|
|
17
|
+
if (!options.force) {
|
|
18
|
+
const deletionConfirmed = await inquirer.prompt({
|
|
19
|
+
name: 'confirmDeletion',
|
|
20
|
+
type: 'confirm',
|
|
21
|
+
message: `Are you sure you want to delete the plugin subgraph "${name}"?`,
|
|
22
|
+
});
|
|
23
|
+
if (!deletionConfirmed.confirmDeletion) {
|
|
24
|
+
process.exitCode = 1;
|
|
25
|
+
return;
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
const spinner = ora(`The plugin subgraph "${name}" is being deleted...`).start();
|
|
29
|
+
const resp = await opts.client.platform.deleteFederatedSubgraph({
|
|
30
|
+
subgraphName: name,
|
|
31
|
+
namespace: options.namespace,
|
|
32
|
+
}, {
|
|
33
|
+
headers: getBaseHeaders(),
|
|
34
|
+
});
|
|
35
|
+
switch ((_a = resp.response) === null || _a === void 0 ? void 0 : _a.code) {
|
|
36
|
+
case EnumStatusCode.OK: {
|
|
37
|
+
spinner.succeed(`The plugin subgraph "${name}" was deleted successfully.`);
|
|
38
|
+
if (resp.proposalMatchMessage) {
|
|
39
|
+
console.log(pc.yellow(`Warning: Proposal match failed`));
|
|
40
|
+
console.log(pc.yellow(resp.proposalMatchMessage));
|
|
41
|
+
}
|
|
42
|
+
break;
|
|
43
|
+
}
|
|
44
|
+
case EnumStatusCode.ERR_SCHEMA_MISMATCH_WITH_APPROVED_PROPOSAL: {
|
|
45
|
+
spinner.fail(`Failed to delete plugin subgraph "${name}".`);
|
|
46
|
+
console.log(pc.red(`Error: Proposal match failed`));
|
|
47
|
+
console.log(pc.red(resp.proposalMatchMessage));
|
|
48
|
+
break;
|
|
49
|
+
}
|
|
50
|
+
case EnumStatusCode.ERR_SUBGRAPH_COMPOSITION_FAILED: {
|
|
51
|
+
spinner.fail(`The plugin subgraph "${name}" was deleted but with composition errors.`);
|
|
52
|
+
const compositionErrorsTable = new Table({
|
|
53
|
+
head: [
|
|
54
|
+
pc.bold(pc.white('FEDERATED_GRAPH_NAME')),
|
|
55
|
+
pc.bold(pc.white('NAMESPACE')),
|
|
56
|
+
pc.bold(pc.white('FEATURE_FLAG')),
|
|
57
|
+
pc.bold(pc.white('ERROR_MESSAGE')),
|
|
58
|
+
],
|
|
59
|
+
colWidths: [30, 30, 30, 120],
|
|
60
|
+
wordWrap: true,
|
|
61
|
+
});
|
|
62
|
+
console.log(pc.red(`There were composition errors when composing at least one federated graph related to the` +
|
|
63
|
+
` plugin subgraph "${name}".\nThe router will continue to work with the latest valid schema.` +
|
|
64
|
+
`\n${pc.bold('Please check the errors below:')}`));
|
|
65
|
+
for (const compositionError of resp.compositionErrors) {
|
|
66
|
+
compositionErrorsTable.push([
|
|
67
|
+
compositionError.federatedGraphName,
|
|
68
|
+
compositionError.namespace,
|
|
69
|
+
compositionError.featureFlag || '-',
|
|
70
|
+
compositionError.message,
|
|
71
|
+
]);
|
|
72
|
+
}
|
|
73
|
+
// Don't exit here with 1 because the change was still applied
|
|
74
|
+
console.log(compositionErrorsTable.toString());
|
|
75
|
+
break;
|
|
76
|
+
}
|
|
77
|
+
case EnumStatusCode.ERR_DEPLOYMENT_FAILED: {
|
|
78
|
+
spinner.warn(`The plugin subgraph "${name}" was deleted, but the updated composition could not be deployed.` +
|
|
79
|
+
`\nThis means the updated composition is not accessible to the router.` +
|
|
80
|
+
`\n${pc.bold('Please check the errors below:')}`);
|
|
81
|
+
const deploymentErrorsTable = new Table({
|
|
82
|
+
head: [
|
|
83
|
+
pc.bold(pc.white('FEDERATED_GRAPH_NAME')),
|
|
84
|
+
pc.bold(pc.white('NAMESPACE')),
|
|
85
|
+
pc.bold(pc.white('ERROR_MESSAGE')),
|
|
86
|
+
],
|
|
87
|
+
colWidths: [30, 30, 120],
|
|
88
|
+
wordWrap: true,
|
|
89
|
+
});
|
|
90
|
+
for (const deploymentError of resp.deploymentErrors) {
|
|
91
|
+
deploymentErrorsTable.push([
|
|
92
|
+
deploymentError.federatedGraphName,
|
|
93
|
+
deploymentError.namespace,
|
|
94
|
+
deploymentError.message,
|
|
95
|
+
]);
|
|
96
|
+
}
|
|
97
|
+
// Don't exit here with 1 because the change was still applied
|
|
98
|
+
console.log(deploymentErrorsTable.toString());
|
|
99
|
+
break;
|
|
100
|
+
}
|
|
101
|
+
default: {
|
|
102
|
+
spinner.fail(`Failed to delete the plugin subgraph "${name}".`);
|
|
103
|
+
if ((_b = resp.response) === null || _b === void 0 ? void 0 : _b.details) {
|
|
104
|
+
console.log(pc.red(pc.bold((_c = resp.response) === null || _c === void 0 ? void 0 : _c.details)));
|
|
105
|
+
}
|
|
106
|
+
process.exitCode = 1;
|
|
107
|
+
return;
|
|
108
|
+
}
|
|
109
|
+
}
|
|
110
|
+
if (!options.suppressWarnings && resp.compositionWarnings.length > 0) {
|
|
111
|
+
const compositionWarningsTable = new Table({
|
|
112
|
+
head: [
|
|
113
|
+
pc.bold(pc.white('FEDERATED_GRAPH_NAME')),
|
|
114
|
+
pc.bold(pc.white('NAMESPACE')),
|
|
115
|
+
pc.bold(pc.white('FEATURE_FLAG')),
|
|
116
|
+
pc.bold(pc.white('WARNING_MESSAGE')),
|
|
117
|
+
],
|
|
118
|
+
colWidths: [30, 30, 30, 120],
|
|
119
|
+
wordWrap: true,
|
|
120
|
+
});
|
|
121
|
+
console.log(pc.yellow(`The following warnings were produced while composing the federated graph:`));
|
|
122
|
+
for (const compositionWarning of resp.compositionWarnings) {
|
|
123
|
+
compositionWarningsTable.push([
|
|
124
|
+
compositionWarning.federatedGraphName,
|
|
125
|
+
compositionWarning.namespace,
|
|
126
|
+
compositionWarning.featureFlag || '-',
|
|
127
|
+
compositionWarning.message,
|
|
128
|
+
]);
|
|
129
|
+
}
|
|
130
|
+
console.log(compositionWarningsTable.toString());
|
|
131
|
+
}
|
|
132
|
+
});
|
|
133
|
+
return command;
|
|
134
|
+
};
|
|
135
|
+
//# sourceMappingURL=delete.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"delete.js","sourceRoot":"","sources":["../../../../../../../src/commands/router/commands/plugin/commands/delete.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
import path from 'node:path';
|
|
2
|
+
import { Command, program } from 'commander';
|
|
3
|
+
import Spinner from 'ora';
|
|
4
|
+
import { resolve } from 'pathe';
|
|
5
|
+
import pc from 'picocolors';
|
|
6
|
+
import { renderResultTree } from '../helper.js';
|
|
7
|
+
import { checkAndInstallTools, generateGRPCCode, generateProtoAndMapping, installGoDependencies, } from '../toolchain.js';
|
|
8
|
+
export default (opts) => {
|
|
9
|
+
const command = new Command('generate');
|
|
10
|
+
command.description('Generate proto and gRPC code for a router plugin');
|
|
11
|
+
command.argument('[directory]', 'Directory of the plugin', '.');
|
|
12
|
+
command.option('--skip-tools-installation', 'Skip tool installation', false);
|
|
13
|
+
command.option('--force-tools-installation', 'Force tools installation regardless of version check or confirmation', false);
|
|
14
|
+
command.option('--go-module-path <path>', 'Go module path to use for the plugin', 'github.com/wundergraph/cosmo/plugin');
|
|
15
|
+
command.action(async (directory, options) => {
|
|
16
|
+
const startTime = performance.now();
|
|
17
|
+
const pluginDir = resolve(directory);
|
|
18
|
+
const spinner = Spinner();
|
|
19
|
+
const pluginName = path.basename(pluginDir);
|
|
20
|
+
const goModulePath = options.goModulePath;
|
|
21
|
+
try {
|
|
22
|
+
// Check and install tools if needed
|
|
23
|
+
if (!options.skipToolsInstallation) {
|
|
24
|
+
await checkAndInstallTools(options.forceToolsInstallation);
|
|
25
|
+
}
|
|
26
|
+
// Start the generation process
|
|
27
|
+
spinner.start('Generating plugin code...');
|
|
28
|
+
// Generate proto and mapping files
|
|
29
|
+
await generateProtoAndMapping(pluginDir, goModulePath, spinner);
|
|
30
|
+
// Generate gRPC code
|
|
31
|
+
await generateGRPCCode(pluginDir, spinner);
|
|
32
|
+
// Install Go dependencies
|
|
33
|
+
await installGoDependencies(pluginDir, spinner);
|
|
34
|
+
// Calculate and format elapsed time
|
|
35
|
+
const endTime = performance.now();
|
|
36
|
+
const elapsedTimeMs = endTime - startTime;
|
|
37
|
+
const formattedTime = elapsedTimeMs > 1000 ? `${(elapsedTimeMs / 1000).toFixed(2)}s` : `${Math.round(elapsedTimeMs)}ms`;
|
|
38
|
+
renderResultTree(spinner, 'Plugin code generated successfully!', true, pluginName, {
|
|
39
|
+
output: pluginDir,
|
|
40
|
+
'go module': goModulePath,
|
|
41
|
+
time: formattedTime,
|
|
42
|
+
});
|
|
43
|
+
console.log('');
|
|
44
|
+
console.log(` Now you can modify your implementation in src/main.go, then when you're ready to publish, run ${pc.bold('wgc router plugin publish')}.`);
|
|
45
|
+
}
|
|
46
|
+
catch (error) {
|
|
47
|
+
renderResultTree(spinner, 'Plugin code generation failed!', false, pluginName, {
|
|
48
|
+
output: pluginDir,
|
|
49
|
+
'go module': goModulePath,
|
|
50
|
+
error: error.message,
|
|
51
|
+
});
|
|
52
|
+
program.error('');
|
|
53
|
+
}
|
|
54
|
+
});
|
|
55
|
+
return command;
|
|
56
|
+
};
|
|
57
|
+
//# sourceMappingURL=generate.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"generate.js","sourceRoot":"","sources":["../../../../../../../src/commands/router/commands/plugin/commands/generate.ts"],"names":[],"mappings":"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"}
|
|
@@ -16,18 +16,14 @@ export default (opts) => {
|
|
|
16
16
|
const command = new Command('init');
|
|
17
17
|
command.description('Scaffold a new gRPC router plugin');
|
|
18
18
|
command.argument('name', 'Name of the plugin');
|
|
19
|
-
command.option('-p, --project <project>', 'Project name', '
|
|
19
|
+
command.option('-p, --project <project>', 'Project name', '');
|
|
20
20
|
command.option('-d, --directory <directory>', 'Directory to create the project in', '.');
|
|
21
|
-
command.option('--only-plugin', 'Only create the plugin without a router project', false);
|
|
22
21
|
command.option('-l, --language <language>', 'Programming language to use for the plugin', 'go');
|
|
23
22
|
command.action(async (name, options) => {
|
|
24
23
|
const startTime = performance.now();
|
|
25
24
|
const cwd = process.cwd();
|
|
26
|
-
if (options.onlyPlugin) {
|
|
27
|
-
options.project = '';
|
|
28
|
-
}
|
|
29
25
|
const projectDir = resolve(cwd, options.directory, options.project);
|
|
30
|
-
const pluginDir = resolve(cwd, projectDir,
|
|
26
|
+
const pluginDir = resolve(cwd, projectDir, name);
|
|
31
27
|
const originalPluginName = name;
|
|
32
28
|
name = upperFirst(camelCase(name));
|
|
33
29
|
const serviceName = name + 'Service';
|
|
@@ -57,7 +53,7 @@ export default (opts) => {
|
|
|
57
53
|
}
|
|
58
54
|
const goModulePath = 'github.com/wundergraph/cosmo/plugin';
|
|
59
55
|
spinner.text = 'Generating mapping and proto files...';
|
|
60
|
-
if (
|
|
56
|
+
if (options.project) {
|
|
61
57
|
await writeFile(resolve(tempDir, 'README.md'), pupa(ProjectTemplates.readme, { name, originalPluginName }));
|
|
62
58
|
await writeFile(resolve(srcDir, 'schema.graphql'), pupa(PluginTemplates.schema, { name }));
|
|
63
59
|
const mapping = compileGraphQLToMapping(PluginTemplates.schema, serviceName);
|
|
@@ -80,7 +76,6 @@ export default (opts) => {
|
|
|
80
76
|
await writeFile(resolve(tempDir, '.cursor', 'rules', 'plugin-development.mdc'), pupa(PluginTemplates.cursorRules, { name, originalPluginName, pluginDir }));
|
|
81
77
|
// Create a project directory structure
|
|
82
78
|
await mkdir(projectDir, { recursive: true });
|
|
83
|
-
await mkdir(resolve(projectDir, 'plugins'), { recursive: true });
|
|
84
79
|
// Write router config to the project root
|
|
85
80
|
await writeFile(resolve(projectDir, 'config.yaml'), ProjectTemplates.routerConfig);
|
|
86
81
|
await writeFile(resolve(projectDir, 'graph.yaml'), pupa(ProjectTemplates.graphConfig, { originalPluginName }));
|
|
@@ -111,9 +106,10 @@ export default (opts) => {
|
|
|
111
106
|
await writeFile(resolve(tempDir, 'go.mod'), pupa(PluginTemplates.goMod, { modulePath: goModulePath }));
|
|
112
107
|
await writeFile(resolve(tempDir, '.gitignore'), PluginTemplates.gitignore);
|
|
113
108
|
await writeFile(resolve(tempDir, '.cursorignore'), PluginTemplates.cursorIgnore);
|
|
114
|
-
await mkdir(
|
|
109
|
+
await mkdir(projectDir, { recursive: true });
|
|
115
110
|
await rename(tempDir, pluginDir);
|
|
116
111
|
}
|
|
112
|
+
await writeFile(resolve(pluginDir, 'Dockerfile'), pupa(PluginTemplates.dockerfile, { originalPluginName }));
|
|
117
113
|
const endTime = performance.now();
|
|
118
114
|
const elapsedTimeMs = endTime - startTime;
|
|
119
115
|
const formattedTime = elapsedTimeMs > 1000 ? `${(elapsedTimeMs / 1000).toFixed(2)}s` : `${Math.round(elapsedTimeMs)}ms`;
|
|
@@ -123,7 +119,8 @@ export default (opts) => {
|
|
|
123
119
|
location: pluginDir,
|
|
124
120
|
});
|
|
125
121
|
console.log('');
|
|
126
|
-
console.log(`
|
|
122
|
+
console.log(` You can modify your schema in src/schema.graphql, when you're ready to start implementing, run ${pc.bold('wgc router plugin generate')}.`);
|
|
123
|
+
console.log(` For more information, checkout the ${pc.bold(pc.italic('README.md'))} file for instructions on how to build and run your plugin.`);
|
|
127
124
|
console.log(` Go to https://cosmo-docs.wundergraph.com/router/plugins to learn more about it.`);
|
|
128
125
|
console.log('');
|
|
129
126
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"init.js","sourceRoot":"","sources":["../../../../../../../src/commands/router/commands/plugin/commands/init.ts"],"names":[],"mappings":"AAAA,sDAAsD;
|
|
1
|
+
{"version":3,"file":"init.js","sourceRoot":"","sources":["../../../../../../../src/commands/router/commands/plugin/commands/init.ts"],"names":[],"mappings":"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"}
|