From 0a684186658984c95b94a74fb836f130d9ed704e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Petar=20Vujovi=C4=87?= Date: Mon, 28 Nov 2022 16:41:13 +0100 Subject: [PATCH] fix: Fix logging (#311) Use local instances of signale to scope them to commands and make them interactive --- examples/src/cross-contract-call-loop.js | 2 +- jsconfig.json | 4 --- lib/cli/cli.d.ts | 2 +- lib/cli/cli.js | 31 +++++++++------- src/cli/cli.ts | 45 +++++++++++++++--------- tsconfig.json | 3 +- 6 files changed, 49 insertions(+), 38 deletions(-) delete mode 100644 jsconfig.json diff --git a/examples/src/cross-contract-call-loop.js b/examples/src/cross-contract-call-loop.js index 44fdfcc94..bd46e6d71 100644 --- a/examples/src/cross-contract-call-loop.js +++ b/examples/src/cross-contract-call-loop.js @@ -9,7 +9,7 @@ const NO_ARGS = ""; const THIRTY_TGAS = BigInt("30" + "0".repeat(12)); @NearBindgen({}) -class LoopXCC { +export class LoopXCC { constructor() { this.count = 0; } diff --git a/jsconfig.json b/jsconfig.json deleted file mode 100644 index 43c5eea40..000000000 --- a/jsconfig.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "exclude": ["node_modules"], - "include": ["cli"] -} diff --git a/lib/cli/cli.d.ts b/lib/cli/cli.d.ts index deb0b7f91..e700dbc88 100644 --- a/lib/cli/cli.d.ts +++ b/lib/cli/cli.d.ts @@ -5,7 +5,7 @@ export declare function validateCom(source: string, { verbose }: { export declare function checkTypescriptCom(source: string, { verbose }: { verbose: boolean; }): Promise; -export declare function createJsFileWithRullupCom(source: string, target: string, { verbose }: { +export declare function createJsFileWithRollupCom(source: string, target: string, { verbose }: { verbose: boolean; }): Promise; export declare function transpileJsAndBuildWasmCom(target: string, { verbose }: { diff --git a/lib/cli/cli.js b/lib/cli/cli.js index 3a650f604..e96ff1459 100755 --- a/lib/cli/cli.js +++ b/lib/cli/cli.js @@ -42,7 +42,7 @@ program .argument("[source]", "Contract to build.", "src/index.js") .argument("[target]", "Target file path and name. The default corresponds to contract.js", "build/contract.wasm") .option("--verbose", "Whether to print more verbose output.", false) - .action(createJsFileWithRullupCom)) + .action(createJsFileWithRollupCom)) .addCommand(new Command("transpileJsAndBuildWasm") .usage("[source] [target]") .description("Transpiles the target javascript file into .c and .h using QJSC then compiles that into wasm using clang") @@ -84,46 +84,51 @@ function ensureTargetDirExists(target) { fs.mkdirSync(targetDir, {}); } export async function validateCom(source, { verbose = false }) { - signal.await(`Validating ${source} contract...`); + const signale = new Signale({ scope: "validate", interactive: !verbose }); + signale.await(`Validating ${source} contract...`); if (!await validateContract(source, verbose)) { process.exit(1); } } export async function checkTypescriptCom(source, { verbose = false }) { + const signale = new Signale({ scope: "checkTypescript", interactive: !verbose }); const sourceExt = source.split(".").pop(); if (sourceExt !== "ts") { - signal.info(`Source file is not a typescript file ${source}`); + signale.info(`Source file is not a typescript file ${source}`); return; } - signal.await(`Typechecking ${source} with tsc...`); + signale.await(`Typechecking ${source} with tsc...`); await checkTsBuildWithTsc(source, verbose); } -export async function createJsFileWithRullupCom(source, target, { verbose = false }) { +export async function createJsFileWithRollupCom(source, target, { verbose = false }) { + const signale = new Signale({ scope: "createJsFileWithRollup", interactive: !verbose }); requireTargetExt(target); ensureTargetDirExists(target); - signal.await(`Creating ${source} file with Rollup...`); + signale.await(`Creating ${source} file with Rollup...`); await createJsFileWithRullup(source, getRollupTarget(target), verbose); } export async function transpileJsAndBuildWasmCom(target, { verbose = false }) { + const signale = new Signale({ scope: "transpileJsAndBuildWasm", interactive: !verbose }); requireTargetExt(target); ensureTargetDirExists(target); - signal.await(`Creating ${getQjscTarget(target)} file with QJSC...`); + signale.await(`Creating ${getQjscTarget(target)} file with QJSC...`); await createHeaderFileWithQjsc(getRollupTarget(target), getQjscTarget(target), verbose); - signal.await("Generating methods.h file..."); + signale.await("Generating methods.h file..."); await createMethodsHeaderFile(getRollupTarget(target), verbose); - signal.await(`Creating ${getContractTarget(target)} contract...`); + signale.await(`Creating ${getContractTarget(target)} contract...`); await createWasmContract(getQjscTarget(target), getContractTarget(target), verbose); - signal.await("Executing wasi-stub..."); + signale.await("Executing wasi-stub..."); await wasiStubContract(getContractTarget(target), verbose); - signal.success(`Generated ${getContractTarget(target)} contract successfully!`); + signale.success(`Generated ${getContractTarget(target)} contract successfully!`); } export async function buildCom(source, target, { verbose = false }) { + const signale = new Signale({ scope: "build", interactive: !verbose }); requireTargetExt(target); - signal.await(`Building ${source} contract...`); + signale.await(`Building ${source} contract...`); await checkTypescriptCom(source, { verbose }); ensureTargetDirExists(target); await validateCom(source, { verbose }); - await createJsFileWithRullupCom(source, target, { verbose }); + await createJsFileWithRollupCom(source, target, { verbose }); await transpileJsAndBuildWasmCom(target, { verbose }); } async function checkTsBuildWithTsc(sourceFileWithPath, verbose = false) { diff --git a/src/cli/cli.ts b/src/cli/cli.ts index 9d959311b..bf5528f94 100644 --- a/src/cli/cli.ts +++ b/src/cli/cli.ts @@ -55,7 +55,7 @@ program .argument("[source]", "Contract to build.", "src/index.js") .argument("[target]", "Target file path and name. The default corresponds to contract.js", "build/contract.wasm") .option("--verbose", "Whether to print more verbose output.", false) - .action(createJsFileWithRullupCom) + .action(createJsFileWithRollupCom) ) .addCommand( new Command("transpileJsAndBuildWasm") @@ -83,7 +83,7 @@ function getRollupTarget(target: string): string { return `${getTargetDir(target)}/${getTargetFileName(target)}.js` } -function getQjscTarget(target:string): string { +function getQjscTarget(target: string): string { return `${getTargetDir(target)}/${getTargetFileName(target)}.h`; } @@ -112,50 +112,59 @@ function ensureTargetDirExists(target: string): void { fs.mkdirSync(targetDir, {}); } -export async function validateCom(source: string, { verbose = false}: {verbose: boolean}): Promise { - signal.await(`Validating ${source} contract...`); +export async function validateCom(source: string, { verbose = false }: { verbose: boolean }): Promise { + const signale = new Signale({ scope: "validate", interactive: !verbose }); + + signale.await(`Validating ${source} contract...`); + if (!await validateContract(source, verbose)) { process.exit(1); } } -export async function checkTypescriptCom(source: string, { verbose = false}: {verbose: boolean}): Promise { +export async function checkTypescriptCom(source: string, { verbose = false }: { verbose: boolean }): Promise { + const signale = new Signale({ scope: "checkTypescript", interactive: !verbose }); + const sourceExt = source.split(".").pop(); if (sourceExt !== "ts") { - signal.info(`Source file is not a typescript file ${source}`) + signale.info(`Source file is not a typescript file ${source}`) return; } - signal.await(`Typechecking ${source} with tsc...`); + signale.await(`Typechecking ${source} with tsc...`); await checkTsBuildWithTsc(source, verbose); } -export async function createJsFileWithRullupCom(source: string, target: string, { verbose = false}: {verbose: boolean}): Promise { +export async function createJsFileWithRollupCom(source: string, target: string, { verbose = false }: { verbose: boolean }): Promise { + const signale = new Signale({ scope: "createJsFileWithRollup", interactive: !verbose }); + requireTargetExt(target); ensureTargetDirExists(target); - signal.await(`Creating ${source} file with Rollup...`); + signale.await(`Creating ${source} file with Rollup...`); await createJsFileWithRullup(source, getRollupTarget(target), verbose); } -export async function transpileJsAndBuildWasmCom(target: string, { verbose = false}: {verbose: boolean}): Promise { +export async function transpileJsAndBuildWasmCom(target: string, { verbose = false }: { verbose: boolean }): Promise { + const signale = new Signale({ scope: "transpileJsAndBuildWasm", interactive: !verbose }); + requireTargetExt(target); ensureTargetDirExists(target); - signal.await(`Creating ${getQjscTarget(target)} file with QJSC...`); + signale.await(`Creating ${getQjscTarget(target)} file with QJSC...`); await createHeaderFileWithQjsc(getRollupTarget(target), getQjscTarget(target), verbose); - signal.await("Generating methods.h file..."); + signale.await("Generating methods.h file..."); await createMethodsHeaderFile(getRollupTarget(target), verbose); - signal.await(`Creating ${getContractTarget(target)} contract...`); + signale.await(`Creating ${getContractTarget(target)} contract...`); await createWasmContract(getQjscTarget(target), getContractTarget(target), verbose); - signal.await("Executing wasi-stub..."); + signale.await("Executing wasi-stub..."); await wasiStubContract(getContractTarget(target), verbose); - signal.success(`Generated ${getContractTarget(target)} contract successfully!`); + signale.success(`Generated ${getContractTarget(target)} contract successfully!`); } export async function buildCom( @@ -163,9 +172,11 @@ export async function buildCom( target: string, { verbose = false }: { verbose: boolean } ): Promise { + const signale = new Signale({ scope: "build", interactive: !verbose }); + requireTargetExt(target); - signal.await(`Building ${source} contract...`); + signale.await(`Building ${source} contract...`); await checkTypescriptCom(source, { verbose }); @@ -173,7 +184,7 @@ export async function buildCom( await validateCom(source, { verbose }); - await createJsFileWithRullupCom(source, target, { verbose }); + await createJsFileWithRollupCom(source, target, { verbose }); await transpileJsAndBuildWasmCom(target, { verbose }); } diff --git a/tsconfig.json b/tsconfig.json index 5f7397490..b9ba6dcdd 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -27,6 +27,5 @@ "src/build-tools/include-bytes.ts", "src/cli/cli.ts", "src/cli/post-install.ts" - ], - "exclude": ["src/cli/**/*"] + ] }