@sentio/cli 2.5.0-rc.4 → 2.5.0-rc.5

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.
@@ -1,3 +1,8 @@
1
1
  import { YamlProjectConfig } from '../config.js';
2
2
  export declare function runUpload(processorConfig: YamlProjectConfig, argv: string[]): Promise<void>;
3
- export declare function uploadFile(options: YamlProjectConfig, apiKeyOverride: string): Promise<void>;
3
+ interface Auth {
4
+ 'api-key'?: string;
5
+ authorization?: string;
6
+ }
7
+ export declare function uploadFile(options: YamlProjectConfig, auth: Auth): Promise<void>;
8
+ export {};
@@ -23,7 +23,12 @@ const uploadOptionDefinitions = [
23
23
  {
24
24
  name: 'api-key',
25
25
  type: String,
26
- description: '(Optional) Manually provide API key rather than use saved credential',
26
+ description: '(Optional) Manually provide API key rather than use saved credential, if both api-key and jwt-token is provided, use api-key.',
27
+ },
28
+ {
29
+ name: 'token',
30
+ type: String,
31
+ description: '(Optional) Manually provide token rather than use saved credential, if both api-key and token is provided, use api-key.',
27
32
  },
28
33
  {
29
34
  name: 'host',
@@ -93,36 +98,42 @@ export async function runUpload(processorConfig, argv) {
93
98
  finalizeHost(processorConfig);
94
99
  FinalizeProjectName(processorConfig, options.owner, options.name);
95
100
  console.log(processorConfig);
96
- let apiOverride = undefined;
101
+ const uploadAuth = {};
102
+ let apiKey = ReadKey(options.host);
97
103
  if (options['api-key']) {
98
- apiOverride = options['api-key'];
104
+ apiKey = options['api-key'];
105
+ }
106
+ if (apiKey) {
107
+ uploadAuth['api-key'] = apiKey;
108
+ }
109
+ else if (options['token']) {
110
+ uploadAuth.authorization = 'Bearer ' + options['token'];
111
+ }
112
+ else {
113
+ const isProd = options.host === 'https://app.sentio.xyz';
114
+ const cmd = isProd ? 'sentio login' : 'sentio login --host=' + options.host;
115
+ console.error(chalk.red('No Credential found for', options.host, '. Please run `' + cmd + '`.'));
116
+ process.exit(1);
99
117
  }
100
118
  if (processorConfig.build) {
101
119
  await buildProcessor(false, options);
102
120
  }
103
- return uploadFile(processorConfig, apiOverride);
121
+ return uploadFile(processorConfig, uploadAuth);
104
122
  }
105
- async function createProject(options, apiKey) {
123
+ async function createProject(options, auth) {
106
124
  const url = new URL('/api/v1/projects', options.host);
107
125
  const [ownerName, slug] = options.project.includes('/') ? options.project.split('/') : [undefined, options.project];
108
126
  return fetch(url.href, {
109
127
  method: 'POST',
110
128
  headers: {
111
- 'api-key': apiKey,
129
+ ...auth,
112
130
  },
113
131
  body: JSON.stringify({ slug, ownerName, visibility: 'PRIVATE' }),
114
132
  });
115
133
  }
116
- export async function uploadFile(options, apiKeyOverride) {
134
+ export async function uploadFile(options, auth) {
117
135
  console.log(chalk.blue('Prepare to upload'));
118
136
  const PROCESSOR_FILE = path.join(process.cwd(), 'dist/lib.js');
119
- const apiKey = apiKeyOverride || ReadKey(options.host);
120
- const isProd = options.host === 'https://app.sentio.xyz';
121
- if (!apiKey) {
122
- const cmd = isProd ? 'sentio login' : 'sentio login --host=' + options.host;
123
- console.error(chalk.red('No Credential found for', options.host, '. Please run `' + cmd + '`.'));
124
- process.exit(1);
125
- }
126
137
  if (!fs.existsSync(PROCESSOR_FILE)) {
127
138
  console.error(chalk.red('File not existed ', PROCESSOR_FILE, "don't use --nobuild"));
128
139
  process.exit(1);
@@ -152,7 +163,7 @@ export async function uploadFile(options, apiKeyOverride) {
152
163
  }
153
164
  console.log(chalk.blue(triedCount > 1 ? 'Retry uploading' : 'Uploading'));
154
165
  // get gcs upload url
155
- const initUploadResRaw = await initUpload(options.host, apiKey, options.project, getSdkVersion());
166
+ const initUploadResRaw = await initUpload(options.host, auth, options.project, getSdkVersion());
156
167
  if (!initUploadResRaw.ok) {
157
168
  // console.error(chalk.red('Failed to get upload url'))
158
169
  console.error(chalk.red((await initUploadResRaw.json()).message));
@@ -166,7 +177,7 @@ export async function uploadFile(options, apiKeyOverride) {
166
177
  const answer = await new Promise((resolve) => rl.question(`Do you want to create it and continue the uploading process? (yes/no) `, resolve));
167
178
  if (['y', 'yes'].includes(answer.toLowerCase())) {
168
179
  rl.close();
169
- const res = await createProject(options, apiKey);
180
+ const res = await createProject(options, auth);
170
181
  if (!res.ok) {
171
182
  console.error(chalk.red('Create Project Failed'));
172
183
  console.error(chalk.red((await res.json()).message));
@@ -203,7 +214,7 @@ export async function uploadFile(options, apiKeyOverride) {
203
214
  return;
204
215
  }
205
216
  // finish uploading
206
- const finishUploadResRaw = await finishUpload(options.host, apiKey, options.project, getSdkVersion(), sha256, commitSha, gitUrl, options.debug);
217
+ const finishUploadResRaw = await finishUpload(options.host, auth, options.project, getSdkVersion(), sha256, commitSha, gitUrl, options.debug);
207
218
  if (!finishUploadResRaw.ok) {
208
219
  console.error(chalk.red('Failed to finish uploading'));
209
220
  console.error(chalk.red(await finishUploadResRaw.text()));
@@ -240,12 +251,12 @@ export async function uploadFile(options, apiKeyOverride) {
240
251
  };
241
252
  await tryUploading();
242
253
  }
243
- async function initUpload(host, apiKey, projectSlug, sdkVersion) {
254
+ async function initUpload(host, auth, projectSlug, sdkVersion) {
244
255
  const initUploadUrl = new URL(`/api/v1/processors/init_upload`, host);
245
256
  return fetch(initUploadUrl.href, {
246
257
  method: 'POST',
247
258
  headers: {
248
- 'api-key': apiKey,
259
+ ...auth,
249
260
  },
250
261
  body: JSON.stringify({
251
262
  project_slug: projectSlug,
@@ -253,12 +264,12 @@ async function initUpload(host, apiKey, projectSlug, sdkVersion) {
253
264
  }),
254
265
  });
255
266
  }
256
- async function finishUpload(host, apiKey, projectSlug, sdkVersion, sha256, commitSha, gitUrl, debug) {
267
+ async function finishUpload(host, auth, projectSlug, sdkVersion, sha256, commitSha, gitUrl, debug) {
257
268
  const finishUploadUrl = new URL(`/api/v1/processors/finish_upload`, host);
258
269
  return fetch(finishUploadUrl.href, {
259
270
  method: 'POST',
260
271
  headers: {
261
- 'api-key': apiKey,
272
+ ...auth,
262
273
  },
263
274
  body: JSON.stringify({
264
275
  project_slug: projectSlug,
@@ -1 +1 @@
1
- {"version":3,"file":"run-upload.js","sourceRoot":"","sources":["../../src/commands/run-upload.ts"],"names":[],"mappings":"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","sourcesContent":["import commandLineArgs from 'command-line-args'\nimport commandLineUsage from 'command-line-usage'\nimport { finalizeHost, FinalizeProjectName, YamlProjectConfig } from '../config.js'\nimport { URL } from 'url'\nimport fetch from 'node-fetch'\nimport { buildOptionDefinitions, buildProcessor } from './build.js'\nimport chalk from 'chalk'\nimport path from 'path'\nimport { ReadKey } from '../key.js'\nimport fs from 'fs'\nimport { createHash } from 'crypto'\nimport { execSync } from 'child_process'\nimport { getSdkVersion } from '../utils.js'\nimport readline from 'readline'\nimport * as process from 'process'\n\nconst uploadOptionDefinitions = [\n {\n name: 'help',\n alias: 'h',\n type: Boolean,\n description: 'Display this usage guide.',\n },\n {\n name: 'api-key',\n type: String,\n description: '(Optional) Manually provide API key rather than use saved credential',\n },\n {\n name: 'host',\n description: '(Optional) Override Sentio Host name',\n type: String,\n },\n {\n name: 'owner',\n description: '(Optional) Override Project owner',\n type: String,\n },\n {\n name: 'name',\n description: '(Optional) Override Project name',\n type: String,\n },\n {\n name: 'nobuild',\n description: '(Optional) Skip build & pack file before uploading, default false',\n type: Boolean,\n },\n {\n name: 'debug',\n description: '(Optional) Run driver in debug mode, default false',\n type: Boolean,\n },\n]\n\nfunction mergeOptions(options1: commandLineArgs.OptionDefinition[], options2: commandLineArgs.OptionDefinition[]) {\n const res = Object.assign([], options1)\n const added = new Set<string>()\n for (const opt of options1) {\n added.add(opt.name)\n }\n for (const opt of options2) {\n if (!added.has(opt.name)) {\n res.push(opt)\n }\n }\n return res\n}\n\nexport async function runUpload(processorConfig: YamlProjectConfig, argv: string[]) {\n const optionDefinitions = mergeOptions(uploadOptionDefinitions, buildOptionDefinitions)\n\n const options = commandLineArgs(optionDefinitions, { argv })\n if (options.help) {\n const usage = commandLineUsage([\n {\n header: 'Sentio upload',\n content: 'sentio upload',\n },\n {\n header: 'Options',\n optionList: optionDefinitions,\n },\n ])\n console.log(usage)\n process.exit(0)\n }\n\n if (options.host) {\n processorConfig.host = options.host\n }\n if (options.nobuild) {\n processorConfig.build = false\n }\n if (options.debug) {\n processorConfig.debug = true\n }\n finalizeHost(processorConfig)\n FinalizeProjectName(processorConfig, options.owner, options.name)\n console.log(processorConfig)\n\n let apiOverride = undefined\n if (options['api-key']) {\n apiOverride = options['api-key']\n }\n if (processorConfig.build) {\n await buildProcessor(false, options)\n }\n return uploadFile(processorConfig, apiOverride)\n}\n\nasync function createProject(options: YamlProjectConfig, apiKey: string) {\n const url = new URL('/api/v1/projects', options.host)\n const [ownerName, slug] = options.project.includes('/') ? options.project.split('/') : [undefined, options.project]\n return fetch(url.href, {\n method: 'POST',\n headers: {\n 'api-key': apiKey,\n },\n body: JSON.stringify({ slug, ownerName, visibility: 'PRIVATE' }),\n })\n}\n\nexport async function uploadFile(options: YamlProjectConfig, apiKeyOverride: string) {\n console.log(chalk.blue('Prepare to upload'))\n\n const PROCESSOR_FILE = path.join(process.cwd(), 'dist/lib.js')\n\n const apiKey = apiKeyOverride || ReadKey(options.host)\n\n const isProd = options.host === 'https://app.sentio.xyz'\n if (!apiKey) {\n const cmd = isProd ? 'sentio login' : 'sentio login --host=' + options.host\n console.error(chalk.red('No Credential found for', options.host, '. Please run `' + cmd + '`.'))\n process.exit(1)\n }\n\n if (!fs.existsSync(PROCESSOR_FILE)) {\n console.error(chalk.red('File not existed ', PROCESSOR_FILE, \"don't use --nobuild\"))\n process.exit(1)\n }\n\n const stat = fs.statSync(PROCESSOR_FILE)\n console.log('Packed processor file size', Math.floor(stat.size / 1024) + 'K, last modified', stat.mtime)\n const content = fs.readFileSync(PROCESSOR_FILE)\n const hash = createHash('sha256')\n hash.update(content)\n const digest = hash.digest('hex')\n\n let triedCount = 0\n const upload = async () => {\n let commitSha = ''\n let gitUrl = ''\n const sha256 = digest\n try {\n commitSha = execSync('git rev-parse HEAD').toString().trim()\n } catch (e) {\n chalk.yellow(e)\n }\n try {\n gitUrl = execSync('git remote get-url origin').toString().trim()\n } catch (e) {\n // skip errors\n }\n console.log(chalk.blue(triedCount > 1 ? 'Retry uploading' : 'Uploading'))\n\n // get gcs upload url\n const initUploadResRaw = await initUpload(options.host, apiKey, options.project, getSdkVersion())\n if (!initUploadResRaw.ok) {\n // console.error(chalk.red('Failed to get upload url'))\n console.error(chalk.red(((await initUploadResRaw.json()) as { message: string }).message))\n\n if (initUploadResRaw.status === 404) {\n // create project if not exist\n const rl = readline.createInterface({\n input: process.stdin,\n output: process.stdout,\n })\n const prompt = async () => {\n const answer: string = await new Promise((resolve) =>\n rl.question(`Do you want to create it and continue the uploading process? (yes/no) `, resolve)\n )\n if (['y', 'yes'].includes(answer.toLowerCase())) {\n rl.close()\n const res = await createProject(options, apiKey)\n if (!res.ok) {\n console.error(chalk.red('Create Project Failed'))\n console.error(chalk.red(((await res.json()) as { message: string }).message))\n return\n }\n console.log(chalk.green('Project created'))\n await upload()\n } else if (['n', 'no'].includes(answer.toLowerCase())) {\n rl.close()\n } else {\n await prompt()\n }\n }\n await prompt()\n }\n return\n }\n const initUploadRes = (await initUploadResRaw.json()) as { url: string }\n const uploadUrl = initUploadRes.url\n\n // do actual uploading\n const file = fs.createReadStream(PROCESSOR_FILE)\n const uploadResRaw = await fetch(uploadUrl, {\n method: 'PUT',\n headers: {\n 'Content-Type': 'application/octet-stream',\n },\n body: file,\n })\n if (!uploadResRaw.ok) {\n console.error(chalk.red('Failed to upload'))\n console.error(chalk.red(await uploadResRaw.text()))\n return\n }\n\n // finish uploading\n const finishUploadResRaw = await finishUpload(\n options.host,\n apiKey,\n options.project,\n getSdkVersion(),\n sha256,\n commitSha,\n gitUrl,\n options.debug\n )\n if (!finishUploadResRaw.ok) {\n console.error(chalk.red('Failed to finish uploading'))\n console.error(chalk.red(await finishUploadResRaw.text()))\n return\n }\n\n console.log(chalk.green('Upload success: '))\n console.log('\\t', chalk.blue('sha256:'), digest)\n if (commitSha) {\n console.log('\\t', chalk.blue('Git commit SHA:'), commitSha)\n }\n const { projectFullSlug, version } = (await finishUploadResRaw.json()) as {\n projectFullSlug: string\n version: string\n }\n console.log('\\t', chalk.blue('Check status:'), `${options.host}/${projectFullSlug}/datasource`)\n console.log('\\t', chalk.blue('Version:'), version)\n }\n\n let error: Error\n const tryUploading = async () => {\n if (triedCount++ >= 5) {\n console.error(error)\n return\n }\n try {\n await upload()\n } catch (e) {\n if (e.constructor.name === 'FetchError' && e.type === 'system' && e.code === 'EPIPE') {\n error = e\n await new Promise((resolve) => setTimeout(resolve, 1000))\n await tryUploading()\n } else {\n console.error(e)\n }\n }\n }\n\n await tryUploading()\n}\n\nasync function initUpload(host: string, apiKey: string, projectSlug: string, sdkVersion: string) {\n const initUploadUrl = new URL(`/api/v1/processors/init_upload`, host)\n return fetch(initUploadUrl.href, {\n method: 'POST',\n headers: {\n 'api-key': apiKey,\n },\n body: JSON.stringify({\n project_slug: projectSlug,\n sdk_version: sdkVersion,\n }),\n })\n}\n\nasync function finishUpload(\n host: string,\n apiKey: string,\n projectSlug: string,\n sdkVersion: string,\n sha256: string,\n commitSha: string,\n gitUrl: string,\n debug: boolean\n) {\n const finishUploadUrl = new URL(`/api/v1/processors/finish_upload`, host)\n return fetch(finishUploadUrl.href, {\n method: 'POST',\n headers: {\n 'api-key': apiKey,\n },\n body: JSON.stringify({\n project_slug: projectSlug,\n sdk_version: sdkVersion,\n sha256: sha256,\n commit_sha: commitSha,\n git_url: gitUrl,\n debug: debug,\n }),\n })\n}\n"]}
1
+ {"version":3,"file":"run-upload.js","sourceRoot":"","sources":["../../src/commands/run-upload.ts"],"names":[],"mappings":"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","sourcesContent":["import commandLineArgs from 'command-line-args'\nimport commandLineUsage from 'command-line-usage'\nimport { finalizeHost, FinalizeProjectName, YamlProjectConfig } from '../config.js'\nimport { URL } from 'url'\nimport fetch from 'node-fetch'\nimport { buildOptionDefinitions, buildProcessor } from './build.js'\nimport chalk from 'chalk'\nimport path from 'path'\nimport { ReadKey } from '../key.js'\nimport fs from 'fs'\nimport { createHash } from 'crypto'\nimport { execSync } from 'child_process'\nimport { getSdkVersion } from '../utils.js'\nimport readline from 'readline'\nimport * as process from 'process'\n\nconst uploadOptionDefinitions = [\n {\n name: 'help',\n alias: 'h',\n type: Boolean,\n description: 'Display this usage guide.',\n },\n {\n name: 'api-key',\n type: String,\n description:\n '(Optional) Manually provide API key rather than use saved credential, if both api-key and jwt-token is provided, use api-key.',\n },\n {\n name: 'token',\n type: String,\n description:\n '(Optional) Manually provide token rather than use saved credential, if both api-key and token is provided, use api-key.',\n },\n {\n name: 'host',\n description: '(Optional) Override Sentio Host name',\n type: String,\n },\n {\n name: 'owner',\n description: '(Optional) Override Project owner',\n type: String,\n },\n {\n name: 'name',\n description: '(Optional) Override Project name',\n type: String,\n },\n {\n name: 'nobuild',\n description: '(Optional) Skip build & pack file before uploading, default false',\n type: Boolean,\n },\n {\n name: 'debug',\n description: '(Optional) Run driver in debug mode, default false',\n type: Boolean,\n },\n]\n\nfunction mergeOptions(options1: commandLineArgs.OptionDefinition[], options2: commandLineArgs.OptionDefinition[]) {\n const res = Object.assign([], options1)\n const added = new Set<string>()\n for (const opt of options1) {\n added.add(opt.name)\n }\n for (const opt of options2) {\n if (!added.has(opt.name)) {\n res.push(opt)\n }\n }\n return res\n}\n\nexport async function runUpload(processorConfig: YamlProjectConfig, argv: string[]) {\n const optionDefinitions = mergeOptions(uploadOptionDefinitions, buildOptionDefinitions)\n\n const options = commandLineArgs(optionDefinitions, { argv })\n if (options.help) {\n const usage = commandLineUsage([\n {\n header: 'Sentio upload',\n content: 'sentio upload',\n },\n {\n header: 'Options',\n optionList: optionDefinitions,\n },\n ])\n console.log(usage)\n process.exit(0)\n }\n\n if (options.host) {\n processorConfig.host = options.host\n }\n if (options.nobuild) {\n processorConfig.build = false\n }\n if (options.debug) {\n processorConfig.debug = true\n }\n finalizeHost(processorConfig)\n FinalizeProjectName(processorConfig, options.owner, options.name)\n console.log(processorConfig)\n\n const uploadAuth: Auth = {}\n\n let apiKey = ReadKey(options.host)\n if (options['api-key']) {\n apiKey = options['api-key']\n }\n if (apiKey) {\n uploadAuth['api-key'] = apiKey\n } else if (options['token']) {\n uploadAuth.authorization = 'Bearer ' + options['token']\n } else {\n const isProd = options.host === 'https://app.sentio.xyz'\n const cmd = isProd ? 'sentio login' : 'sentio login --host=' + options.host\n console.error(chalk.red('No Credential found for', options.host, '. Please run `' + cmd + '`.'))\n process.exit(1)\n }\n\n if (processorConfig.build) {\n await buildProcessor(false, options)\n }\n return uploadFile(processorConfig, uploadAuth)\n}\n\nasync function createProject(options: YamlProjectConfig, auth: Auth) {\n const url = new URL('/api/v1/projects', options.host)\n const [ownerName, slug] = options.project.includes('/') ? options.project.split('/') : [undefined, options.project]\n return fetch(url.href, {\n method: 'POST',\n headers: {\n ...auth,\n },\n body: JSON.stringify({ slug, ownerName, visibility: 'PRIVATE' }),\n })\n}\n\ninterface Auth {\n 'api-key'?: string\n authorization?: string\n}\n\nexport async function uploadFile(options: YamlProjectConfig, auth: Auth) {\n console.log(chalk.blue('Prepare to upload'))\n\n const PROCESSOR_FILE = path.join(process.cwd(), 'dist/lib.js')\n\n if (!fs.existsSync(PROCESSOR_FILE)) {\n console.error(chalk.red('File not existed ', PROCESSOR_FILE, \"don't use --nobuild\"))\n process.exit(1)\n }\n\n const stat = fs.statSync(PROCESSOR_FILE)\n console.log('Packed processor file size', Math.floor(stat.size / 1024) + 'K, last modified', stat.mtime)\n const content = fs.readFileSync(PROCESSOR_FILE)\n const hash = createHash('sha256')\n hash.update(content)\n const digest = hash.digest('hex')\n\n let triedCount = 0\n const upload = async () => {\n let commitSha = ''\n let gitUrl = ''\n const sha256 = digest\n try {\n commitSha = execSync('git rev-parse HEAD').toString().trim()\n } catch (e) {\n chalk.yellow(e)\n }\n try {\n gitUrl = execSync('git remote get-url origin').toString().trim()\n } catch (e) {\n // skip errors\n }\n console.log(chalk.blue(triedCount > 1 ? 'Retry uploading' : 'Uploading'))\n\n // get gcs upload url\n const initUploadResRaw = await initUpload(options.host, auth, options.project, getSdkVersion())\n if (!initUploadResRaw.ok) {\n // console.error(chalk.red('Failed to get upload url'))\n console.error(chalk.red(((await initUploadResRaw.json()) as { message: string }).message))\n\n if (initUploadResRaw.status === 404) {\n // create project if not exist\n const rl = readline.createInterface({\n input: process.stdin,\n output: process.stdout,\n })\n const prompt = async () => {\n const answer: string = await new Promise((resolve) =>\n rl.question(`Do you want to create it and continue the uploading process? (yes/no) `, resolve)\n )\n if (['y', 'yes'].includes(answer.toLowerCase())) {\n rl.close()\n const res = await createProject(options, auth)\n if (!res.ok) {\n console.error(chalk.red('Create Project Failed'))\n console.error(chalk.red(((await res.json()) as { message: string }).message))\n return\n }\n console.log(chalk.green('Project created'))\n await upload()\n } else if (['n', 'no'].includes(answer.toLowerCase())) {\n rl.close()\n } else {\n await prompt()\n }\n }\n await prompt()\n }\n return\n }\n const initUploadRes = (await initUploadResRaw.json()) as { url: string }\n const uploadUrl = initUploadRes.url\n\n // do actual uploading\n const file = fs.createReadStream(PROCESSOR_FILE)\n const uploadResRaw = await fetch(uploadUrl, {\n method: 'PUT',\n headers: {\n 'Content-Type': 'application/octet-stream',\n },\n body: file,\n })\n if (!uploadResRaw.ok) {\n console.error(chalk.red('Failed to upload'))\n console.error(chalk.red(await uploadResRaw.text()))\n return\n }\n\n // finish uploading\n const finishUploadResRaw = await finishUpload(\n options.host,\n auth,\n options.project,\n getSdkVersion(),\n sha256,\n commitSha,\n gitUrl,\n options.debug\n )\n if (!finishUploadResRaw.ok) {\n console.error(chalk.red('Failed to finish uploading'))\n console.error(chalk.red(await finishUploadResRaw.text()))\n return\n }\n\n console.log(chalk.green('Upload success: '))\n console.log('\\t', chalk.blue('sha256:'), digest)\n if (commitSha) {\n console.log('\\t', chalk.blue('Git commit SHA:'), commitSha)\n }\n const { projectFullSlug, version } = (await finishUploadResRaw.json()) as {\n projectFullSlug: string\n version: string\n }\n console.log('\\t', chalk.blue('Check status:'), `${options.host}/${projectFullSlug}/datasource`)\n console.log('\\t', chalk.blue('Version:'), version)\n }\n\n let error: Error\n const tryUploading = async () => {\n if (triedCount++ >= 5) {\n console.error(error)\n return\n }\n try {\n await upload()\n } catch (e) {\n if (e.constructor.name === 'FetchError' && e.type === 'system' && e.code === 'EPIPE') {\n error = e\n await new Promise((resolve) => setTimeout(resolve, 1000))\n await tryUploading()\n } else {\n console.error(e)\n }\n }\n }\n\n await tryUploading()\n}\n\nasync function initUpload(host: string, auth: Auth, projectSlug: string, sdkVersion: string) {\n const initUploadUrl = new URL(`/api/v1/processors/init_upload`, host)\n return fetch(initUploadUrl.href, {\n method: 'POST',\n headers: {\n ...auth,\n },\n body: JSON.stringify({\n project_slug: projectSlug,\n sdk_version: sdkVersion,\n }),\n })\n}\n\nasync function finishUpload(\n host: string,\n auth: Auth,\n projectSlug: string,\n sdkVersion: string,\n sha256: string,\n commitSha: string,\n gitUrl: string,\n debug: boolean\n) {\n const finishUploadUrl = new URL(`/api/v1/processors/finish_upload`, host)\n return fetch(finishUploadUrl.href, {\n method: 'POST',\n headers: {\n ...auth,\n },\n body: JSON.stringify({\n project_slug: projectSlug,\n sdk_version: sdkVersion,\n sha256: sha256,\n commit_sha: commitSha,\n git_url: gitUrl,\n debug: debug,\n }),\n })\n}\n"]}
package/package.json CHANGED
@@ -3,7 +3,7 @@
3
3
  "license": "Apache-2.0",
4
4
  "private": false,
5
5
  "type": "module",
6
- "version": "2.5.0-rc.4",
6
+ "version": "2.5.0-rc.5",
7
7
  "scripts": {
8
8
  "compile": "tsc",
9
9
  "build": "yarn compile",
@@ -24,7 +24,14 @@ const uploadOptionDefinitions = [
24
24
  {
25
25
  name: 'api-key',
26
26
  type: String,
27
- description: '(Optional) Manually provide API key rather than use saved credential',
27
+ description:
28
+ '(Optional) Manually provide API key rather than use saved credential, if both api-key and jwt-token is provided, use api-key.',
29
+ },
30
+ {
31
+ name: 'token',
32
+ type: String,
33
+ description:
34
+ '(Optional) Manually provide token rather than use saved credential, if both api-key and token is provided, use api-key.',
28
35
  },
29
36
  {
30
37
  name: 'host',
@@ -99,42 +106,51 @@ export async function runUpload(processorConfig: YamlProjectConfig, argv: string
99
106
  FinalizeProjectName(processorConfig, options.owner, options.name)
100
107
  console.log(processorConfig)
101
108
 
102
- let apiOverride = undefined
109
+ const uploadAuth: Auth = {}
110
+
111
+ let apiKey = ReadKey(options.host)
103
112
  if (options['api-key']) {
104
- apiOverride = options['api-key']
113
+ apiKey = options['api-key']
105
114
  }
115
+ if (apiKey) {
116
+ uploadAuth['api-key'] = apiKey
117
+ } else if (options['token']) {
118
+ uploadAuth.authorization = 'Bearer ' + options['token']
119
+ } else {
120
+ const isProd = options.host === 'https://app.sentio.xyz'
121
+ const cmd = isProd ? 'sentio login' : 'sentio login --host=' + options.host
122
+ console.error(chalk.red('No Credential found for', options.host, '. Please run `' + cmd + '`.'))
123
+ process.exit(1)
124
+ }
125
+
106
126
  if (processorConfig.build) {
107
127
  await buildProcessor(false, options)
108
128
  }
109
- return uploadFile(processorConfig, apiOverride)
129
+ return uploadFile(processorConfig, uploadAuth)
110
130
  }
111
131
 
112
- async function createProject(options: YamlProjectConfig, apiKey: string) {
132
+ async function createProject(options: YamlProjectConfig, auth: Auth) {
113
133
  const url = new URL('/api/v1/projects', options.host)
114
134
  const [ownerName, slug] = options.project.includes('/') ? options.project.split('/') : [undefined, options.project]
115
135
  return fetch(url.href, {
116
136
  method: 'POST',
117
137
  headers: {
118
- 'api-key': apiKey,
138
+ ...auth,
119
139
  },
120
140
  body: JSON.stringify({ slug, ownerName, visibility: 'PRIVATE' }),
121
141
  })
122
142
  }
123
143
 
124
- export async function uploadFile(options: YamlProjectConfig, apiKeyOverride: string) {
144
+ interface Auth {
145
+ 'api-key'?: string
146
+ authorization?: string
147
+ }
148
+
149
+ export async function uploadFile(options: YamlProjectConfig, auth: Auth) {
125
150
  console.log(chalk.blue('Prepare to upload'))
126
151
 
127
152
  const PROCESSOR_FILE = path.join(process.cwd(), 'dist/lib.js')
128
153
 
129
- const apiKey = apiKeyOverride || ReadKey(options.host)
130
-
131
- const isProd = options.host === 'https://app.sentio.xyz'
132
- if (!apiKey) {
133
- const cmd = isProd ? 'sentio login' : 'sentio login --host=' + options.host
134
- console.error(chalk.red('No Credential found for', options.host, '. Please run `' + cmd + '`.'))
135
- process.exit(1)
136
- }
137
-
138
154
  if (!fs.existsSync(PROCESSOR_FILE)) {
139
155
  console.error(chalk.red('File not existed ', PROCESSOR_FILE, "don't use --nobuild"))
140
156
  process.exit(1)
@@ -165,7 +181,7 @@ export async function uploadFile(options: YamlProjectConfig, apiKeyOverride: str
165
181
  console.log(chalk.blue(triedCount > 1 ? 'Retry uploading' : 'Uploading'))
166
182
 
167
183
  // get gcs upload url
168
- const initUploadResRaw = await initUpload(options.host, apiKey, options.project, getSdkVersion())
184
+ const initUploadResRaw = await initUpload(options.host, auth, options.project, getSdkVersion())
169
185
  if (!initUploadResRaw.ok) {
170
186
  // console.error(chalk.red('Failed to get upload url'))
171
187
  console.error(chalk.red(((await initUploadResRaw.json()) as { message: string }).message))
@@ -182,7 +198,7 @@ export async function uploadFile(options: YamlProjectConfig, apiKeyOverride: str
182
198
  )
183
199
  if (['y', 'yes'].includes(answer.toLowerCase())) {
184
200
  rl.close()
185
- const res = await createProject(options, apiKey)
201
+ const res = await createProject(options, auth)
186
202
  if (!res.ok) {
187
203
  console.error(chalk.red('Create Project Failed'))
188
204
  console.error(chalk.red(((await res.json()) as { message: string }).message))
@@ -221,7 +237,7 @@ export async function uploadFile(options: YamlProjectConfig, apiKeyOverride: str
221
237
  // finish uploading
222
238
  const finishUploadResRaw = await finishUpload(
223
239
  options.host,
224
- apiKey,
240
+ auth,
225
241
  options.project,
226
242
  getSdkVersion(),
227
243
  sha256,
@@ -270,12 +286,12 @@ export async function uploadFile(options: YamlProjectConfig, apiKeyOverride: str
270
286
  await tryUploading()
271
287
  }
272
288
 
273
- async function initUpload(host: string, apiKey: string, projectSlug: string, sdkVersion: string) {
289
+ async function initUpload(host: string, auth: Auth, projectSlug: string, sdkVersion: string) {
274
290
  const initUploadUrl = new URL(`/api/v1/processors/init_upload`, host)
275
291
  return fetch(initUploadUrl.href, {
276
292
  method: 'POST',
277
293
  headers: {
278
- 'api-key': apiKey,
294
+ ...auth,
279
295
  },
280
296
  body: JSON.stringify({
281
297
  project_slug: projectSlug,
@@ -286,7 +302,7 @@ async function initUpload(host: string, apiKey: string, projectSlug: string, sdk
286
302
 
287
303
  async function finishUpload(
288
304
  host: string,
289
- apiKey: string,
305
+ auth: Auth,
290
306
  projectSlug: string,
291
307
  sdkVersion: string,
292
308
  sha256: string,
@@ -298,7 +314,7 @@ async function finishUpload(
298
314
  return fetch(finishUploadUrl.href, {
299
315
  method: 'POST',
300
316
  headers: {
301
- 'api-key': apiKey,
317
+ ...auth,
302
318
  },
303
319
  body: JSON.stringify({
304
320
  project_slug: projectSlug,