2018-10-19 01:10:21 +02:00
|
|
|
import { getSolidpkg, ISolidSimple, Product, verifyProductName } from 'ssn';
|
|
|
|
import failWithError from './failWithError';
|
|
|
|
|
|
|
|
const failFunction = failWithError.bind(null, 'node dist/getSolidpkg.js <product> <from> <to>');
|
|
|
|
|
|
|
|
if (process.argv.length !== 5) {
|
|
|
|
failFunction(`Expected 3 arguments but ${process.argv.length - 2} arguments were supplied.`);
|
|
|
|
}
|
|
|
|
|
|
|
|
//Check that product name is valid
|
|
|
|
const product = process.argv[2];
|
|
|
|
if (!verifyProductName(product)) {
|
|
|
|
failFunction(`"${product.substring(0, 300)}" is not a valid product name.`);
|
|
|
|
}
|
|
|
|
|
|
|
|
//Check that from and to are valid numbers
|
|
|
|
const from = process.argv[3];
|
|
|
|
const to = process.argv[4];
|
|
|
|
if (!from.match(/^(-1|0|[1-9][0-9]{0,2})$/)) {
|
|
|
|
failFunction(`from value "${from.substring(0, 300)}" is not a valid integer; it must be in range [-1, 999].`);
|
|
|
|
}
|
|
|
|
if (!to.match(/^(0|[1-9][0-9]{0,2})$/)) {
|
|
|
|
failFunction(`to value "${to.substring(0, 300)}" is not a valid integer; it must be in range [0, 999].`);
|
|
|
|
}
|
|
|
|
|
|
|
|
//Get solidpkg and write output to stdout
|
|
|
|
getSolidpkg(product as Product, Number(from), Number(to)).then((output: ISolidSimple) => {
|
|
|
|
process.stdout.write(JSON.stringify(output));
|
2018-10-21 04:13:32 +02:00
|
|
|
}).catch((error) => {
|
|
|
|
failFunction(error);
|
2018-10-19 01:10:21 +02:00
|
|
|
});
|