Support reading package name from WSK_PACKAGE env var #10
diff --git a/README.md b/README.md
index d3b8943..7b79ffa 100644
--- a/README.md
+++ b/README.md
@@ -124,7 +124,7 @@
Add the configuration below to your [launch.json](https://code.visualstudio.com/docs/editor/debugging#_launch-configurations). Replace `MYACTION` with the name of your action and `ACTION.js` with the source file containing the action. When you run this, it will start wskdebug and should automatically connect the debugger.
-```
+```json
"configurations": [
{
"type": "node",
@@ -145,6 +145,41 @@
For troubleshooting, you can run the debugger in verbose mode by adding `"-v"` to the `args` array.
+#### Control wskprops credentials
+
+To use custom credentials from a custom `.wskprops` and/or use a developer-specific openwhisk package name, but avoid committing that into your source control system, you can use an `.env` file.
+
+1. Put this `.env` file in your VS Code project root:
+
+ ```
+ WSK_CONFIG_FILE=/Users/user/.wskprops-custom
+ WSK_PACKAGE=my-package
+ ```
+
+ Set either of the variables as needed.
+
+2. Make sure to not commit this file into source control, by e.g. adding `.env` to a `.gitignore` file.
+
+2. Add an `envFile` setting to the `.vscode/launch.json`, which you can share with co-workers and commit to source control:
+
+ ```json
+ "configurations": [
+ {
+ "type": "node",
+ "request": "launch",
+ "name": "wskdebug",
+ "runtimeExecutable": "wskdebug",
+ "args": [ "MYACTION", "ACTION.js", "-l" ],
+ "localRoot": "${workspaceFolder}",
+ "remoteRoot": "/code",
+ "outputCapture": "std",
+ "envFile": "${workspaceFolder}/.env"
+ }
+ ]
+ ```
+
+
+
<a name="nodejs-multiple-actions"></a>
### Node.js: Multiple actions
diff --git a/examples/nodejs/.env b/examples/nodejs/.env
new file mode 100644
index 0000000..d2c1e30
--- /dev/null
+++ b/examples/nodejs/.env
@@ -0,0 +1,2 @@
+WSK_PACKAGE=wskdebug-examples
+#WSK_CONFIG_FILE=<absolute-path-to-custom-wskprops>
diff --git a/examples/nodejs/.vscode/launch.json b/examples/nodejs/.vscode/launch.json
index aeb9f4e..47501f7 100644
--- a/examples/nodejs/.vscode/launch.json
+++ b/examples/nodejs/.vscode/launch.json
@@ -49,7 +49,19 @@
"localRoot": "${workspaceFolder}",
"remoteRoot": "/code",
"outputCapture": "std"
+ },
+ {
+ "type": "node",
+ "request": "launch",
+ "name": "wskdebug with WSK_PACKAGE",
+ "runtimeExecutable": "wskdebug",
+ "args": [
+ "webaction"
+ ],
+ "localRoot": "${workspaceFolder}",
+ "remoteRoot": "/code",
+ "outputCapture": "std",
+ "envFile": "${workspaceFolder}/.env"
}
-
]
}
\ No newline at end of file
diff --git a/index.js b/index.js
index 96a83cb..0406efe 100644
--- a/index.js
+++ b/index.js
@@ -258,6 +258,10 @@
argv.invokeParams = argv.P;
argv.invokeAction = argv.a;
argv.onChange = argv.r;
+
+ if (process.env.WSK_PACKAGE && argv.action && !argv.action.includes("/")) {
+ argv.action = `${process.env.WSK_PACKAGE}/${argv.action}`;
+ }
}
function printErrorAndExit(err, argv) {
diff --git a/test/wskdebug.test.js b/test/wskdebug.test.js
index ca8e941..959168e 100644
--- a/test/wskdebug.test.js
+++ b/test/wskdebug.test.js
@@ -22,13 +22,32 @@
// tests basic cli
-const wskdebug = require('../index');
+let wskdebug = require('../index');
const test = require('./test');
const assert = require('assert');
const stripAnsi = require('strip-ansi');
const {execSync} = require('child_process');
+const mockRequire = require('mock-require');
+
+function mockDebugger() {
+ const receivedArgv = {};
+
+ class MockDebugger {
+ constructor(argv) {
+ Object.assign(receivedArgv, argv);
+ }
+
+ start() {}
+ run() {}
+ }
+
+ mockRequire("../src/debugger", MockDebugger);
+ wskdebug = mockRequire.reRequire("../index");
+ return receivedArgv;
+}
+
describe('wskdebug cli', function() {
it("should print version (via wskdebug.js)", async function() {
@@ -66,4 +85,25 @@
assert.equal(stripAnsi(stdio.stdout.trim()), require(`${process.cwd()}/package.json`).version);
});
+ it("should take action argument", async function() {
+ const argv = mockDebugger();
+
+ await wskdebug(`action`);
+ assert.strictEqual(argv.action, "action");
+
+ await wskdebug(`package/action`);
+ assert.strictEqual(argv.action, "package/action");
+ });
+
+ it("should use WSK_PACKAGE env var as package name", async function() {
+ const argv = mockDebugger();
+
+ process.env.WSK_PACKAGE = "envPackage";
+ await wskdebug(`action`);
+ assert.strictEqual(argv.action, "envPackage/action");
+
+ // cli package takes precedence
+ await wskdebug(`package/action`);
+ assert.strictEqual(argv.action, "package/action");
+ });
});