From 49351f4506a04e4f2184785a38f70330a7ae491b Mon Sep 17 00:00:00 2001 From: Simon Lecoq <22963968+lowlighter@users.noreply.github.com> Date: Thu, 2 Nov 2023 21:55:45 -0400 Subject: [PATCH] feat: support 1.38 flags --- deno.jsonc | 22 +++++++++++++++++++--- mod.ts | 12 +++++++++++- tests/deno_common.jsonc | 16 ++++++++++++++-- tests/deno_doc.jsonc | 14 ++++++++++++++ tests/imports.json | 1 - 5 files changed, 58 insertions(+), 7 deletions(-) delete mode 100644 tests/imports.json diff --git a/deno.jsonc b/deno.jsonc index a469ec6..3448979 100644 --- a/deno.jsonc +++ b/deno.jsonc @@ -1,15 +1,24 @@ { "tasks": { - "make": "deno run --allow-env --allow-read --allow-write=.deno-make.json --allow-run=deno ./mod.ts $0" + "make": "deno run --allow-env --allow-read --allow-write=.deno-make.json --allow-run=deno ./mod.ts $0", + "test": "deno task make test", + "code": "deno task make code", + "ci": "deno task make ci" }, "+tasks": { "test": { "description": "🧪 Run tests and benchmarks. Print collected coverage", "task": [ + // Setup test environment + "mkdir -p .coverage &&", "rm -rf .coverage &&", + "(echo '' > tests/.env) &&", + "(echo '{}' > tests/.imports.json) &&", + // Run tests and print coverage "deno test &&", "deno coverage .coverage &&", - "rm -rf tests/.[!.]* tests/*.exe" + // Cleanup test environment + "rm -rf .coverage tests/.[!.]* tests/*.exe" ], "deno": { "test": { @@ -33,8 +42,15 @@ "task": "deno lint && deno fmt" }, "code:check": { - "description": "🤖 Lint and check code fomatting", + "description": "🫧 Lint and check code fomatting", "task": "deno lint && deno fmt --check" + }, + "ci": { + "description": "🤖 CI checks", + "task": [ + "deno task make code:check", + "deno task make test" + ] } }, "fmt": { diff --git a/mod.ts b/mod.ts index 304a667..ff3c71d 100644 --- a/mod.ts +++ b/mod.ts @@ -8,7 +8,10 @@ import { bgBrightBlue, bold, gray, italic, underline, yellow } from "https://den /** Common flags */ const common = is.object({ - unstable: is.boolean().optional().transform((v) => v ? "--unstable" : ""), + unstable: is.union([ + is.boolean().transform((v) => v ? "--unstable" : ""), + is.array(is.string()).transform((v) => v.length ? v.map((w) => `--unstable-${w}`) : ""), + ]).optional(), quiet: is.boolean().optional().transform((v) => v ? "--quiet" : ""), config: is.union([ is.boolean().transform((v) => v === false ? "--no-config" : ""), @@ -26,6 +29,10 @@ const runnable = is.object({ certificateErrors: is.boolean().optional().transform((v) => v === false ? "--unsafely-ignore-certificate-errors" : "" ), + env: is.union([ + is.boolean().transform((v) => v ? "--env" : ""), + is.string().min(1).transform((v) => `--env='${v}'`), + ]).optional(), }) /** Lock file flags */ @@ -234,6 +241,9 @@ const doc = common.pick({ unstable: true, quiet: true, importMap: true }) modules: modules.doc, private: is.boolean().optional().transform((v) => v ? "--private" : ""), json: is.boolean().optional().transform((v) => v ? "--json" : ""), + html: is.boolean().optional().transform((v) => v ? "--html" : ""), + name: is.string().optional().transform((v) => v ? `--name='${v}'` : ""), + output: is.string().optional().transform((v) => v ? `--output='${v}'` : ""), }).transform((v) => Object.values(v).filter(Boolean).join(" ")) const _eval = common.merge( diff --git a/tests/deno_common.jsonc b/tests/deno_common.jsonc index 9279782..8323417 100644 --- a/tests/deno_common.jsonc +++ b/tests/deno_common.jsonc @@ -11,11 +11,23 @@ "unstable": true, "quiet": true, "certificateErrors": false, - "importMap": "imports.json", + "importMap": ".imports.json", "cert": "/dev/null", "location": "https://deno.test", "seed": 0, - "v8Flags": ["--print-code"] + "v8Flags": ["--print-code"], + "env": true + }, + "test": { + "env": ".env", + "unstable": ["kv", "bare-node-builtins"] + }, + "bench": { + "env": false, + "unstable": [] + }, + "lint": { + "unstable": false } } }, diff --git a/tests/deno_doc.jsonc b/tests/deno_doc.jsonc index c55e704..3c8fef5 100644 --- a/tests/deno_doc.jsonc +++ b/tests/deno_doc.jsonc @@ -19,6 +19,20 @@ "json": true } } + }, + "flags:doc_alt": { + "task": [ + "deno doc mod.ts;", + "rm -rf .docs" + ], + "cwd": "tests", + "deno": { + "doc": { + "html": true, + "name": "test", + "output": ".docs" + } + } } } } diff --git a/tests/imports.json b/tests/imports.json deleted file mode 100644 index 0967ef4..0000000 --- a/tests/imports.json +++ /dev/null @@ -1 +0,0 @@ -{}