UNPKG

@ordino.ai/cli

Version:
147 lines (145 loc) 4.05 kB
const { execSync } = require('child_process') fs = require('fs') path = require('path') loadEnv() const baseURL = "{{OrdinoURL}}"; const args = process.argv.slice(2) function getFrameworkVersion() { const dir = path.join(__dirname, 'package.json') if (!fs.existsSync(dir)) { throw new Error('package.json file not found') } const packageJson = JSON.parse(fs.readFileSync(dir, 'utf8')) dependency = packageJson.devDependencies?.['@ordino.ai/ordino-engine'] if (!dependency) { throw new Error( '@ordino.ai/ordino-engine version not found in package.json' ) } return dependency } async function getToken(apiKey, frameworkVersion) { try { const res = await fetch( `${baseURL}/api/v1/npm-repo-external/${frameworkVersion}`, { method: 'GET', headers: { 'Content-Type': 'application/json', 'Spartify-Key': apiKey } } ) if (!res.ok) { throw new Error('HTTP error! Status: ' + res.status) } const resContent = await res.json(); if (resContent.extraInfo == null) { throw new Error('Empty token received') } return resContent.extraInfo } catch (error) { throw new Error( 'Your token may have expired or be incorrect. Kindly reach out to Ordino support for assistance.: ' + error.message ) } } async function getConfig() { const ordinoKey = process.env.ORDINO_KEY if (!ordinoKey) { throw new Error('API key is missing in environment variables') } const frameworkVersion = getFrameworkVersion() token = await getToken(ordinoKey, frameworkVersion); return { apiKey: ordinoKey, token: token, } } function deletePackageLock() { const packageLock = path.join(process.cwd(), 'package-lock.json') if (fs.existsSync(packageLock)) { try { fs.unlinkSync(packageLock) } catch (error) { process.exit(1) } } } async function runI() { try { deletePackageLock() const config = await getConfig() arguments = args .filter((filter) => filter !== '--initialize') .join(' ') execSync( 'npm install --registry=https://registry.npmjs.org/ --//registry.npmjs.org/:_authToken=' + config.token + ' ' + arguments, { stdio: 'inherit' } ) } catch (error) { console.error('Error during installation:', error.message) process.exit(1) } } async function runTest() { try { const arguments = args .filter((filter) => filter !== '--runTest') .join(' ') execSync('npx cypress run --config-file ordino.config.ts ' + arguments, { stdio: 'inherit', }) } catch (error) { console.error(error.message) } } async function openTest() { try { const arguments = args .filter((filter) => filter !== '--openTest') .join(' ') execSync('npx cypress open --config-file ordino.config.ts ' + arguments, { stdio: 'inherit', }) } catch (error) { console.error(error.message) } } function loadEnv(environment = '.env') { try { const envPath = path.resolve(environment) if (process.env.ORDINO_KEY && process.env.ORDINO_KEY != undefined && process.env.ORDINO_KEY != "$ORDINO_KEY") { console.log('Using environment variables from CI/CD.') return } if (fs.existsSync(envPath)) { const envContent = fs.readFileSync(envPath, 'utf8') envData = envContent.split('\n') envData.forEach((data) => { if (data.trim() && data.startsWith('ORDINO_KEY')) { const envKey = data.substr(0, data.indexOf('=')).trim(); const envValue = data.substr(data.indexOf('=')+1).trim(); process.env[envKey] = envValue; } }) } else { console.log('No .env file found. Using CI/CD environment variables.') } } catch (error) { console.error('Error loading .env file:', error.message) } } if (args.includes('--initialize')) { runI() } else { if (args.includes('--runTest')) { runTest() } else { args.includes('--openTest') && openTest() } }