From aa78c1105e7b6b74d6185cc33daa42f93ccbea58 Mon Sep 17 00:00:00 2001 From: Florian Dold Date: Tue, 2 Nov 2021 16:20:39 +0100 Subject: anastasis-core: provide reducer CLI, refactor state machine --- packages/anastasis-core/src/cli.ts | 64 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 64 insertions(+) create mode 100644 packages/anastasis-core/src/cli.ts (limited to 'packages/anastasis-core/src/cli.ts') diff --git a/packages/anastasis-core/src/cli.ts b/packages/anastasis-core/src/cli.ts new file mode 100644 index 000000000..5ab7af6db --- /dev/null +++ b/packages/anastasis-core/src/cli.ts @@ -0,0 +1,64 @@ +import { clk } from "@gnu-taler/taler-util"; +import { + getBackupStartState, + getRecoveryStartState, + reduceAction, +} from "./index.js"; +import fs from "fs"; + +export const reducerCli = clk + .program("reducer", { + help: "Command line interface for the GNU Taler wallet.", + }) + .flag("initBackup", ["-b", "--backup"]) + .flag("initRecovery", ["-r", "--restore"]) + .maybeOption("argumentsJson", ["-a", "--arguments"], clk.STRING) + .maybeArgument("action", clk.STRING) + .maybeArgument("stateFile", clk.STRING); + +async function read(stream: NodeJS.ReadStream): Promise { + const chunks = []; + for await (const chunk of stream) { + chunks.push(chunk); + } + return Buffer.concat(chunks).toString("utf8"); +} + +reducerCli.action(async (x) => { + if (x.reducer.initBackup) { + console.log(JSON.stringify(await getBackupStartState())); + return; + } else if (x.reducer.initRecovery) { + console.log(JSON.stringify(await getRecoveryStartState())); + return; + } + + const action = x.reducer.action; + if (!action) { + console.log("action required"); + return; + } + + let lastState: any; + if (x.reducer.stateFile) { + const s = fs.readFileSync(x.reducer.stateFile, { encoding: "utf-8" }); + lastState = JSON.parse(s); + } else { + const s = await read(process.stdin); + lastState = JSON.parse(s); + } + + let args: any; + if (x.reducer.argumentsJson) { + args = JSON.parse(x.reducer.argumentsJson); + } else { + args = {}; + } + + const nextState = await reduceAction(lastState, action, args); + console.log(JSON.stringify(nextState)); +}); + +export function reducerCliMain() { + reducerCli.run(); +} -- cgit v1.2.3 From 83b63d1cc076dced82a235d7ca37ff04357ddb73 Mon Sep 17 00:00:00 2001 From: Sebastian Date: Tue, 2 Nov 2021 12:44:22 -0300 Subject: FIXING: Insufficient Rollup version: @rollup/plugin-commonjs requires at least rollup@2.38 but found rollup@2.37.1. --- packages/anastasis-core/src/cli.ts | 2 +- packages/taler-wallet-core/package.json | 2 +- pnpm-lock.yaml | 24 ++++++++++++++++++++---- 3 files changed, 22 insertions(+), 6 deletions(-) (limited to 'packages/anastasis-core/src/cli.ts') diff --git a/packages/anastasis-core/src/cli.ts b/packages/anastasis-core/src/cli.ts index 5ab7af6db..517f2876d 100644 --- a/packages/anastasis-core/src/cli.ts +++ b/packages/anastasis-core/src/cli.ts @@ -8,7 +8,7 @@ import fs from "fs"; export const reducerCli = clk .program("reducer", { - help: "Command line interface for the GNU Taler wallet.", + help: "Command line interface for Anastasis.", }) .flag("initBackup", ["-b", "--backup"]) .flag("initRecovery", ["-r", "--restore"]) diff --git a/packages/taler-wallet-core/package.json b/packages/taler-wallet-core/package.json index 0d726a6d7..d8b344f2c 100644 --- a/packages/taler-wallet-core/package.json +++ b/packages/taler-wallet-core/package.json @@ -54,7 +54,7 @@ "po2json": "^0.4.5", "prettier": "^2.2.1", "rimraf": "^3.0.2", - "rollup": "^2.37.1", + "rollup": "^2.38", "rollup-plugin-sourcemaps": "^0.6.3", "source-map-resolve": "^0.6.0", "typedoc": "^0.20.16", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index ed921a04c..4126ee854 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -245,7 +245,7 @@ importers: po2json: ^0.4.5 prettier: ^2.2.1 rimraf: ^3.0.2 - rollup: ^2.37.1 + rollup: ^2.38 rollup-plugin-sourcemaps: ^0.6.3 source-map-resolve: ^0.6.0 source-map-support: ^0.5.19 @@ -279,8 +279,8 @@ importers: po2json: 0.4.5 prettier: 2.2.1 rimraf: 3.0.2 - rollup: 2.37.1 - rollup-plugin-sourcemaps: 0.6.3_38ff52cc32daa1ae80c428f8a47a4e22 + rollup: 2.59.0 + rollup-plugin-sourcemaps: 0.6.3_57eeb328ceff0756ae1d32f4d22d60f9 source-map-resolve: 0.6.0 typedoc: 0.20.16_typescript@4.1.3 typescript: 4.1.3 @@ -5625,7 +5625,7 @@ packages: dependencies: '@types/estree': 0.0.39 estree-walker: 1.0.1 - picomatch: 2.3.0 + picomatch: 2.2.2 rollup: 2.59.0 dev: true @@ -20348,6 +20348,22 @@ packages: source-map-resolve: 0.6.0 dev: true + /rollup-plugin-sourcemaps/0.6.3_57eeb328ceff0756ae1d32f4d22d60f9: + resolution: {integrity: sha512-paFu+nT1xvuO1tPFYXGe+XnQvg4Hjqv/eIhG8i5EspfYYPBKL57X7iVbfv55aNVASg3dzWvES9dmWsL2KhfByw==} + engines: {node: '>=10.0.0'} + peerDependencies: + '@types/node': '>=10.0.0' + rollup: '>=0.31.2' + peerDependenciesMeta: + '@types/node': + optional: true + dependencies: + '@rollup/pluginutils': 3.1.0_rollup@2.59.0 + '@types/node': 14.14.22 + rollup: 2.59.0 + source-map-resolve: 0.6.0 + dev: true + /rollup-plugin-sourcemaps/0.6.3_6efbbae6640434994627e0ab519821c6: resolution: {integrity: sha512-paFu+nT1xvuO1tPFYXGe+XnQvg4Hjqv/eIhG8i5EspfYYPBKL57X7iVbfv55aNVASg3dzWvES9dmWsL2KhfByw==} engines: {node: '>=10.0.0'} -- cgit v1.2.3