Skip to content

Commit 7de8c67

Browse files
committed
Get undo env from the env with recursive eval
1 parent be3650f commit 7de8c67

File tree

2 files changed

+12
-12
lines changed

2 files changed

+12
-12
lines changed

README.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@ echo 'eval "$(pkgx dev --shellcode)"' >> ~/.zshrc
1010
```
1111

1212
> [!NOTE]
13+
>
1314
> `pkgx` is a required dependency.
1415
>
1516
> ```sh

app.ts

Lines changed: 11 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@ if (snuff.pkgs.length === 0 && Object.keys(snuff.env).length === 0) {
2929
Deno.exit(1);
3030
}
3131

32-
let env = '';
32+
let env = "";
3333
const pkgspecs = snuff.pkgs.map((pkg) => `+${utils.pkg.str(pkg)}`);
3434

3535
if (snuff.pkgs.length > 0) {
@@ -60,7 +60,7 @@ for (const envln of env.trim().split("\n")) {
6060
const value = Deno.env.get(key);
6161

6262
if (value) {
63-
undo += ` export ${key}=${shell_escape(value)}\n`;
63+
undo += ` export ${key}=\\"$${key}\\"\n`;
6464
} else {
6565
undo += ` unset ${key}\n`;
6666
}
@@ -71,21 +71,20 @@ const dir = Deno.cwd();
7171
const bye_bye_msg = pkgspecs.map((pkgspec) => `-${pkgspec.slice(1)}`).join(" ");
7272

7373
console.log(`
74-
set -a
75-
${env}
76-
set +a
77-
78-
_pkgx_dev_try_bye() {
79-
suffix="\${PWD#"${dir}"}"
80-
if test "$PWD" != "${dir}$suffix"; then
74+
eval "_pkgx_dev_try_bye() {
75+
suffix=\\"\\\${PWD#\\"${dir}\\"}\\"
76+
if test \\"\\$PWD\\" != \\"${dir}$suffix\\"; then
8177
${undo.trim()}
8278
unset -f _pkgx_dev_try_bye
83-
echo "\\033[31m${bye_bye_msg}\\033[0m" >&2
79+
echo -e \\"\\033[31m${bye_bye_msg}\\033[0m\\" >&2
8480
return 0
8581
else
8682
return 1
8783
fi
88-
}
89-
`.trim());
84+
}"
85+
86+
set -a
87+
${env}
88+
set +a`);
9089

9190
console.error("%c%s", "color: green", pkgspecs.join(" "));

0 commit comments

Comments
 (0)