mirror of
https://github.com/LukeHagar/vercel.git
synced 2025-12-11 04:22:13 +00:00
Create monorepo (#2812)
* Move now-cli to /packages/now-cli * Fix .gitignore paths * Add now-client * Add lerna to top level * Add scripts * Update codeowners * Fix `/now-cli/build.ts` script * Fix circleci path to artifacts * Use relative paths * Fix path to scripts * Add test-lint script * Add missing return type * Fix typo in test-lint * Fix string match in shell scripts * Fix path to hugo * Add package node_modules * Delete lock files in packages, use root yarn.lock * Add missing b.js file * Add test-integration-now-dev script * Add missing test files * Add missing integration test script * Add missing test files * Delete travis.yml * Fix ts-jest in now-client * Add support for Node 8 (ES2015 target) * Add support for Node 8 * Add polyfill for Node 8 * Fix polyfill for Node 8 * Only run coverage for now-cli * Add packages from now-builders * Run integration tests for builders * Add node_modules to cache * Add root readme.md * Move readme to top level * Add yarn bootstrap * Add bootstrap step * Add dist to `persist_to_workspace` * Fix 08-yarn-npm integration test * Remove duplicate path * Change stdio to inherit * Add back store_artifacts * testing - remove bootstrap step * Add back now-build-utils * Remove bootstrap step * Fix test again * Add console.log() * Fix lint * Use local ncc version * Install go * Revert changes to stdio and console.log() * Add missing now-go test * Add missing integration tests * Add --runInBand flag * Fix now-node-bridge persistence * Add missing symlinks * Add codeowners * Consolidate into single run.sh function * Run uniq * Fix typo * Change now-routing-utils to test-unit * Special case test for node 8 * Add docs from builders * Only run script for modified packages * Add test-integration-once which only runs once * Fix set intersection
This commit is contained in:
141
packages/now-cli/src/commands/certs/add.js
Normal file
141
packages/now-cli/src/commands/certs/add.js
Normal file
@@ -0,0 +1,141 @@
|
||||
import chalk from 'chalk';
|
||||
|
||||
import Now from '../../util';
|
||||
import Client from '../../util/client.ts';
|
||||
import getScope from '../../util/get-scope.ts';
|
||||
import stamp from '../../util/output/stamp.ts';
|
||||
import wait from '../../util/output/wait';
|
||||
import createCertFromFile from '../../util/certs/create-cert-from-file';
|
||||
import createCertForCns from '../../util/certs/create-cert-for-cns';
|
||||
|
||||
import {
|
||||
DomainPermissionDenied,
|
||||
InvalidCert,
|
||||
} from '../../util/errors-ts';
|
||||
import handleCertError from '../../util/certs/handle-cert-error';
|
||||
|
||||
async function add(ctx, opts, args, output) {
|
||||
const {
|
||||
authConfig: { token },
|
||||
config
|
||||
} = ctx;
|
||||
const { currentTeam } = config;
|
||||
const { apiUrl } = ctx;
|
||||
const addStamp = stamp();
|
||||
|
||||
let cert;
|
||||
|
||||
const {
|
||||
'--overwrite': overwite,
|
||||
'--debug': debugEnabled,
|
||||
'--crt': crtPath,
|
||||
'--key': keyPath,
|
||||
'--ca': caPath
|
||||
} = opts;
|
||||
|
||||
let contextName = null;
|
||||
const client = new Client({
|
||||
apiUrl,
|
||||
token,
|
||||
currentTeam,
|
||||
debug: debugEnabled
|
||||
});
|
||||
|
||||
try {
|
||||
({ contextName } = await getScope(client));
|
||||
} catch (err) {
|
||||
if (err.code === 'NOT_AUTHORIZED' || err.code === 'TEAM_DELETED') {
|
||||
output.error(err.message);
|
||||
return 1;
|
||||
}
|
||||
|
||||
throw err;
|
||||
}
|
||||
|
||||
// $FlowFixMe
|
||||
const now = new Now({ apiUrl, token, debug: debugEnabled, currentTeam });
|
||||
|
||||
if (overwite) {
|
||||
output.error('Overwrite option is deprecated');
|
||||
now.close();
|
||||
return 1;
|
||||
}
|
||||
|
||||
if (crtPath || keyPath || caPath) {
|
||||
if (args.length !== 0 || (!crtPath || !keyPath || !caPath)) {
|
||||
output.error(
|
||||
`Invalid number of arguments to create a custom certificate entry. Usage:`
|
||||
);
|
||||
output.print(
|
||||
` ${chalk.cyan(
|
||||
`now certs add --crt <domain.crt> --key <domain.key> --ca <ca.crt>`
|
||||
)}\n`
|
||||
);
|
||||
now.close();
|
||||
return 1;
|
||||
}
|
||||
|
||||
// Create a custom certificate from the given file paths
|
||||
cert = await createCertFromFile(now, keyPath, crtPath, caPath, contextName);
|
||||
if (cert instanceof InvalidCert) {
|
||||
output.error(`The provided certificate is not valid and can't be added.`);
|
||||
return 1;
|
||||
}
|
||||
if (cert instanceof DomainPermissionDenied) {
|
||||
output.error(
|
||||
`You don't have permissions over domain ${chalk.underline(
|
||||
cert.meta.domain
|
||||
)} under ${chalk.bold(cert.meta.context)}.`
|
||||
);
|
||||
return 1;
|
||||
}
|
||||
} else {
|
||||
output.warn(
|
||||
`${chalk.cyan(
|
||||
'now certs add'
|
||||
)} will be soon deprecated. Please use ${chalk.cyan(
|
||||
'now certs issue <cn> <cns>'
|
||||
)} instead`
|
||||
);
|
||||
if (args.length < 1) {
|
||||
output.error(
|
||||
`Invalid number of arguments to create a custom certificate entry. Usage:`
|
||||
);
|
||||
output.print(` ${chalk.cyan(`now certs add <cn>[, <cn>]`)}\n`);
|
||||
now.close();
|
||||
return 1;
|
||||
}
|
||||
|
||||
// Create the certificate from the given array of CNs
|
||||
const cns = args.reduce((res, item) => [...res, ...item.split(',')], []);
|
||||
const cancelWait = wait(
|
||||
`Generating a certificate for ${chalk.bold(cns.join(', '))}`
|
||||
);
|
||||
cert = await createCertForCns(now, cns, contextName);
|
||||
cancelWait();
|
||||
|
||||
const result = handleCertError(output, cert);
|
||||
if (result === 1) {
|
||||
return result
|
||||
}
|
||||
|
||||
if (cert instanceof DomainPermissionDenied) {
|
||||
output.error(
|
||||
`You don't have permissions over domain ${chalk.underline(
|
||||
cert.meta.domain
|
||||
)} under ${chalk.bold(cert.meta.context)}.`
|
||||
);
|
||||
return 1;
|
||||
}
|
||||
}
|
||||
|
||||
// Print success message
|
||||
output.success(
|
||||
`Certificate entry for ${chalk.bold(
|
||||
cert.cns.join(', ')
|
||||
)} created ${addStamp()}`
|
||||
);
|
||||
return 0;
|
||||
}
|
||||
|
||||
export default add;
|
||||
Reference in New Issue
Block a user