src/init/OptionsValidator.js
import validatePackageName from 'validate-npm-package-name';
/**
* A static class containing validators for the options used when running "atscm init".
*/
export default class InitOptionsValidator {
/**
* Validates a project name to be a valid npm package name.
* @param {string} value The name to validate.
* @return {boolean|string} Returns true if `value` is a valid npm package name, or an error
* message otherwise.
*/
static name(value) {
const result = validatePackageName(value);
if (result.errors) {
return result.errors[0];
}
// First letter must be a letter
if (value.match(/^@?[a-z]+/i) === null) {
return 'name must start with a letter';
}
if (value === 'atscm') {
return "'atscm' is not allowed";
}
return result.validForNewPackages ? true : result.warnings[0];
}
}