wgc 0.33.0 → 0.34.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/CHANGELOG.md CHANGED
@@ -4,6 +4,16 @@ Binaries are attached to the github release otherwise all images can be found [h
4
4
  All notable changes to this project will be documented in this file.
5
5
  See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
6
6
 
7
+ # [0.34.0](https://github.com/wundergraph/cosmo/compare/wgc@0.33.1...wgc@0.34.0) (2023-12-05)
8
+
9
+ ### Features
10
+
11
+ * implement wgc router download-binary ([#339](https://github.com/wundergraph/cosmo/issues/339)) ([5de5b4e](https://github.com/wundergraph/cosmo/commit/5de5b4e9aedf79143543fe56f99034510f5e8f43)) (@Aenimus)
12
+
13
+ ## [0.33.1](https://github.com/wundergraph/cosmo/compare/wgc@0.33.0...wgc@0.33.1) (2023-12-04)
14
+
15
+ **Note:** Version bump only for package wgc
16
+
7
17
  # [0.33.0](https://github.com/wundergraph/cosmo/compare/wgc@0.32.2...wgc@0.33.0) (2023-12-01)
8
18
 
9
19
  ### Features
@@ -0,0 +1,3 @@
1
+ import { Command } from 'commander';
2
+ import { BaseCommandOptions } from '../../../core/types/types.js';
3
+ export default function (_: BaseCommandOptions): Command;
@@ -0,0 +1,129 @@
1
+ import fs from 'node:fs';
2
+ import { Octokit } from 'octokit';
3
+ import { Command, program } from 'commander';
4
+ import pc from 'picocolors';
5
+ import cliProgress from 'cli-progress';
6
+ import decompress from 'decompress';
7
+ import { join } from 'pathe';
8
+ export default function (_) {
9
+ const command = new Command('download-binary');
10
+ command.description('Downloads the latest router binary for the detected machine platform and architecture.');
11
+ command.option('-o, --out [string]', 'Destination directory for the downloaded router binary.');
12
+ command.action(async (options) => {
13
+ var _a;
14
+ const path = join(process.cwd(), (_a = options.out) !== null && _a !== void 0 ? _a : './router');
15
+ const fullPath = join(path, 'router');
16
+ if (fs.existsSync(fullPath)) {
17
+ program.error(pc.red(`${fullPath} already exists`));
18
+ }
19
+ const routerTarget = getBinaryTarget();
20
+ const octokit = new Octokit();
21
+ const headers = process.env.GITHUB_TOKEN ? { authorization: `token ${process.env.GITHUB_TOKEN}` } : {};
22
+ const releases = await octokit.request('GET /repos/wundergraph/cosmo/releases', { headers });
23
+ let routerRelease;
24
+ for (const release of releases.data) {
25
+ if (!release.tag_name || !release.tag_name.startsWith('router@')) {
26
+ continue;
27
+ }
28
+ routerRelease = release;
29
+ break;
30
+ }
31
+ let url;
32
+ for (const asset of routerRelease.assets) {
33
+ if (!asset.name.endsWith(routerTarget)) {
34
+ continue;
35
+ }
36
+ url = asset.browser_download_url;
37
+ break;
38
+ }
39
+ const response = await fetch(url);
40
+ const contentLength = response.headers.get('content-length');
41
+ if (!contentLength) {
42
+ program.error(pc.red(`Could not get content-length of file`));
43
+ }
44
+ if (!response.body) {
45
+ program.error(pc.red(`Response had no body`));
46
+ }
47
+ console.log(`Beginning download for ${routerTarget}\nSource: ${url}\nTarget directory: ${path}/`);
48
+ let loaded = 0;
49
+ const total = Number.parseInt(contentLength, 10);
50
+ const bar = new cliProgress.SingleBar({});
51
+ bar.start(total, 0);
52
+ const reader = response.body.getReader();
53
+ const chunks = [];
54
+ for await (const chunk of readChunks(reader)) {
55
+ loaded += chunk.byteLength;
56
+ bar.update(loaded);
57
+ chunks.push(chunk);
58
+ }
59
+ bar.stop();
60
+ await decompress(Buffer.from(await new Blob(chunks).arrayBuffer()), path);
61
+ });
62
+ return command;
63
+ }
64
+ function getBinaryTarget() {
65
+ const tarSuffix = '.tar.gz';
66
+ const zipSuffix = '.zip';
67
+ switch (process.platform) {
68
+ case 'darwin': {
69
+ switch (process.arch) {
70
+ case 'arm64': {
71
+ return 'darwin-arm64' + tarSuffix;
72
+ }
73
+ case 'x64': {
74
+ return 'darwin-amd64' + tarSuffix;
75
+ }
76
+ default: {
77
+ program.error(pc.red(`Unsupported MacOS architecture: ${process.arch}`));
78
+ }
79
+ }
80
+ break;
81
+ }
82
+ case 'linux': {
83
+ switch (process.arch) {
84
+ case 'arm64': {
85
+ return 'linux-arm64' + tarSuffix;
86
+ }
87
+ case 'ia32': {
88
+ return 'linux-386' + tarSuffix;
89
+ }
90
+ case 'x64': {
91
+ return 'linux-amd64' + tarSuffix;
92
+ }
93
+ default: {
94
+ program.error(pc.red(`Unsupported Linux architecture: ${process.arch}`));
95
+ }
96
+ }
97
+ break;
98
+ }
99
+ case 'win32': {
100
+ switch (process.arch) {
101
+ case 'x64': {
102
+ return 'windows-amd64' + zipSuffix;
103
+ }
104
+ case 'ia32': {
105
+ return 'windows-386' + zipSuffix;
106
+ }
107
+ default: {
108
+ program.error(pc.red(`Unsupported Windows architecture: ${process.arch}`));
109
+ }
110
+ }
111
+ break;
112
+ }
113
+ default: {
114
+ program.error(pc.red(`Unsupported platform: ${process.platform}`));
115
+ }
116
+ }
117
+ }
118
+ function readChunks(reader) {
119
+ return {
120
+ async *[Symbol.asyncIterator]() {
121
+ let readResult = await reader.read();
122
+ while (!readResult.done) {
123
+ yield readResult.value;
124
+ readResult = await reader.read();
125
+ }
126
+ },
127
+ };
128
+ }
129
+ //# sourceMappingURL=download-binary.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"download-binary.js","sourceRoot":"","sources":["../../../../src/commands/router/commands/download-binary.ts"],"names":[],"mappings":"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"}
@@ -3,6 +3,7 @@ import { checkAPIKey } from '../../utils.js';
3
3
  import ComposeRouterConfig from './commands/compose.js';
4
4
  import FetchRouterConfig from './commands/fetch.js';
5
5
  import RouterTokenCommands from './commands/token/index.js';
6
+ import DownloadRouterBinaryConfig from './commands/download-binary.js';
6
7
  export default (opts) => {
7
8
  const cmd = new Command('router');
8
9
  cmd.description('Provides commands for fetching and composing router configs');
@@ -11,6 +12,7 @@ export default (opts) => {
11
12
  cmd.addCommand(RouterTokenCommands({
12
13
  client: opts.client,
13
14
  }));
15
+ cmd.addCommand(DownloadRouterBinaryConfig(opts));
14
16
  cmd.hook('preAction', (thisCmd) => {
15
17
  if (thisCmd.args[0] === 'compose') {
16
18
  return;
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/commands/router/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAEpC,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAC7C,OAAO,mBAAmB,MAAM,uBAAuB,CAAC;AACxD,OAAO,iBAAiB,MAAM,qBAAqB,CAAC;AACpD,OAAO,mBAAmB,MAAM,2BAA2B,CAAC;AAE5D,eAAe,CAAC,IAAwB,EAAE,EAAE;IAC1C,MAAM,GAAG,GAAG,IAAI,OAAO,CAAC,QAAQ,CAAC,CAAC;IAClC,GAAG,CAAC,WAAW,CAAC,6DAA6D,CAAC,CAAC;IAC/E,GAAG,CAAC,UAAU,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAC,CAAC;IACxC,GAAG,CAAC,UAAU,CAAC,mBAAmB,CAAC,IAAI,CAAC,CAAC,CAAC;IAC1C,GAAG,CAAC,UAAU,CACZ,mBAAmB,CAAC;QAClB,MAAM,EAAE,IAAI,CAAC,MAAM;KACpB,CAAC,CACH,CAAC;IAEF,GAAG,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,OAAO,EAAE,EAAE;QAChC,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,SAAS,EAAE;YACjC,OAAO;SACR;QACD,WAAW,EAAE,CAAC;IAChB,CAAC,CAAC,CAAC;IAEH,OAAO,GAAG,CAAC;AACb,CAAC,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/commands/router/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAEpC,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAC7C,OAAO,mBAAmB,MAAM,uBAAuB,CAAC;AACxD,OAAO,iBAAiB,MAAM,qBAAqB,CAAC;AACpD,OAAO,mBAAmB,MAAM,2BAA2B,CAAC;AAC5D,OAAO,0BAA0B,MAAM,+BAA+B,CAAC;AAEvE,eAAe,CAAC,IAAwB,EAAE,EAAE;IAC1C,MAAM,GAAG,GAAG,IAAI,OAAO,CAAC,QAAQ,CAAC,CAAC;IAClC,GAAG,CAAC,WAAW,CAAC,6DAA6D,CAAC,CAAC;IAC/E,GAAG,CAAC,UAAU,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAC,CAAC;IACxC,GAAG,CAAC,UAAU,CAAC,mBAAmB,CAAC,IAAI,CAAC,CAAC,CAAC;IAC1C,GAAG,CAAC,UAAU,CACZ,mBAAmB,CAAC;QAClB,MAAM,EAAE,IAAI,CAAC,MAAM;KACpB,CAAC,CACH,CAAC;IACF,GAAG,CAAC,UAAU,CAAC,0BAA0B,CAAC,IAAI,CAAC,CAAC,CAAC;IAEjD,GAAG,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,OAAO,EAAE,EAAE;QAChC,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,SAAS,EAAE;YACjC,OAAO;SACR;QACD,WAAW,EAAE,CAAC;IAChB,CAAC,CAAC,CAAC;IAEH,OAAO,GAAG,CAAC;AACb,CAAC,CAAC"}