Better Permissions provides a nicer way for configuring permissions for your Deno scripts using Typescript files!
Better Permissions provides an API that permits generating Deno scrips permissions flags, from a defined configuration object:
import {
generatePermisions,
PermissionOptions
} from "https://deno.land/x/better_permissions@v0.0.1/mod.ts";
const options: PermissionOptions = {
env: true,
net: ["deno.land", "github.com"],
read: ["./config.json"],
write: ["/tmp"],
hrtime: true,
run: false
}
const flags = generatePermisions(options);
const p = Deno.run({ cmd: ["deno", "run", ...flags, "app.ts"]});
await p.status();
Another way the Better Permissions API works nicely is together with Drake. Example drakefile using better-permisions:
import { desc, run, task, sh } from "https://deno.land/x/drake@v1.2.4/mod.ts";
import {
generatePermisionsString, PermissionOptions
} from "https://deno.land/x/better_permissions@v0.0.1/mod.ts";
const devOptions: PermissionOptions = {
env: true,
net: ["deno.land", "github.com"],
read: ["./config.json"],
write: ["/tmp"],
hrtime: true,
run: false
};
desc("Execute application with development permissions");
task("run-dev", [], function() {
sh(`deno run ${generatePermisionsString(devOptions)} app.ts`);
});
run()
also provide a Wrapper CLI for Deno that can installed executing the command:
deno install -A -n bpdeno https://deno.land/x/better_permissions@v0.0.1/cli.ts
and the we can execute a scripts using the following parameters:
bpdeno run -p permissions.config.ts app.ts
being the permissions.config.js a Typescript file that follows the format:
import { PermissionOptions } from "https://deno.land/x/better_permissions@v0.0.1/mod.ts";
const options: PermissionOptions ={
env: true,
net: ["deno.land", "github.com"],
read: true,
write: false,
hrtime: true,
run: false
};
export default options;
Author: rafaelmotaalves
Source Code: https://github.com/rafaelmotaalves/better_permissions
#deno #nodejs #javascript #node