magicpatch
Version:
Adds IPython / Jupyter magic commands to IJavascript
48 lines (39 loc) • 1.44 kB
JavaScript
/* global $$ */
function env() {
// use the line for the expression instead of args
let expr = this.varSubst(this.line.substring(this.startArgs));
// parse the expression
let varNameExpr = "\\s*(?<varName>\\w+)\\s*";
let optionalAssignmentExpr = "(?:=\\s*(?<value>.*)?\\s*)?";
let matchEnv = new RegExp(varNameExpr + optionalAssignmentExpr);
let match = expr.match(matchEnv);
// return whole environment if no envvar specified
if (!match) {
return process.env;
}
let {varName, value} = match.groups;
// if no assignment, return the value of the envvar specified
if (!value) {
return process.env[varName];
}
// set the envvar and print out the value
process.env[varName] = value;
console.log(`env: ${varName}=${value}`);
}
let {decorateMagic} = $$.addMagic.utils;
decorateMagic(
env,
__filename,
"Get, set, or list environment variables.",
["name", "%env"],
["arguments", "<variable> [=value]"],
[
"description",
"%env: lists all environment variables/values %env var: get value for var %env var val: set value for var %env var=val: set value for var %env var={val}: set value for var.",
{
"variable": "The environment variable to show or set",
"=value": "The value to assign to the environment variable. e.g. `%env HOME=/tmp`",
},
],
);
$$.addMagic("%env", env);