aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorFlorian Dold <florian@dold.me>2021-05-10 15:32:11 +0200
committerFlorian Dold <florian@dold.me>2021-05-10 15:32:20 +0200
commit8dc5384bdcb42069e6d2f35fd3f1878afd728766 (patch)
tree7610c6fb42a66ccc8868dbd02f0167002f607d99
parent9ffe187494c762f96afb65d4f53f52a9f75b65d2 (diff)
asset loading for integration tests
-rw-r--r--packages/taler-wallet-cli/assets/.gitkeep0
-rw-r--r--packages/taler-wallet-cli/src/assets.ts50
2 files changed, 50 insertions, 0 deletions
diff --git a/packages/taler-wallet-cli/assets/.gitkeep b/packages/taler-wallet-cli/assets/.gitkeep
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/packages/taler-wallet-cli/assets/.gitkeep
diff --git a/packages/taler-wallet-cli/src/assets.ts b/packages/taler-wallet-cli/src/assets.ts
new file mode 100644
index 000000000..465ee7e80
--- /dev/null
+++ b/packages/taler-wallet-cli/src/assets.ts
@@ -0,0 +1,50 @@
+/*
+ This file is part of GNU Taler
+ (C) 2021 Taler Systems S.A.
+
+ GNU Taler is free software; you can redistribute it and/or modify it under the
+ terms of the GNU General Public License as published by the Free Software
+ Foundation; either version 3, or (at your option) any later version.
+
+ GNU Taler is distributed in the hope that it will be useful, but WITHOUT ANY
+ WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
+ A PARTICULAR PURPOSE. See the GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License along with
+ GNU Taler; see the file COPYING. If not, see <http://www.gnu.org/licenses/>
+ */
+
+/**
+ * Imports.
+ */
+import path from "path";
+import fs from "fs";
+
+/**
+ * Resolve an asset name into an absolute filename.
+ *
+ * The asset file should be placed in the "assets" directory
+ * at the top level of the package (i.e. next to package.json).
+ */
+export function resolveAsset(name: string): string | null {
+ const n = __filename;
+ const d = __dirname;
+ let assetPath: string;
+ // Currently both asset paths are the same.
+ // This might change if the file that contains "resolveAsset"
+ // ever moves. Thus, we're keeping the case distinction.
+ if (n.endsWith("assets.js")) {
+ // We're not bundled. Path is relative to the current file.
+ assetPath = path.resolve(path.join(d, "..", "assets", name));
+ } else if (n.endsWith("taler-wallet-cli.js")) {
+ // We're bundled. Currently, this path is the same
+ // FIXME: Take into account some ASSETS environment variable?
+ assetPath = path.resolve(path.join(d, "..", "assets", name));
+ } else {
+ throw Error("Can't resolve asset (unknown )");
+ }
+ if (!fs.existsSync(assetPath)) {
+ throw Error(`Asset '${name} not found'`);
+ }
+ return assetPath;
+} \ No newline at end of file