@xcelera/cli 1.5.0 → 1.6.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/cli.js CHANGED
@@ -350,7 +350,7 @@ try {
350
350
  const response = await requestAudit(url, token, githubContext);
351
351
  if (!response.success) {
352
352
  const { message, details } = response.error;
353
- console.error('❌ Unabled to schedule audit :(');
353
+ console.error('❌ Unable to schedule audit :(');
354
354
  console.error(` ↳ ${message}`);
355
355
  if (details) {
356
356
  console.error(` ↳ ${details}`);
@@ -359,13 +359,21 @@ try {
359
359
  }
360
360
  const { auditId, status, integrations } = response.data;
361
361
  console.log('✅ Audit scheduled successfully!');
362
- console.log(`Audit ID: ${auditId}`);
363
- console.log(`Status: ${status}`);
364
- if (integrations) {
365
- console.log('Integration detected:');
366
- console.log(` GitHub: ${integrations.github.installationId}`);
367
- console.log(` GitHub: ${integrations.github.checkRunId}`);
368
- console.log(` GitHub: ${integrations.github.hasRepoAccess}`);
362
+ if (process.env.DEBUG) {
363
+ console.log(`Audit ID: ${auditId}`);
364
+ console.log(`Status: ${status}`);
365
+ }
366
+ if (integrations && integrations.github) {
367
+ console.log('GitHub integration detected');
368
+ const { installationId, hasRepoAccess } = integrations.github;
369
+ if (installationId && !hasRepoAccess) {
370
+ console.log('Warning: The xcelera.dev Github app is installed, but it does not have repository access.');
371
+ }
372
+ if (process.env.DEBUG) {
373
+ console.log(` ↳ installation ID: ${integrations.github.installationId}`);
374
+ console.log(` ↳ check run ID: ${integrations.github.checkRunId}`);
375
+ console.log(` ↳ installation has repo access: ${integrations.github.hasRepoAccess}`);
376
+ }
369
377
  }
370
378
  }
371
379
  catch (error) {
package/dist/cli.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"cli.js","sources":["../node_modules/is-network-error/index.js","../src/api.ts","../node_modules/parse-github-url/index.js","../src/git.ts","../src/cli.ts"],"sourcesContent":["const objectToString = Object.prototype.toString;\n\nconst isError = value => objectToString.call(value) === '[object Error]';\n\nconst errorMessages = new Set([\n\t'network error', // Chrome\n\t'Failed to fetch', // Chrome\n\t'NetworkError when attempting to fetch resource.', // Firefox\n\t'The Internet connection appears to be offline.', // Safari 16\n\t'Load failed', // Safari 17+\n\t'Network request failed', // `cross-fetch`\n\t'fetch failed', // Undici (Node.js)\n\t'terminated', // Undici (Node.js)\n]);\n\nexport default function isNetworkError(error) {\n\tconst isValid = error\n\t\t&& isError(error)\n\t\t&& error.name === 'TypeError'\n\t\t&& typeof error.message === 'string';\n\n\tif (!isValid) {\n\t\treturn false;\n\t}\n\n\t// We do an extra check for Safari 17+ as it has a very generic error message.\n\t// Network errors in Safari have no stack.\n\tif (error.message === 'Load failed') {\n\t\treturn error.stack === undefined;\n\t}\n\n\treturn errorMessages.has(error.message);\n}\n","import isNetworkError from 'is-network-error'\n\nimport type { GitContext } from './types/git.js'\nimport { ApiResponse, ErrorResponse, SuccessResponse } from './types/index.js'\n\ntype AuditData = {\n auditId: string\n status: string\n integrations: {\n github: {\n installationId?: number\n checkRunId?: number\n hasRepoAccess?: boolean\n }\n }\n}\n\ntype AuditError = {\n message: string\n details: string\n}\n\ntype AuditResponse = ApiResponse<AuditData, AuditError>\n\nexport async function requestAudit(\n url: string,\n token: string,\n github: GitContext\n): Promise<AuditResponse> {\n const apiUrl = `${getApiBaseUrl()}/api/v1/audit`\n\n try {\n const response = await fetch(apiUrl, {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json',\n Authorization: `Bearer ${token}`\n },\n body: JSON.stringify({\n url,\n github\n })\n })\n if (!response.ok) {\n // handle expected errors\n if (response.headers.get('content-type')?.includes('application/json')) {\n const errorResponse =\n (await response.json()) as ErrorResponse<AuditError>\n return errorResponse\n }\n // handle unexpected errors\n const errorText = await response.text()\n throw new Error(\n `Operation failed: ${response.status} ${response.statusText} - ${errorText}`\n )\n }\n\n const { data } = (await response.json()) as SuccessResponse<AuditData>\n return {\n success: true,\n data\n }\n } catch (error) {\n if (isNetworkError(error)) {\n return {\n success: false,\n error: {\n message: 'Network error',\n details: error.message\n }\n }\n }\n throw error\n }\n}\n\nfunction getApiBaseUrl(): string {\n if (process.env.NODE_ENV === 'development') {\n return 'http://localhost:3000'\n }\n return 'https://xcelera.dev'\n}\n","/*!\n * parse-github-url <https://github.com/jonschlinkert/parse-github-url>\n *\n * Copyright (c) 2015-2017, Jon Schlinkert.\n * Released under the MIT License.\n */\n\n'use strict';\n\nvar url = require('url');\nvar cache = { __proto__: null };\n\nfunction isChecksum(str) {\n\treturn (/^[a-f0-9]{40}$/i).test(str);\n}\n\nfunction getBranch(str, obj) {\n\tvar segs = str.split('#');\n\tvar branch;\n\tif (segs.length > 1) {\n\t\tbranch = segs[segs.length - 1];\n\t}\n\tif (!branch && obj.hash && obj.hash.charAt(0) === '#') {\n\t\tbranch = obj.hash.slice(1);\n\t}\n\treturn branch || 'master';\n}\n\nfunction trimSlash(path) {\n\treturn path.charAt(0) === '/' ? path.slice(1) : path;\n}\n\nfunction name(str) {\n\treturn str ? str.replace(/\\.git$/, '') : null;\n}\n\nfunction owner(str) {\n\tif (!str) {\n\t\treturn null;\n\t}\n\tvar idx = str.indexOf(':');\n\tif (idx > -1) {\n\t\treturn str.slice(idx + 1);\n\t}\n\treturn str;\n}\n\nfunction parse(str) {\n\tif (typeof str !== 'string' || !str.length) {\n\t\treturn null;\n\t}\n\n\tif (str.indexOf('git@gist') !== -1 || str.indexOf('//gist') !== -1) {\n\t\treturn null;\n\t}\n\n\t// parse the URL\n\tvar obj = url.parse(str);\n\tif (typeof obj.path !== 'string' || !obj.path.length || typeof obj.pathname !== 'string' || !obj.pathname.length) {\n\t\treturn null;\n\t}\n\n\tif (!obj.host && (/^git@/).test(str) === true) {\n\t\t// return the correct host for git@ URLs\n\t\tobj.host = url.parse('http://' + str.replace(/git@([^:]+):/, '$1/')).host;\n\t}\n\n\tobj.path = trimSlash(obj.path);\n\tobj.pathname = trimSlash(obj.pathname);\n\tobj.filepath = null;\n\n\tif (obj.path.indexOf('repos') === 0) {\n\t\tobj.path = obj.path.slice(6);\n\t}\n\n\tvar seg = obj.path.split('/').filter(Boolean);\n\tvar hasBlob = seg[2] === 'blob';\n\tif (hasBlob && !isChecksum(seg[3])) {\n\t\tobj.branch = seg[3];\n\t\tif (seg.length > 4) {\n\t\t\tobj.filepath = seg.slice(4).join('/');\n\t\t}\n\t}\n\n\tvar blob = str.indexOf('blob');\n\tif (hasBlob && blob !== -1) {\n\t\tobj.blob = str.slice(blob + 5);\n\t}\n\n\tvar hasTree = seg[2] === 'tree';\n\tvar tree = str.indexOf('tree');\n\tif (hasTree && tree !== -1) {\n\t\tvar idx = tree + 5;\n\t\tvar branch = str.slice(idx);\n\t\tvar slash = branch.indexOf('/');\n\t\tif (slash !== -1) {\n\t\t\tbranch = branch.slice(0, slash);\n\t\t}\n\t\tobj.branch = branch;\n\t}\n\n\tobj.owner = owner(seg[0]);\n\tobj.name = name(seg[1]);\n\n\tif (seg.length > 1 && obj.owner && obj.name) {\n\t\tobj.repo = obj.owner + '/' + obj.name;\n\t} else {\n\t\tvar href = obj.href.split(':');\n\t\tif (href.length === 2 && obj.href.indexOf('//') === -1) {\n\t\t\tobj.repo = obj.repo || href[href.length - 1];\n\t\t\tvar repoSegments = obj.repo.split('/');\n\t\t\tobj.owner = repoSegments[0];\n\t\t\tobj.name = repoSegments[1];\n\n\t\t} else {\n\t\t\tvar match = obj.href.match(/\\/([^/]*)$/);\n\t\t\tobj.owner = match ? match[1] : null;\n\t\t\tobj.repo = null;\n\t\t}\n\n\t\tif (obj.repo && (!obj.owner || !obj.name)) {\n\t\t\tvar segs = obj.repo.split('/');\n\t\t\tif (segs.length === 2) {\n\t\t\t\tobj.owner = segs[0];\n\t\t\t\tobj.name = segs[1];\n\t\t\t}\n\t\t}\n\t}\n\n\tif (!obj.branch) {\n\t\tobj.branch = seg[2] || getBranch(obj.path, obj);\n\t\tif (seg.length > 3) {\n\t\t\tobj.filepath = seg.slice(3).join('/');\n\t\t}\n\t}\n\n\tobj.host = obj.host || 'github.com';\n\tobj.owner = obj.owner || null;\n\tobj.name = obj.name || null;\n\tobj.repository = obj.repo;\n\treturn obj;\n}\n\nmodule.exports = function parseGithubUrl(str) {\n\tif (!cache[str]) {\n\t\tcache[str] = parse(str);\n\t}\n\treturn cache[str];\n};\n","import { execSync } from 'node:child_process'\nimport parseGithubUrl from 'parse-github-url'\nimport type { GitContext } from './types/git.js'\n\nexport function inferGitContext(): GitContext {\n if (!isGitRepository()) {\n throw new Error('Not git repository detected.')\n }\n\n const remoteUrl = getRemoteUrl()\n\n const parsed = parseGithubUrl(remoteUrl)\n if (!parsed || !parsed.owner || !parsed.repo) {\n throw new Error(\n `Could not parse GitHub URL: ${remoteUrl}. Expected format: https://github.com/owner/repo or git@github.com:owner/repo`\n )\n }\n\n const { owner, repo } = parsed\n\n const sha = getCurrentSha()\n\n // repo is parsed as owner/repo but we want to use just the repo name\n const repoName = repo.replace(`${owner}/`, '')\n\n return { owner, repo: repoName, sha }\n}\n\nfunction isGitRepository(): boolean {\n try {\n execSync('git rev-parse --git-dir', { stdio: 'ignore' })\n return true\n } catch {\n return false\n }\n}\n\nfunction getRemoteUrl(): string {\n try {\n const remoteUrl = execSync('git remote get-url origin', {\n encoding: 'utf8',\n stdio: 'pipe'\n }).trim()\n\n if (!remoteUrl) {\n throw new Error('No origin remote found')\n }\n\n return remoteUrl\n } catch {\n throw new Error(\n 'Could not determine git remote URL. Please ensure you have an origin remote configured.'\n )\n }\n}\n\nfunction getCurrentSha(): string {\n try {\n return execSync('git rev-parse HEAD', {\n encoding: 'utf8',\n stdio: 'pipe'\n }).trim()\n } catch {\n throw new Error('Could not determine current commit SHA')\n }\n}\n","#!/usr/bin/env node\n\nimport { parseArgs } from 'node:util'\n\nimport { requestAudit } from './api.js'\nimport { inferGitContext } from './git.js'\n\nconst options = {\n url: {\n type: 'string' as const,\n required: true\n },\n token: {\n type: 'string' as const,\n required: true,\n default: process.env.XCELERA_TOKEN\n }\n}\n\nconst { positionals, values } = parseArgs({\n options,\n allowPositionals: true,\n args: process.argv.slice(2)\n})\n\nconst command = positionals[0]\n\nif (!command) {\n console.error('A command is required. Only \"audit\" is currently supported.')\n printHelp()\n process.exit(1)\n}\n\nif (command === 'help') {\n printHelp()\n}\n\nif (command !== 'audit') {\n console.error('Invalid command. Only \"audit\" is currently supported.')\n printHelp()\n process.exit(1)\n}\n\nconst { url, token } = values\n\nif (!url) {\n console.error('URL is required. Use --url <url> to specify the URL to audit.')\n process.exit(1)\n}\n\nif (!token) {\n console.error(\n 'A token is required. Use --token or set XCELERA_TOKEN environment variable.'\n )\n process.exit(1)\n}\n\ntry {\n const githubContext = inferGitContext()\n console.log('🔍 Inferred GitHub context:')\n console.log(` • repository: ${githubContext.owner}/${githubContext.repo}`)\n console.log(` • sha: ${githubContext.sha}`)\n console.log('')\n\n const response = await requestAudit(url, token, githubContext)\n if (!response.success) {\n const { message, details } = response.error\n console.error('❌ Unabled to schedule audit :(')\n console.error(` ↳ ${message}`)\n if (details) {\n console.error(` ↳ ${details}`)\n }\n process.exit(1)\n }\n const { auditId, status, integrations } = response.data\n\n console.log('✅ Audit scheduled successfully!')\n console.log(`Audit ID: ${auditId}`)\n console.log(`Status: ${status}`)\n if (integrations) {\n console.log('Integration detected:')\n console.log(` ↳ GitHub: ${integrations.github.installationId}`)\n console.log(` ↳ GitHub: ${integrations.github.checkRunId}`)\n console.log(` ↳ GitHub: ${integrations.github.hasRepoAccess}`)\n }\n} catch (error) {\n const errorMessage =\n error instanceof Error ? error.message : 'Unknown error occurred'\n console.error(`❌ ${errorMessage}`)\n process.exit(1)\n}\n\nfunction printHelp() {\n console.log('Usage: xcelera audit --url <url> [--token <token>]')\n console.log('')\n console.log('Options:')\n console.log(\n ' --token <token> The xcelera API token to use for authentication.'\n )\n console.log('Can also be set with the XCELERA_TOKEN environment variable.')\n console.log(' --url <url> The URL to audit.')\n console.log('')\n}\n"],"names":["parseGithubUrl"],"mappings":"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","x_google_ignoreList":[0,2]}
1
+ {"version":3,"file":"cli.js","sources":["../node_modules/is-network-error/index.js","../src/api.ts","../node_modules/parse-github-url/index.js","../src/git.ts","../src/cli.ts"],"sourcesContent":["const objectToString = Object.prototype.toString;\n\nconst isError = value => objectToString.call(value) === '[object Error]';\n\nconst errorMessages = new Set([\n\t'network error', // Chrome\n\t'Failed to fetch', // Chrome\n\t'NetworkError when attempting to fetch resource.', // Firefox\n\t'The Internet connection appears to be offline.', // Safari 16\n\t'Load failed', // Safari 17+\n\t'Network request failed', // `cross-fetch`\n\t'fetch failed', // Undici (Node.js)\n\t'terminated', // Undici (Node.js)\n]);\n\nexport default function isNetworkError(error) {\n\tconst isValid = error\n\t\t&& isError(error)\n\t\t&& error.name === 'TypeError'\n\t\t&& typeof error.message === 'string';\n\n\tif (!isValid) {\n\t\treturn false;\n\t}\n\n\t// We do an extra check for Safari 17+ as it has a very generic error message.\n\t// Network errors in Safari have no stack.\n\tif (error.message === 'Load failed') {\n\t\treturn error.stack === undefined;\n\t}\n\n\treturn errorMessages.has(error.message);\n}\n","import isNetworkError from 'is-network-error'\n\nimport type { GitContext } from './types/git.js'\nimport { ApiResponse, ErrorResponse, SuccessResponse } from './types/index.js'\n\ntype AuditData = {\n auditId: string\n status: string\n integrations: {\n github: {\n installationId?: number\n checkRunId?: number\n hasRepoAccess?: boolean\n }\n }\n}\n\ntype AuditError = {\n message: string\n details: string\n}\n\ntype AuditResponse = ApiResponse<AuditData, AuditError>\n\nexport async function requestAudit(\n url: string,\n token: string,\n github: GitContext\n): Promise<AuditResponse> {\n const apiUrl = `${getApiBaseUrl()}/api/v1/audit`\n\n try {\n const response = await fetch(apiUrl, {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json',\n Authorization: `Bearer ${token}`\n },\n body: JSON.stringify({\n url,\n github\n })\n })\n if (!response.ok) {\n // handle expected errors\n if (response.headers.get('content-type')?.includes('application/json')) {\n const errorResponse =\n (await response.json()) as ErrorResponse<AuditError>\n return errorResponse\n }\n // handle unexpected errors\n const errorText = await response.text()\n throw new Error(\n `Operation failed: ${response.status} ${response.statusText} - ${errorText}`\n )\n }\n\n const { data } = (await response.json()) as SuccessResponse<AuditData>\n return {\n success: true,\n data\n }\n } catch (error) {\n if (isNetworkError(error)) {\n return {\n success: false,\n error: {\n message: 'Network error',\n details: error.message\n }\n }\n }\n throw error\n }\n}\n\nfunction getApiBaseUrl(): string {\n if (process.env.NODE_ENV === 'development') {\n return 'http://localhost:3000'\n }\n return 'https://xcelera.dev'\n}\n","/*!\n * parse-github-url <https://github.com/jonschlinkert/parse-github-url>\n *\n * Copyright (c) 2015-2017, Jon Schlinkert.\n * Released under the MIT License.\n */\n\n'use strict';\n\nvar url = require('url');\nvar cache = { __proto__: null };\n\nfunction isChecksum(str) {\n\treturn (/^[a-f0-9]{40}$/i).test(str);\n}\n\nfunction getBranch(str, obj) {\n\tvar segs = str.split('#');\n\tvar branch;\n\tif (segs.length > 1) {\n\t\tbranch = segs[segs.length - 1];\n\t}\n\tif (!branch && obj.hash && obj.hash.charAt(0) === '#') {\n\t\tbranch = obj.hash.slice(1);\n\t}\n\treturn branch || 'master';\n}\n\nfunction trimSlash(path) {\n\treturn path.charAt(0) === '/' ? path.slice(1) : path;\n}\n\nfunction name(str) {\n\treturn str ? str.replace(/\\.git$/, '') : null;\n}\n\nfunction owner(str) {\n\tif (!str) {\n\t\treturn null;\n\t}\n\tvar idx = str.indexOf(':');\n\tif (idx > -1) {\n\t\treturn str.slice(idx + 1);\n\t}\n\treturn str;\n}\n\nfunction parse(str) {\n\tif (typeof str !== 'string' || !str.length) {\n\t\treturn null;\n\t}\n\n\tif (str.indexOf('git@gist') !== -1 || str.indexOf('//gist') !== -1) {\n\t\treturn null;\n\t}\n\n\t// parse the URL\n\tvar obj = url.parse(str);\n\tif (typeof obj.path !== 'string' || !obj.path.length || typeof obj.pathname !== 'string' || !obj.pathname.length) {\n\t\treturn null;\n\t}\n\n\tif (!obj.host && (/^git@/).test(str) === true) {\n\t\t// return the correct host for git@ URLs\n\t\tobj.host = url.parse('http://' + str.replace(/git@([^:]+):/, '$1/')).host;\n\t}\n\n\tobj.path = trimSlash(obj.path);\n\tobj.pathname = trimSlash(obj.pathname);\n\tobj.filepath = null;\n\n\tif (obj.path.indexOf('repos') === 0) {\n\t\tobj.path = obj.path.slice(6);\n\t}\n\n\tvar seg = obj.path.split('/').filter(Boolean);\n\tvar hasBlob = seg[2] === 'blob';\n\tif (hasBlob && !isChecksum(seg[3])) {\n\t\tobj.branch = seg[3];\n\t\tif (seg.length > 4) {\n\t\t\tobj.filepath = seg.slice(4).join('/');\n\t\t}\n\t}\n\n\tvar blob = str.indexOf('blob');\n\tif (hasBlob && blob !== -1) {\n\t\tobj.blob = str.slice(blob + 5);\n\t}\n\n\tvar hasTree = seg[2] === 'tree';\n\tvar tree = str.indexOf('tree');\n\tif (hasTree && tree !== -1) {\n\t\tvar idx = tree + 5;\n\t\tvar branch = str.slice(idx);\n\t\tvar slash = branch.indexOf('/');\n\t\tif (slash !== -1) {\n\t\t\tbranch = branch.slice(0, slash);\n\t\t}\n\t\tobj.branch = branch;\n\t}\n\n\tobj.owner = owner(seg[0]);\n\tobj.name = name(seg[1]);\n\n\tif (seg.length > 1 && obj.owner && obj.name) {\n\t\tobj.repo = obj.owner + '/' + obj.name;\n\t} else {\n\t\tvar href = obj.href.split(':');\n\t\tif (href.length === 2 && obj.href.indexOf('//') === -1) {\n\t\t\tobj.repo = obj.repo || href[href.length - 1];\n\t\t\tvar repoSegments = obj.repo.split('/');\n\t\t\tobj.owner = repoSegments[0];\n\t\t\tobj.name = repoSegments[1];\n\n\t\t} else {\n\t\t\tvar match = obj.href.match(/\\/([^/]*)$/);\n\t\t\tobj.owner = match ? match[1] : null;\n\t\t\tobj.repo = null;\n\t\t}\n\n\t\tif (obj.repo && (!obj.owner || !obj.name)) {\n\t\t\tvar segs = obj.repo.split('/');\n\t\t\tif (segs.length === 2) {\n\t\t\t\tobj.owner = segs[0];\n\t\t\t\tobj.name = segs[1];\n\t\t\t}\n\t\t}\n\t}\n\n\tif (!obj.branch) {\n\t\tobj.branch = seg[2] || getBranch(obj.path, obj);\n\t\tif (seg.length > 3) {\n\t\t\tobj.filepath = seg.slice(3).join('/');\n\t\t}\n\t}\n\n\tobj.host = obj.host || 'github.com';\n\tobj.owner = obj.owner || null;\n\tobj.name = obj.name || null;\n\tobj.repository = obj.repo;\n\treturn obj;\n}\n\nmodule.exports = function parseGithubUrl(str) {\n\tif (!cache[str]) {\n\t\tcache[str] = parse(str);\n\t}\n\treturn cache[str];\n};\n","import { execSync } from 'node:child_process'\nimport parseGithubUrl from 'parse-github-url'\nimport type { GitContext } from './types/git.js'\n\nexport function inferGitContext(): GitContext {\n if (!isGitRepository()) {\n throw new Error('Not git repository detected.')\n }\n\n const remoteUrl = getRemoteUrl()\n\n const parsed = parseGithubUrl(remoteUrl)\n if (!parsed || !parsed.owner || !parsed.repo) {\n throw new Error(\n `Could not parse GitHub URL: ${remoteUrl}. Expected format: https://github.com/owner/repo or git@github.com:owner/repo`\n )\n }\n\n const { owner, repo } = parsed\n\n const sha = getCurrentSha()\n\n // repo is parsed as owner/repo but we want to use just the repo name\n const repoName = repo.replace(`${owner}/`, '')\n\n return { owner, repo: repoName, sha }\n}\n\nfunction isGitRepository(): boolean {\n try {\n execSync('git rev-parse --git-dir', { stdio: 'ignore' })\n return true\n } catch {\n return false\n }\n}\n\nfunction getRemoteUrl(): string {\n try {\n const remoteUrl = execSync('git remote get-url origin', {\n encoding: 'utf8',\n stdio: 'pipe'\n }).trim()\n\n if (!remoteUrl) {\n throw new Error('No origin remote found')\n }\n\n return remoteUrl\n } catch {\n throw new Error(\n 'Could not determine git remote URL. Please ensure you have an origin remote configured.'\n )\n }\n}\n\nfunction getCurrentSha(): string {\n try {\n return execSync('git rev-parse HEAD', {\n encoding: 'utf8',\n stdio: 'pipe'\n }).trim()\n } catch {\n throw new Error('Could not determine current commit SHA')\n }\n}\n","#!/usr/bin/env node\n\nimport { parseArgs } from 'node:util'\n\nimport { requestAudit } from './api.js'\nimport { inferGitContext } from './git.js'\n\nconst options = {\n url: {\n type: 'string' as const,\n required: true\n },\n token: {\n type: 'string' as const,\n required: true,\n default: process.env.XCELERA_TOKEN\n }\n}\n\nconst { positionals, values } = parseArgs({\n options,\n allowPositionals: true,\n args: process.argv.slice(2)\n})\n\nconst command = positionals[0]\n\nif (!command) {\n console.error('A command is required. Only \"audit\" is currently supported.')\n printHelp()\n process.exit(1)\n}\n\nif (command === 'help') {\n printHelp()\n}\n\nif (command !== 'audit') {\n console.error('Invalid command. Only \"audit\" is currently supported.')\n printHelp()\n process.exit(1)\n}\n\nconst { url, token } = values\n\nif (!url) {\n console.error('URL is required. Use --url <url> to specify the URL to audit.')\n process.exit(1)\n}\n\nif (!token) {\n console.error(\n 'A token is required. Use --token or set XCELERA_TOKEN environment variable.'\n )\n process.exit(1)\n}\n\ntry {\n const githubContext = inferGitContext()\n console.log('🔍 Inferred GitHub context:')\n console.log(` • repository: ${githubContext.owner}/${githubContext.repo}`)\n console.log(` • sha: ${githubContext.sha}`)\n console.log('')\n\n const response = await requestAudit(url, token, githubContext)\n if (!response.success) {\n const { message, details } = response.error\n console.error('❌ Unable to schedule audit :(')\n console.error(` ↳ ${message}`)\n if (details) {\n console.error(` ↳ ${details}`)\n }\n process.exit(1)\n }\n const { auditId, status, integrations } = response.data\n\n console.log('✅ Audit scheduled successfully!')\n if (process.env.DEBUG) {\n console.log(`Audit ID: ${auditId}`)\n console.log(`Status: ${status}`)\n }\n if (integrations && integrations.github) {\n console.log('GitHub integration detected')\n const { installationId, hasRepoAccess } = integrations.github\n if (installationId && !hasRepoAccess) {\n console.log(\n 'Warning: The xcelera.dev Github app is installed, but it does not have repository access.'\n )\n }\n\n if (process.env.DEBUG) {\n console.log(` ↳ installation ID: ${integrations.github.installationId}`)\n console.log(` ↳ check run ID: ${integrations.github.checkRunId}`)\n console.log(\n ` ↳ installation has repo access: ${integrations.github.hasRepoAccess}`\n )\n }\n }\n} catch (error) {\n const errorMessage =\n error instanceof Error ? error.message : 'Unknown error occurred'\n console.error(`❌ ${errorMessage}`)\n process.exit(1)\n}\n\nfunction printHelp() {\n console.log('Usage: xcelera audit --url <url> [--token <token>]')\n console.log('')\n console.log('Options:')\n console.log(\n ' --token <token> The xcelera API token to use for authentication.'\n )\n console.log('Can also be set with the XCELERA_TOKEN environment variable.')\n console.log(' --url <url> The URL to audit.')\n console.log('')\n}\n"],"names":["parseGithubUrl"],"mappings":"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","x_google_ignoreList":[0,2]}
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@xcelera/cli",
3
3
  "description": "CLI for xcelera.dev",
4
- "version": "1.5.0",
4
+ "version": "1.6.0",
5
5
  "author": "",
6
6
  "type": "module",
7
7
  "repository": {