🚚 Add command-line scripts from ssn repo
This commit is contained in:
parent
d37a12eac8
commit
e46faff11b
10 changed files with 160 additions and 6 deletions
7
src/failWithError.ts
Normal file
7
src/failWithError.ts
Normal file
|
@ -0,0 +1,7 @@
|
|||
export default function failWithError(usage: string, msg?: string) {
|
||||
if (msg !== undefined) {
|
||||
process.stderr.write(`Error: ${msg.trim()}\n`);
|
||||
}
|
||||
process.stderr.write(`Usage: ${usage} \n`);
|
||||
process.exit(1);
|
||||
}
|
20
src/getManifest.ts
Normal file
20
src/getManifest.ts
Normal file
|
@ -0,0 +1,20 @@
|
|||
import { getManifest, IManifest, Product, verifyProductName } from 'ssn';
|
||||
import failWithError from './failWithError';
|
||||
|
||||
const failFunction = failWithError.bind(null, 'node dist/getManifest.js <product>');
|
||||
|
||||
if (process.argv.length !== 3) {
|
||||
failFunction(`Expected 1 argument but ${process.argv.length - 2} arguments were supplied.`);
|
||||
}
|
||||
|
||||
//Check that product name is valid
|
||||
const product = process.argv[2];
|
||||
if (!verifyProductName(product)) {
|
||||
failFunction(`"${product} is not a valid product name.`);
|
||||
}
|
||||
|
||||
//Get manifest and write output to stdout
|
||||
getManifest(product as Product).then((output: IManifest) => {
|
||||
process.stdout.write(JSON.stringify(output));
|
||||
//process.exit(0);
|
||||
});
|
30
src/getSolidpkg.ts
Normal file
30
src/getSolidpkg.ts
Normal file
|
@ -0,0 +1,30 @@
|
|||
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));
|
||||
//process.exit(0);
|
||||
});
|
30
src/getSolidpkgZip.ts
Normal file
30
src/getSolidpkgZip.ts
Normal file
|
@ -0,0 +1,30 @@
|
|||
import { getSolidpkgZip, ISsnFileEntry, Product, verifyProductName } from 'ssn';
|
||||
import failWithError from './failWithError';
|
||||
|
||||
const failFunction = failWithError.bind(null, 'node dist/getSolidpkgZip.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's .zip file and write output to stdout
|
||||
getSolidpkgZip(product as Product, Number(from), Number(to)).then((output: ISsnFileEntry[]) => {
|
||||
process.stdout.write(JSON.stringify(output));
|
||||
//process.exit(0);
|
||||
});
|
|
@ -1 +0,0 @@
|
|||
//TODO
|
43
src/installPatch.ts
Normal file
43
src/installPatch.ts
Normal file
|
@ -0,0 +1,43 @@
|
|||
import { getPatch, Product, verifyProductName } from 'ssn';
|
||||
import failWithError from './failWithError';
|
||||
|
||||
const failFunction = failWithError.bind(null, 'node dist/installPatch.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].`);
|
||||
}
|
||||
|
||||
//TODO: set directory with existing patch data
|
||||
//TODO: set target directory where patch should be installed
|
||||
//TODO: set temp directory where patch files should be stored.
|
||||
//TODO: set location of xdelta3 executable
|
||||
//TODO: set from=any so it detects current version automatically (based on .version files)
|
||||
//TODO: set to=manifest/current to install whatever is the current version in manifest/on CDN
|
||||
|
||||
(async () => {
|
||||
await getPatch({
|
||||
/* tslint:disable:object-literal-sort-keys */
|
||||
product: product as Product,
|
||||
from: Number(from),
|
||||
to: Number(to),
|
||||
sourceDirectory: process.cwd(),
|
||||
targetDirectory: process.cwd(),
|
||||
/* tslint:enable:object-literal-sort-keys */
|
||||
});
|
||||
})();
|
16
src/tslint.json
Normal file
16
src/tslint.json
Normal file
|
@ -0,0 +1,16 @@
|
|||
{
|
||||
"defaultSeverity": "error",
|
||||
"extends": [
|
||||
"tslint:recommended"
|
||||
],
|
||||
"jsRules": {},
|
||||
"rules": {
|
||||
"comment-format": false,
|
||||
"indent": [true, "spaces", 2],
|
||||
"max-line-length": false,
|
||||
"no-bitwise": false,
|
||||
"no-console": false,
|
||||
"quotemark": [true, "single"]
|
||||
},
|
||||
"rulesDirectory": []
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue