Compare commits
14 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
6bf3d3b5d1 | ||
|
|
9ad8bf580d | ||
|
|
79c2610348 | ||
|
|
3a03e88ef6 | ||
|
|
ac16441285 | ||
|
|
8cab32688d | ||
|
|
0f25933658 | ||
|
|
36c98211d7 | ||
|
|
49351f4506 | ||
|
|
18bdf2b271 | ||
|
|
a9276642d3 | ||
|
|
27528afe04 | ||
|
|
55d7b38586 | ||
|
|
c5d8e2dbb1 |
9
.devcontainer/Dockerfile
Normal file
9
.devcontainer/Dockerfile
Normal file
@@ -0,0 +1,9 @@
|
|||||||
|
FROM --platform=linux/amd64 mcr.microsoft.com/vscode/devcontainers/base:0-bullseye
|
||||||
|
|
||||||
|
ENV DENO_INSTALL=/deno
|
||||||
|
RUN mkdir -p /deno \
|
||||||
|
&& curl -fsSL https://deno.land/x/install/install.sh | sh \
|
||||||
|
&& chown -R vscode /deno
|
||||||
|
|
||||||
|
ENV PATH=${DENO_INSTALL}/bin:${PATH} \
|
||||||
|
DENO_DIR=${DENO_INSTALL}/.cache/deno
|
||||||
12
.devcontainer/devcontainer.json
Normal file
12
.devcontainer/devcontainer.json
Normal file
@@ -0,0 +1,12 @@
|
|||||||
|
{
|
||||||
|
"name": "Deno",
|
||||||
|
"build": {
|
||||||
|
"dockerfile": "Dockerfile"
|
||||||
|
},
|
||||||
|
"customizations": {
|
||||||
|
"vscode": {
|
||||||
|
"extensions": ["denoland.vscode-deno"]
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"remoteUser": "vscode"
|
||||||
|
}
|
||||||
9
.github/workflows/deno.yml
vendored
9
.github/workflows/deno.yml
vendored
@@ -1,9 +1,11 @@
|
|||||||
name: ci
|
name: ci
|
||||||
on:
|
on:
|
||||||
push:
|
push:
|
||||||
branches: ["main"]
|
branches:
|
||||||
|
- main
|
||||||
pull_request:
|
pull_request:
|
||||||
branches: ["main"]
|
branches:
|
||||||
|
- main
|
||||||
permissions:
|
permissions:
|
||||||
contents: read
|
contents: read
|
||||||
jobs:
|
jobs:
|
||||||
@@ -12,6 +14,5 @@ jobs:
|
|||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v4
|
- uses: actions/checkout@v4
|
||||||
- uses: denoland/setup-deno@v1
|
- uses: denoland/setup-deno@v1
|
||||||
- run: deno task make code:check
|
- run: deno task ci
|
||||||
- run: deno task make test
|
|
||||||
|
|
||||||
|
|||||||
5
.gitignore
vendored
5
.gitignore
vendored
@@ -1,5 +1,4 @@
|
|||||||
.coverage
|
.coverage
|
||||||
.deno-make.json
|
.deno-make.json
|
||||||
tests/.coverage
|
tests/.*
|
||||||
tests/.coverage.report
|
tests/tests.exe
|
||||||
tests/.junit.xml
|
|
||||||
|
|||||||
110
README.md
110
README.md
@@ -1,105 +1,109 @@
|
|||||||
# 🍳🦕 deno make
|
# 🍳🦕 deno make
|
||||||
|
|
||||||
_deno make_ integrates seemlessly within your `deno.jsonc` configuration file to provide an extended set of features to
|
_deno make_ integrates seemlessly with your existing `deno.jsonc` configuration file to provide an extended set of
|
||||||
the [deno](https://deno.land) task runner.
|
features to the [deno](https://deno.land) task runner.
|
||||||
|
|
||||||
You can assign default permissions and flags to deno subcommands, environment variables, assign descriptions and more.
|
## 🚀 Features
|
||||||
|
|
||||||

|
- Seamless integration with your existing `deno.jsonc` configuration file
|
||||||
|
- Set flags per deno subcommands in a descriptive way
|
||||||
|
- Set or inherit environment variables
|
||||||
|
- Write long tasks using arrays to improve readability
|
||||||
|
- Add descriptions to your tasks
|
||||||
|
- List and preview available tasks
|
||||||
|
|
||||||
## 💭 Why ?
|

|
||||||
|
|
||||||
While the default [deno task runner](https://docs.deno.com/runtime/manual/tools/task_runner) is great, it is not always
|

|
||||||
suitable for long scripts as it's not possible to split them into multiple lines, and passing flags to deno subcommands
|
|
||||||
is often tedious.
|
|
||||||
|
|
||||||
_deno make_ solves these issues by computing dynamically deno commands flags before calling the default deno task
|
Learn more about the syntax in [`demo/deno.jsonc`](/demo/deno.jsonc) !
|
||||||
runner, in addition to providing a few extra features.
|
|
||||||
|
### 💭 But why ?
|
||||||
|
|
||||||
|
The default [deno task runner](https://docs.deno.com/runtime/manual/tools/task_runner) is great, but long tasks can
|
||||||
|
quickly become hard to read and maintain. This small script aims to solve this issue by providing a few extra features
|
||||||
|
for convenience.
|
||||||
|
|
||||||
## 📚 Usage
|
## 📚 Usage
|
||||||
|
|
||||||
### 1. Register _deno make_ in `deno.jsonc`
|
### 1️⃣ Register _deno make_ in `deno.jsonc`
|
||||||
|
|
||||||
```jsonc
|
```jsonc
|
||||||
// deno.jsonc
|
// deno.jsonc
|
||||||
{
|
{
|
||||||
"tasks": {
|
"tasks": {
|
||||||
|
// 🔧 Alias deno_make to `deno task make` to make it easier
|
||||||
"make": "deno run --allow-env --allow-read --allow-write=.deno-make.json --allow-run=deno https://deno.land/x/make/mod.ts $0"
|
"make": "deno run --allow-env --allow-read --allow-write=.deno-make.json --allow-run=deno https://deno.land/x/make/mod.ts $0"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
```
|
```
|
||||||
|
|
||||||
### 2. Configure `"deno-make"` tasks in `deno.jsonc`
|
### 2️⃣ Configure _deno_make_ tasks in `deno.jsonc`
|
||||||
|
|
||||||
```jsonc
|
```jsonc
|
||||||
// deno.jsonc
|
// deno.jsonc
|
||||||
{
|
{
|
||||||
|
// 🍳 deno_make configuration
|
||||||
"+tasks": {
|
"+tasks": {
|
||||||
"start": {
|
"start": { // ▶️ `deno task make start`
|
||||||
"description": "🍱 Start application",
|
"description": "🍱 Start application",
|
||||||
"task": "deno run mod.ts",
|
"task": "deno run mod.ts",
|
||||||
"deno": {
|
"deno": { // ✨ Configure deno flags in a descriptive way
|
||||||
"run": { // For "deno run" subcommand
|
"run": { // ⚙️ `deno run`
|
||||||
"unstable": true, // ➡️ --unstable
|
"unstable": ["kv"], // ➡️ --unstable-kv
|
||||||
"permissions": {
|
"permissions": {
|
||||||
"prompt": false, // ➡️ --no-prompt
|
|
||||||
"read": true, // ➡️ --allow-read
|
"read": true, // ➡️ --allow-read
|
||||||
"run": false, // ➡️ --deny-run
|
"run": false, // ➡️ --deny-run
|
||||||
"net": [ // ➡️ --allow-net=https://deno.land,https://example.com
|
"net": [ // ➡️ --allow-net=https://deno.land,https://example.com
|
||||||
"https://deno.land",
|
"https://deno.land",
|
||||||
"https://example.com"
|
"https://example.com"
|
||||||
],
|
],
|
||||||
"write": { // ➡️ --allow-write=/tmp --deny-write=/root
|
"prompt": false // ➡️ --no-prompt
|
||||||
"allow": [
|
|
||||||
"/tmp"
|
|
||||||
],
|
|
||||||
"deny": [
|
|
||||||
"/root"
|
|
||||||
]
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
// Configure environment variables
|
"env": { // ✨ Configure environment variables directly
|
||||||
"env": {
|
"FOO": true, // ➡️ Inherit current FOO environment variable
|
||||||
"FOO": true, // ➡️ Inherit FOO environment variable
|
|
||||||
"BAR": "bar" // ➡️ Set BAR environment variable to "bar"
|
"BAR": "bar" // ➡️ Set BAR environment variable to "bar"
|
||||||
}
|
}
|
||||||
},
|
|
||||||
// Write "multi-line" tasks using arrays (they will be joined with "\n")
|
|
||||||
"test": {
|
|
||||||
"description": "🧪 Run tests and print collected coverage",
|
|
||||||
"task": [
|
|
||||||
"rm -rf .coverage &&",
|
|
||||||
"deno test &&",
|
|
||||||
"deno coverage .coverage"
|
|
||||||
],
|
|
||||||
"deno": {
|
|
||||||
"test": { // For "deno test" subcommand
|
|
||||||
"unstable": true, // ➡️ --unstable
|
|
||||||
"permissions": { // ➡️ --allow-all
|
|
||||||
"all": true
|
|
||||||
},
|
|
||||||
"coverage": ".coverage", // ➡️ --coverage=.coverage
|
|
||||||
"parallel": true // ➡️ --parallel
|
|
||||||
},
|
|
||||||
"coverage": { // For "deno coverage" subcommand
|
|
||||||
"quiet": true // ➡️ --quiet
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
```
|
```
|
||||||
|
|
||||||
### 3. Run tasks with `deno task make` instead
|
> ℹ️ It is even possible to alias `deno task make <+task>` to `deno task <+task>` !
|
||||||
|
>
|
||||||
|
> ```jsonc
|
||||||
|
> // deno.jsonc
|
||||||
|
> {
|
||||||
|
> "tasks": {
|
||||||
|
> "start": "deno task make start",
|
||||||
|
> "test": "deno task make test"
|
||||||
|
> }
|
||||||
|
> }
|
||||||
|
> ```
|
||||||
|
|
||||||
|
### 3️⃣ Run tasks with _deno_make_
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
deno task make run
|
deno task make <+task>
|
||||||
```
|
```
|
||||||
|
|
||||||
#### Print all available _deno make_ tasks
|
> ℹ️ If _deno_make_ was aliased back to `deno task`, just use the following instead:
|
||||||
|
>
|
||||||
|
> ```bash
|
||||||
|
> deno task start
|
||||||
|
> ```
|
||||||
|
|
||||||
|
To print the list of available tasks with their configuration, run _deno_make_ without arguments:
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
deno task make
|
deno task make
|
||||||
```
|
```
|
||||||
|
|
||||||
|
## 📜 License
|
||||||
|
|
||||||
|
```
|
||||||
|
MIT License
|
||||||
|
Copyright (c) 2023 Simon Lecoq
|
||||||
|
```
|
||||||
|
|||||||
BIN
demo/config.png
Normal file
BIN
demo/config.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 261 KiB |
@@ -1,46 +1,44 @@
|
|||||||
{
|
{
|
||||||
|
"tasks": {
|
||||||
|
// 🔧 Alias deno_make to `deno task make` to make it easier
|
||||||
|
"make": "deno run --allow-env --allow-read --allow-write=.deno-make.json --allow-run=deno https://deno.land/x/make/mod.ts $0",
|
||||||
|
// 💡 It is even possible to alias `deno task make <+task>` to `deno task <+task>` !
|
||||||
|
"start": "deno task make start",
|
||||||
|
"test": "deno task make test"
|
||||||
|
},
|
||||||
|
// 🍳 deno_make configuration
|
||||||
"+tasks": {
|
"+tasks": {
|
||||||
"start": {
|
"start": { // ▶️ `deno task make start`
|
||||||
"description": "🍱 Start application",
|
"description": "🍱 Start application",
|
||||||
"task": "deno run mod.ts",
|
"task": "deno run mod.ts",
|
||||||
"deno": {
|
"deno": { // ✨ Configure deno flags in a descriptive way
|
||||||
"run": { // For "deno run" subcommand
|
"run": { // ⚙️ `deno run`
|
||||||
"unstable": true, // ➡️ --unstable
|
"unstable": ["kv"], // ➡️ --unstable-kv
|
||||||
"permissions": {
|
"permissions": {
|
||||||
"prompt": false, // ➡️ --no-prompt
|
|
||||||
"read": true, // ➡️ --allow-read
|
"read": true, // ➡️ --allow-read
|
||||||
"run": false, // ➡️ --deny-run
|
"run": false, // ➡️ --deny-run
|
||||||
"net": [ // ➡️ --allow-net=https://deno.land,https://example.com
|
"net": [ // ➡️ --allow-net=https://deno.land,https://example.com
|
||||||
"https://deno.land",
|
"https://deno.land",
|
||||||
"https://example.com"
|
"https://example.com"
|
||||||
],
|
],
|
||||||
"write": { // ➡️ --allow-write=/tmp --deny-write=/root
|
"prompt": false // ➡️ --no-prompt
|
||||||
"allow": [
|
|
||||||
"/tmp"
|
|
||||||
],
|
|
||||||
"deny": [
|
|
||||||
"/root"
|
|
||||||
]
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
// Configure environment variables
|
"env": { // ✨ Configure environment variables directly
|
||||||
"env": {
|
"FOO": true, // ➡️ Inherit current FOO environment variable
|
||||||
"FOO": true, // ➡️ Inherit FOO environment variable
|
|
||||||
"BAR": "bar" // ➡️ Set BAR environment variable to "bar"
|
"BAR": "bar" // ➡️ Set BAR environment variable to "bar"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
// Write "multi-line" tasks using arrays (they will be joined with "\n")
|
"test": { // ▶️ `deno task make test`
|
||||||
"test": {
|
|
||||||
"description": "🧪 Run tests and print collected coverage",
|
"description": "🧪 Run tests and print collected coverage",
|
||||||
"task": [
|
"task": [ // ✨ Split long scripts for readability
|
||||||
"rm -rf .coverage &&",
|
"rm -rf .coverage &&",
|
||||||
"deno test &&",
|
"deno test &&",
|
||||||
"deno coverage .coverage"
|
"deno coverage .coverage"
|
||||||
],
|
],
|
||||||
"deno": {
|
"deno": {
|
||||||
"test": { // For "deno test" subcommand
|
"test": { // ⚙️ `deno test`
|
||||||
"unstable": true, // ➡️ --unstable
|
"unstable": true, // ➡️ --unstable
|
||||||
"permissions": { // ➡️ --allow-all
|
"permissions": { // ➡️ --allow-all
|
||||||
"all": true
|
"all": true
|
||||||
@@ -48,7 +46,7 @@
|
|||||||
"coverage": ".coverage", // ➡️ --coverage=.coverage
|
"coverage": ".coverage", // ➡️ --coverage=.coverage
|
||||||
"parallel": true // ➡️ --parallel
|
"parallel": true // ➡️ --parallel
|
||||||
},
|
},
|
||||||
"coverage": { // For "deno coverage" subcommand
|
"coverage": { // ⚙️ `deno coverage`
|
||||||
"quiet": true // ➡️ --quiet
|
"quiet": true // ➡️ --quiet
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
BIN
demo/list.png
Normal file
BIN
demo/list.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 164 KiB |
57
deno.jsonc
57
deno.jsonc
@@ -1,14 +1,26 @@
|
|||||||
{
|
{
|
||||||
"tasks": {
|
"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",
|
||||||
|
"check": "deno task make check",
|
||||||
|
"cache": "deno task make cache",
|
||||||
|
"ci": "deno task make ci"
|
||||||
},
|
},
|
||||||
"+tasks": {
|
"+tasks": {
|
||||||
"test": {
|
"test": {
|
||||||
"description": "🧪 Run tests and benchmarks. Print collected coverage",
|
"description": "🧪 Run tests and benchmarks. Print collected coverage",
|
||||||
"task": [
|
"task": [
|
||||||
|
// Setup test environment
|
||||||
|
"mkdir -p .coverage &&",
|
||||||
"rm -rf .coverage &&",
|
"rm -rf .coverage &&",
|
||||||
|
"(echo '' > tests/.env) &&",
|
||||||
|
"(echo '{}' > tests/.imports.json) &&",
|
||||||
|
// Run tests and print coverage
|
||||||
"deno test &&",
|
"deno test &&",
|
||||||
"deno coverage .coverage"
|
"deno coverage .coverage &&",
|
||||||
|
// Cleanup test environment
|
||||||
|
"rm -rf .coverage tests/.[!.]*"
|
||||||
],
|
],
|
||||||
"deno": {
|
"deno": {
|
||||||
"test": {
|
"test": {
|
||||||
@@ -17,6 +29,7 @@
|
|||||||
"traceOps": true,
|
"traceOps": true,
|
||||||
"permissions": {
|
"permissions": {
|
||||||
"read": true,
|
"read": true,
|
||||||
|
"env": ["TEST_INHERIT"],
|
||||||
"write": [".deno-make.json"],
|
"write": [".deno-make.json"],
|
||||||
"run": ["deno"]
|
"run": ["deno"]
|
||||||
}
|
}
|
||||||
@@ -30,9 +43,33 @@
|
|||||||
"description": "🧼 Lint and format code",
|
"description": "🧼 Lint and format code",
|
||||||
"task": "deno lint && deno fmt"
|
"task": "deno lint && deno fmt"
|
||||||
},
|
},
|
||||||
"code:check": {
|
"check": {
|
||||||
"description": "🤖 Lint and check code fomatting",
|
"description": "🫧 Lint and check code fomatting",
|
||||||
"task": "deno lint && deno fmt --check"
|
"task": "deno lint && deno fmt",
|
||||||
|
"deno": {
|
||||||
|
"fmt": {
|
||||||
|
"check": true
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"cache": {
|
||||||
|
"description": "📦 Cache dependencies",
|
||||||
|
"task": "deno cache *.ts",
|
||||||
|
"deno": {
|
||||||
|
"cache": {
|
||||||
|
"modules": {
|
||||||
|
"reload": true,
|
||||||
|
"check": "all"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"ci": {
|
||||||
|
"description": "🤖 CI checks",
|
||||||
|
"task": [
|
||||||
|
"deno task make check &&",
|
||||||
|
"deno task make test"
|
||||||
|
]
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"fmt": {
|
"fmt": {
|
||||||
@@ -41,13 +78,3 @@
|
|||||||
"exclude": [".coverage", ".deno-make.json"]
|
"exclude": [".coverage", ".deno-make.json"]
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
/*
|
|
||||||
bench
|
|
||||||
bundle
|
|
||||||
compile
|
|
||||||
_eval
|
|
||||||
fmt
|
|
||||||
install
|
|
||||||
uninstall
|
|
||||||
repl
|
|
||||||
*/
|
|
||||||
|
|||||||
88
deno.lock
generated
88
deno.lock
generated
@@ -175,6 +175,94 @@
|
|||||||
"https://deno.land/std@0.204.0/path/windows/separator.ts": "ae21f27015f10510ed1ac4a0ba9c4c9c967cbdd9d9e776a3e4967553c397bd5d",
|
"https://deno.land/std@0.204.0/path/windows/separator.ts": "ae21f27015f10510ed1ac4a0ba9c4c9c967cbdd9d9e776a3e4967553c397bd5d",
|
||||||
"https://deno.land/std@0.204.0/path/windows/to_file_url.ts": "8e9ea9e1ff364aa06fa72999204229952d0a279dbb876b7b838b2b2fea55cce3",
|
"https://deno.land/std@0.204.0/path/windows/to_file_url.ts": "8e9ea9e1ff364aa06fa72999204229952d0a279dbb876b7b838b2b2fea55cce3",
|
||||||
"https://deno.land/std@0.204.0/path/windows/to_namespaced_path.ts": "e0f4d4a5e77f28a5708c1a33ff24360f35637ba6d8f103d19661255ef7bfd50d",
|
"https://deno.land/std@0.204.0/path/windows/to_namespaced_path.ts": "e0f4d4a5e77f28a5708c1a33ff24360f35637ba6d8f103d19661255ef7bfd50d",
|
||||||
|
"https://deno.land/std@0.205.0/assert/assert.ts": "9a97dad6d98c238938e7540736b826440ad8c1c1e54430ca4c4e623e585607ee",
|
||||||
|
"https://deno.land/std@0.205.0/assert/assertion_error.ts": "4d0bde9b374dfbcbe8ac23f54f567b77024fb67dbb1906a852d67fe050d42f56",
|
||||||
|
"https://deno.land/std@0.205.0/fmt/colors.ts": "c51c4642678eb690dcf5ffee5918b675bf01a33fba82acf303701ae1a4f8c8d9",
|
||||||
|
"https://deno.land/std@0.205.0/fs/_util.ts": "fbf57dcdc9f7bc8128d60301eece608246971a7836a3bb1e78da75314f08b978",
|
||||||
|
"https://deno.land/std@0.205.0/fs/copy.ts": "ca19e4837965914471df38fbd61e16f9e8adfe89f9cffb0c83615c83ea3fc2bf",
|
||||||
|
"https://deno.land/std@0.205.0/fs/empty_dir.ts": "0b4a2508232446eed232ad1243dd4b0f07ac503a281633ae1324d1528df70964",
|
||||||
|
"https://deno.land/std@0.205.0/fs/ensure_dir.ts": "dc64c4c75c64721d4e3fb681f1382f803ff3d2868f08563ff923fdd20d071c40",
|
||||||
|
"https://deno.land/std@0.205.0/fs/ensure_file.ts": "39ac83cc283a20ec2735e956adf5de3e8a3334e0b6820547b5772f71c49ae083",
|
||||||
|
"https://deno.land/std@0.205.0/fs/ensure_link.ts": "c15e69c48556d78aae31b83e0c0ece04b7b8bc0951412f5b759aceb6fde7f0ac",
|
||||||
|
"https://deno.land/std@0.205.0/fs/ensure_symlink.ts": "b389c8568f0656d145ac7ece472afe710815cccbb2ebfd19da7978379ae143fe",
|
||||||
|
"https://deno.land/std@0.205.0/fs/eol.ts": "f1f2eb348a750c34500741987b21d65607f352cf7205f48f4319d417fff42842",
|
||||||
|
"https://deno.land/std@0.205.0/fs/exists.ts": "cb59a853d84871d87acab0e7936a4dac11282957f8e195102c5a7acb42546bb8",
|
||||||
|
"https://deno.land/std@0.205.0/fs/expand_glob.ts": "4f98c508fc9e40d6311d2f7fd88aaad05235cc506388c22dda315e095305811d",
|
||||||
|
"https://deno.land/std@0.205.0/fs/mod.ts": "bc3d0acd488cc7b42627044caf47d72019846d459279544e1934418955ba4898",
|
||||||
|
"https://deno.land/std@0.205.0/fs/move.ts": "b4f8f46730b40c32ea3c0bc8eb0fd0e8139249a698883c7b3756424cf19785c9",
|
||||||
|
"https://deno.land/std@0.205.0/fs/walk.ts": "c1e6b43f72a46e89b630140308bd51a4795d416a416b4cfb7cd4bd1e25946723",
|
||||||
|
"https://deno.land/std@0.205.0/json/common.ts": "ecd5e87d45b5f0df33238ed8b1746e1444da7f5c86ae53d0f0b04280f41a25bb",
|
||||||
|
"https://deno.land/std@0.205.0/jsonc/mod.ts": "b88dce28eb3645667caa856538ae2fe87af51410822544a0b45a4177ef3bd7dd",
|
||||||
|
"https://deno.land/std@0.205.0/jsonc/parse.ts": "c1096e2b7ffb4996d7ed841dfdb29a4fccc78edcc55299beaa20d6fe5facf7b6",
|
||||||
|
"https://deno.land/std@0.205.0/path/_common/assert_path.ts": "061e4d093d4ba5aebceb2c4da3318bfe3289e868570e9d3a8e327d91c2958946",
|
||||||
|
"https://deno.land/std@0.205.0/path/_common/basename.ts": "0d978ff818f339cd3b1d09dc914881f4d15617432ae519c1b8fdc09ff8d3789a",
|
||||||
|
"https://deno.land/std@0.205.0/path/_common/common.ts": "9e4233b2eeb50f8b2ae10ecc2108f58583aea6fd3e8907827020282dc2b76143",
|
||||||
|
"https://deno.land/std@0.205.0/path/_common/constants.ts": "e49961f6f4f48039c0dfed3c3f93e963ca3d92791c9d478ac5b43183413136e0",
|
||||||
|
"https://deno.land/std@0.205.0/path/_common/dirname.ts": "2ba7fb4cc9fafb0f38028f434179579ce61d4d9e51296fad22b701c3d3cd7397",
|
||||||
|
"https://deno.land/std@0.205.0/path/_common/format.ts": "11aa62e316dfbf22c126917f5e03ea5fe2ee707386555a8f513d27ad5756cf96",
|
||||||
|
"https://deno.land/std@0.205.0/path/_common/from_file_url.ts": "ef1bf3197d2efbf0297a2bdbf3a61d804b18f2bcce45548ae112313ec5be3c22",
|
||||||
|
"https://deno.land/std@0.205.0/path/_common/glob_to_reg_exp.ts": "5c3c2b79fc2294ec803d102bd9855c451c150021f452046312819fbb6d4dc156",
|
||||||
|
"https://deno.land/std@0.205.0/path/_common/is_glob.ts": "567dce5c6656bdedfc6b3ee6c0833e1e4db2b8dff6e62148e94a917f289c06ad",
|
||||||
|
"https://deno.land/std@0.205.0/path/_common/normalize.ts": "2ba7fb4cc9fafb0f38028f434179579ce61d4d9e51296fad22b701c3d3cd7397",
|
||||||
|
"https://deno.land/std@0.205.0/path/_common/normalize_string.ts": "88c472f28ae49525f9fe82de8c8816d93442d46a30d6bb5063b07ff8a89ff589",
|
||||||
|
"https://deno.land/std@0.205.0/path/_common/relative.ts": "1af19d787a2a84b8c534cc487424fe101f614982ae4851382c978ab2216186b4",
|
||||||
|
"https://deno.land/std@0.205.0/path/_common/strip_trailing_separators.ts": "7ffc7c287e97bdeeee31b155828686967f222cd73f9e5780bfe7dfb1b58c6c65",
|
||||||
|
"https://deno.land/std@0.205.0/path/_common/to_file_url.ts": "a8cdd1633bc9175b7eebd3613266d7c0b6ae0fb0cff24120b6092ac31662f9ae",
|
||||||
|
"https://deno.land/std@0.205.0/path/_interface.ts": "6471159dfbbc357e03882c2266d21ef9afdb1e4aa771b0545e90db58a0ba314b",
|
||||||
|
"https://deno.land/std@0.205.0/path/_os.ts": "30b0c2875f360c9296dbe6b7f2d528f0f9c741cecad2e97f803f5219e91b40a2",
|
||||||
|
"https://deno.land/std@0.205.0/path/basename.ts": "04bb5ef3e86bba8a35603b8f3b69537112cdd19ce64b77f2522006da2977a5f3",
|
||||||
|
"https://deno.land/std@0.205.0/path/common.ts": "f4d061c7d0b95a65c2a1a52439edec393e906b40f1caf4604c389fae7caa80f5",
|
||||||
|
"https://deno.land/std@0.205.0/path/dirname.ts": "88a0a71c21debafc4da7a4cd44fd32e899462df458fbca152390887d41c40361",
|
||||||
|
"https://deno.land/std@0.205.0/path/extname.ts": "2da4e2490f3b48b7121d19fb4c91681a5e11bd6bd99df4f6f47d7a71bb6ecdf2",
|
||||||
|
"https://deno.land/std@0.205.0/path/format.ts": "3457530cc85d1b4bab175f9ae73998b34fd456c830d01883169af0681b8894fb",
|
||||||
|
"https://deno.land/std@0.205.0/path/from_file_url.ts": "e7fa233ea1dff9641e8d566153a24d95010110185a6f418dd2e32320926043f8",
|
||||||
|
"https://deno.land/std@0.205.0/path/glob.ts": "9c77cf47db1d786e2ebf66670824d03fd84ecc7c807cac24441eb9d5cb6a2986",
|
||||||
|
"https://deno.land/std@0.205.0/path/is_absolute.ts": "67232b41b860571c5b7537f4954c88d86ae2ba45e883ee37d3dec27b74909d13",
|
||||||
|
"https://deno.land/std@0.205.0/path/join.ts": "98d3d76c819af4a11a81d5ba2dbb319f1ce9d63fc2b615597d4bcfddd4a89a09",
|
||||||
|
"https://deno.land/std@0.205.0/path/mod.ts": "2d62a0a8b78a60e8e6f485d881bac6b61d58573b11cf585fb7c8fc50d9b20d80",
|
||||||
|
"https://deno.land/std@0.205.0/path/normalize.ts": "aa95be9a92c7bd4f9dc0ba51e942a1973e2b93d266cd74f5ca751c136d520b66",
|
||||||
|
"https://deno.land/std@0.205.0/path/parse.ts": "d87ff0deef3fb495bc0d862278ff96da5a06acf0625ca27769fc52ac0d3d6ece",
|
||||||
|
"https://deno.land/std@0.205.0/path/posix/_util.ts": "ecf49560fedd7dd376c6156cc5565cad97c1abe9824f4417adebc7acc36c93e5",
|
||||||
|
"https://deno.land/std@0.205.0/path/posix/basename.ts": "a630aeb8fd8e27356b1823b9dedd505e30085015407caa3396332752f6b8406a",
|
||||||
|
"https://deno.land/std@0.205.0/path/posix/common.ts": "e781d395dc76f6282e3f7dd8de13194abb8b04a82d109593141abc6e95755c8b",
|
||||||
|
"https://deno.land/std@0.205.0/path/posix/dirname.ts": "f48c9c42cc670803b505478b7ef162c7cfa9d8e751b59d278b2ec59470531472",
|
||||||
|
"https://deno.land/std@0.205.0/path/posix/extname.ts": "ee7f6571a9c0a37f9218fbf510c440d1685a7c13082c348d701396cc795e0be0",
|
||||||
|
"https://deno.land/std@0.205.0/path/posix/format.ts": "b94876f77e61bfe1f147d5ccb46a920636cd3cef8be43df330f0052b03875968",
|
||||||
|
"https://deno.land/std@0.205.0/path/posix/from_file_url.ts": "b97287a83e6407ac27bdf3ab621db3fccbf1c27df0a1b1f20e1e1b5acf38a379",
|
||||||
|
"https://deno.land/std@0.205.0/path/posix/glob.ts": "86c3f06d1c98303613c74650961c3e24bdb871cde2a97c3ae7f0f6d4abbef445",
|
||||||
|
"https://deno.land/std@0.205.0/path/posix/is_absolute.ts": "159900a3422d11069d48395568217eb7fc105ceda2683d03d9b7c0f0769e01b8",
|
||||||
|
"https://deno.land/std@0.205.0/path/posix/join.ts": "0c0d84bdc344876930126640011ec1b888e6facf74153ffad9ef26813aa2a076",
|
||||||
|
"https://deno.land/std@0.205.0/path/posix/mod.ts": "6bfa8a42d85345b12dbe8571028ca2c62d460b6ef968125e498602b43b6cf6b6",
|
||||||
|
"https://deno.land/std@0.205.0/path/posix/normalize.ts": "11de90a94ab7148cc46e5a288f7d732aade1d616bc8c862f5560fa18ff987b4b",
|
||||||
|
"https://deno.land/std@0.205.0/path/posix/parse.ts": "199208f373dd93a792e9c585352bfc73a6293411bed6da6d3bc4f4ef90b04c8e",
|
||||||
|
"https://deno.land/std@0.205.0/path/posix/relative.ts": "e2f230608b0f083e6deaa06e063943e5accb3320c28aef8d87528fbb7fe6504c",
|
||||||
|
"https://deno.land/std@0.205.0/path/posix/resolve.ts": "51579d83159d5c719518c9ae50812a63959bbcb7561d79acbdb2c3682236e285",
|
||||||
|
"https://deno.land/std@0.205.0/path/posix/separator.ts": "0b6573b5f3269a3164d8edc9cefc33a02dd51003731c561008c8bb60220ebac1",
|
||||||
|
"https://deno.land/std@0.205.0/path/posix/to_file_url.ts": "08d43ea839ee75e9b8b1538376cfe95911070a655cd312bc9a00f88ef14967b6",
|
||||||
|
"https://deno.land/std@0.205.0/path/posix/to_namespaced_path.ts": "c9228a0e74fd37e76622cd7b142b8416663a9b87db643302fa0926b5a5c83bdc",
|
||||||
|
"https://deno.land/std@0.205.0/path/relative.ts": "23d45ede8b7ac464a8299663a43488aad6b561414e7cbbe4790775590db6349c",
|
||||||
|
"https://deno.land/std@0.205.0/path/resolve.ts": "5b184efc87155a0af9fa305ff68a109e28de9aee81fc3e77cd01380f19daf867",
|
||||||
|
"https://deno.land/std@0.205.0/path/separator.ts": "40a3e9a4ad10bef23bc2cd6c610291b6c502a06237c2c4cd034a15ca78dedc1f",
|
||||||
|
"https://deno.land/std@0.205.0/path/to_file_url.ts": "edaafa089e0bce386e1b2d47afe7c72e379ff93b28a5829a5885e4b6c626d864",
|
||||||
|
"https://deno.land/std@0.205.0/path/to_namespaced_path.ts": "cf8734848aac3c7527d1689d2adf82132b1618eff3cc523a775068847416b22a",
|
||||||
|
"https://deno.land/std@0.205.0/path/windows/_util.ts": "f32b9444554c8863b9b4814025c700492a2b57ff2369d015360970a1b1099d54",
|
||||||
|
"https://deno.land/std@0.205.0/path/windows/basename.ts": "8a9dbf7353d50afbc5b221af36c02a72c2d1b2b5b9f7c65bf6a5a2a0baf88ad3",
|
||||||
|
"https://deno.land/std@0.205.0/path/windows/common.ts": "e781d395dc76f6282e3f7dd8de13194abb8b04a82d109593141abc6e95755c8b",
|
||||||
|
"https://deno.land/std@0.205.0/path/windows/dirname.ts": "5c2aa541384bf0bd9aca821275d2a8690e8238fa846198ef5c7515ce31a01a94",
|
||||||
|
"https://deno.land/std@0.205.0/path/windows/extname.ts": "07f4fa1b40d06a827446b3e3bcc8d619c5546b079b8ed0c77040bbef716c7614",
|
||||||
|
"https://deno.land/std@0.205.0/path/windows/format.ts": "343019130d78f172a5c49fdc7e64686a7faf41553268961e7b6c92a6d6548edf",
|
||||||
|
"https://deno.land/std@0.205.0/path/windows/from_file_url.ts": "d53335c12b0725893d768be3ac6bf0112cc5b639d2deb0171b35988493b46199",
|
||||||
|
"https://deno.land/std@0.205.0/path/windows/glob.ts": "0286fb89ecd21db5cbf3b6c79e2b87c889b03f1311e66fb769e6b905d4142332",
|
||||||
|
"https://deno.land/std@0.205.0/path/windows/is_absolute.ts": "245b56b5f355ede8664bd7f080c910a97e2169972d23075554ae14d73722c53c",
|
||||||
|
"https://deno.land/std@0.205.0/path/windows/join.ts": "e6600bf88edeeef4e2276e155b8de1d5dec0435fd526ba2dc4d37986b2882f16",
|
||||||
|
"https://deno.land/std@0.205.0/path/windows/mod.ts": "c3d1a36fbf9f6db1320bcb4fbda8de011d25461be3497105e15cbea1e3726198",
|
||||||
|
"https://deno.land/std@0.205.0/path/windows/normalize.ts": "9deebbf40c81ef540b7b945d4ccd7a6a2c5a5992f791e6d3377043031e164e69",
|
||||||
|
"https://deno.land/std@0.205.0/path/windows/parse.ts": "120faf778fe1f22056f33ded069b68e12447668fcfa19540c0129561428d3ae5",
|
||||||
|
"https://deno.land/std@0.205.0/path/windows/relative.ts": "026855cd2c36c8f28f1df3c6fbd8f2449a2aa21f48797a74700c5d872b86d649",
|
||||||
|
"https://deno.land/std@0.205.0/path/windows/resolve.ts": "5ff441ab18a2346abadf778121128ee71bda4d0898513d4639a6ca04edca366b",
|
||||||
|
"https://deno.land/std@0.205.0/path/windows/separator.ts": "ae21f27015f10510ed1ac4a0ba9c4c9c967cbdd9d9e776a3e4967553c397bd5d",
|
||||||
|
"https://deno.land/std@0.205.0/path/windows/to_file_url.ts": "8e9ea9e1ff364aa06fa72999204229952d0a279dbb876b7b838b2b2fea55cce3",
|
||||||
|
"https://deno.land/std@0.205.0/path/windows/to_namespaced_path.ts": "e0f4d4a5e77f28a5708c1a33ff24360f35637ba6d8f103d19661255ef7bfd50d",
|
||||||
"https://deno.land/x/zod@v3.21.4/ZodError.ts": "4de18ff525e75a0315f2c12066b77b5c2ae18c7c15ef7df7e165d63536fdf2ea",
|
"https://deno.land/x/zod@v3.21.4/ZodError.ts": "4de18ff525e75a0315f2c12066b77b5c2ae18c7c15ef7df7e165d63536fdf2ea",
|
||||||
"https://deno.land/x/zod@v3.21.4/errors.ts": "5285922d2be9700cc0c70c95e4858952b07ae193aa0224be3cbd5cd5567eabef",
|
"https://deno.land/x/zod@v3.21.4/errors.ts": "5285922d2be9700cc0c70c95e4858952b07ae193aa0224be3cbd5cd5567eabef",
|
||||||
"https://deno.land/x/zod@v3.21.4/external.ts": "a6cfbd61e9e097d5f42f8a7ed6f92f93f51ff927d29c9fbaec04f03cbce130fe",
|
"https://deno.land/x/zod@v3.21.4/external.ts": "a6cfbd61e9e097d5f42f8a7ed6f92f93f51ff927d29c9fbaec04f03cbce130fe",
|
||||||
|
|||||||
172
mod.ts
172
mod.ts
@@ -1,14 +1,17 @@
|
|||||||
// Imports
|
// Imports
|
||||||
import * as JSONC from "https://deno.land/std@0.203.0/jsonc/mod.ts"
|
import * as JSONC from "https://deno.land/std@0.205.0/jsonc/mod.ts"
|
||||||
import { z as is } from "https://deno.land/x/zod@v3.21.4/mod.ts"
|
import { z as is } from "https://deno.land/x/zod@v3.21.4/mod.ts"
|
||||||
import { fromZodError } from "https://esm.sh/zod-validation-error@1.5.0?pin=v133"
|
import { fromZodError } from "https://esm.sh/zod-validation-error@1.5.0?pin=v133"
|
||||||
import { bgBrightBlue, bold, gray, italic, underline, yellow } from "https://deno.land/std@0.203.0/fmt/colors.ts"
|
import { bgBrightBlue, bold, gray, italic, underline, yellow } from "https://deno.land/std@0.205.0/fmt/colors.ts"
|
||||||
|
|
||||||
// Structure flags =========================================================================================================
|
// Structure flags =========================================================================================================
|
||||||
|
|
||||||
/** Common flags */
|
/** Common flags */
|
||||||
const common = is.object({
|
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" : ""),
|
quiet: is.boolean().optional().transform((v) => v ? "--quiet" : ""),
|
||||||
config: is.union([
|
config: is.union([
|
||||||
is.boolean().transform((v) => v === false ? "--no-config" : ""),
|
is.boolean().transform((v) => v === false ? "--no-config" : ""),
|
||||||
@@ -23,9 +26,13 @@ const runnable = is.object({
|
|||||||
location: is.string().optional().transform((v) => v ? `--location='${v}'` : ""),
|
location: is.string().optional().transform((v) => v ? `--location='${v}'` : ""),
|
||||||
seed: is.number().optional().transform((v) => typeof v === "number" ? `--seed=${v}` : ""),
|
seed: is.number().optional().transform((v) => typeof v === "number" ? `--seed=${v}` : ""),
|
||||||
v8Flags: is.array(is.string()).optional().transform((v) => v?.length ? `--v8-flags='${v.join(",")}'` : ""),
|
v8Flags: is.array(is.string()).optional().transform((v) => v?.length ? `--v8-flags='${v.join(",")}'` : ""),
|
||||||
ignoreCertificateErrors: is.boolean().optional().transform((v) =>
|
certificateErrors: is.boolean().optional().transform((v) =>
|
||||||
v === true ? "--unsafely-ignore-certificate-errors" : ""
|
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 */
|
/** Lock file flags */
|
||||||
@@ -120,14 +127,12 @@ const _modules = is.object({
|
|||||||
npm: is.boolean().optional().transform((v) => v === false ? "--no-npm" : ""),
|
npm: is.boolean().optional().transform((v) => v === false ? "--no-npm" : ""),
|
||||||
check: is.union([
|
check: is.union([
|
||||||
is.boolean().transform((v) => v ? "--check=all" : "--no-check"),
|
is.boolean().transform((v) => v ? "--check=all" : "--no-check"),
|
||||||
is.object({
|
is.string().min(1).transform((v) => `--check=${v}`),
|
||||||
remote: is.boolean().transform((v) => v ? "--check=all" : "--check=all --no-check=remote"),
|
]).optional(),
|
||||||
}).transform((v) => Object.values(v).filter(Boolean).join(" ")),
|
|
||||||
]).optional().transform((v) => Object.values(v ?? {}).filter(Boolean).join(" ")),
|
|
||||||
reload: is.union([
|
reload: is.union([
|
||||||
is.boolean().transform((v) => v ? "--reload" : ""),
|
is.boolean().transform((v) => v ? "--reload" : ""),
|
||||||
is.array(is.string()).transform((v) => v.length ? `--reload=${v.join(",")}` : ""),
|
is.array(is.string()).transform((v) => v.length ? `--reload=${v.join(",")}` : ""),
|
||||||
]).optional().transform((v) => Object.values(v ?? {}).filter(Boolean).join(" ")),
|
]).optional(),
|
||||||
node_modules: is.boolean().optional().transform((v) => typeof v === "boolean" ? `--node-modules-dir=${v}` : ""),
|
node_modules: is.boolean().optional().transform((v) => typeof v === "boolean" ? `--node-modules-dir=${v}` : ""),
|
||||||
vendor: is.boolean().optional().transform((v) => typeof v === "boolean" ? `--vendor=${v}` : ""),
|
vendor: is.boolean().optional().transform((v) => typeof v === "boolean" ? `--vendor=${v}` : ""),
|
||||||
})
|
})
|
||||||
@@ -135,7 +140,14 @@ const _modules = is.object({
|
|||||||
/** Module flags */
|
/** Module flags */
|
||||||
const modules = {
|
const modules = {
|
||||||
all: _modules.optional().transform((v) => Object.values(v ?? {}).filter(Boolean).join(" ")),
|
all: _modules.optional().transform((v) => Object.values(v ?? {}).filter(Boolean).join(" ")),
|
||||||
nocache: _modules.pick({ check: true, reload: true, npm: true, remote: true, node_modules: true, vendor: true })
|
nocache: _modules.pick({
|
||||||
|
check: true,
|
||||||
|
reload: true,
|
||||||
|
npm: true,
|
||||||
|
remote: true,
|
||||||
|
node_modules: true,
|
||||||
|
vendor: true,
|
||||||
|
})
|
||||||
.optional()
|
.optional()
|
||||||
.transform((v) => Object.values(v ?? {}).filter(Boolean).join(" ")),
|
.transform((v) => Object.values(v ?? {}).filter(Boolean).join(" ")),
|
||||||
vendor: _modules.pick({
|
vendor: _modules.pick({
|
||||||
@@ -143,32 +155,37 @@ const modules = {
|
|||||||
node_modules: true,
|
node_modules: true,
|
||||||
vendor: true,
|
vendor: true,
|
||||||
}).optional().transform((v) => Object.values(v ?? {}).filter(Boolean).join(" ")),
|
}).optional().transform((v) => Object.values(v ?? {}).filter(Boolean).join(" ")),
|
||||||
doc: _modules.pick({ reload: true, npm: true, remote: true }).optional().transform((v) =>
|
doc: _modules.pick({ reload: true, npm: true, remote: true }).optional()
|
||||||
Object.values(v ?? {}).filter(Boolean).join(" ")
|
.transform((v) => Object.values(v ?? {}).filter(Boolean).join(" ")),
|
||||||
),
|
nocheck: _modules.pick({
|
||||||
nocheck: _modules.pick({ reload: true, npm: true, remote: true, node_modules: true, vendor: true }).optional()
|
reload: true,
|
||||||
|
npm: true,
|
||||||
|
remote: true,
|
||||||
|
node_modules: true,
|
||||||
|
vendor: true,
|
||||||
|
}).optional()
|
||||||
.transform((v) => Object.values(v ?? {}).filter(Boolean).join(" ")),
|
.transform((v) => Object.values(v ?? {}).filter(Boolean).join(" ")),
|
||||||
}
|
}
|
||||||
|
|
||||||
/** Inspect flags */
|
/** Inspect flags */
|
||||||
const inspect = is.union([
|
const inspect = is.union([
|
||||||
is.string().transform((v) => v ? `--inspect='${v}'` : ""),
|
is.string().min(1).transform((v) => `--inspect='${v}'`),
|
||||||
is.object({
|
is.object({
|
||||||
listen: is.string().transform((v) => v ? `--inspect='${v}'` : ""),
|
listen: is.string().min(1).optional().transform((v) => v ? `--inspect='${v}'` : ""),
|
||||||
break: is.string().transform((v) => v ? `--inspect-brk='${v}'` : ""),
|
break: is.string().min(1).optional().transform((v) => v ? `--inspect-brk='${v}'` : ""),
|
||||||
wait: is.string().transform((v) => v.length ? `--inspect-wait='${v}'` : ""),
|
wait: is.string().min(1).optional().transform((v) => v ? `--inspect-wait='${v}'` : ""),
|
||||||
}),
|
}).transform((v) => Object.values(v ?? {}).filter(Boolean).join(" ")),
|
||||||
]).optional().transform((v) => Object.values(v ?? {}).filter(Boolean).join(" "))
|
]).optional()
|
||||||
|
|
||||||
/** Watch flags */
|
/** Watch flags */
|
||||||
const watch = is.union([
|
const watch = is.union([
|
||||||
is.boolean().transform((v) => v ? "--watch" : ""),
|
is.boolean().transform((v) => v ? "--watch" : ""),
|
||||||
is.array(is.string()).transform((v) => v.length ? `--watch='${v.join(",")}'` : ""),
|
is.array(is.string()).transform((v) => v.length ? `--watch='${v.join(",")}'` : ""),
|
||||||
is.object({
|
is.object({
|
||||||
files: is.array(is.string()).transform((v) => v.length ? `--watch='${v.join(",")}'` : ""),
|
files: is.array(is.string()).optional().transform((v) => v?.length ? `--watch='${v.join(",")}'` : ""),
|
||||||
clearScreen: is.boolean().transform((v) => v === false ? "--no-clear-screen" : ""),
|
clearScreen: is.boolean().optional().transform((v) => v === false ? "--no-clear-screen" : ""),
|
||||||
}),
|
}).transform((v) => Object.values(v ?? {}).filter(Boolean).join(" ")),
|
||||||
]).optional().transform((v) => Object.values(v ?? {}).filter(Boolean).join(" "))
|
]).optional()
|
||||||
|
|
||||||
// Deno flags =========================================================================================================
|
// Deno flags =========================================================================================================
|
||||||
|
|
||||||
@@ -218,14 +235,20 @@ const coverage = common.pick({ unstable: true, quiet: true }).extend({
|
|||||||
output: is.string().optional().transform((v) => v ? `--output='${v}'` : ""),
|
output: is.string().optional().transform((v) => v ? `--output='${v}'` : ""),
|
||||||
}).transform((v) => Object.values(v).filter(Boolean).join(" "))
|
}).transform((v) => Object.values(v).filter(Boolean).join(" "))
|
||||||
|
|
||||||
const doc = common.pick({ unstable: true, quiet: true, importMap: true }).extend({
|
const doc = common.pick({ unstable: true, quiet: true, importMap: true })
|
||||||
lock: lock.read,
|
.extend({
|
||||||
modules: modules.doc,
|
lock: lock.read,
|
||||||
private: is.boolean().optional().transform((v) => v ? "--private" : ""),
|
modules: modules.doc,
|
||||||
json: is.boolean().optional().transform((v) => v ? "--json" : ""),
|
private: is.boolean().optional().transform((v) => v ? "--private" : ""),
|
||||||
}).transform((v) => Object.values(v).filter(Boolean).join(" "))
|
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(runnable.pick({ location: true, v8Flags: true, seed: true })).extend({
|
const _eval = common.merge(
|
||||||
|
runnable.pick({ location: true, v8Flags: true, seed: true }),
|
||||||
|
).extend({
|
||||||
lock: lock.write,
|
lock: lock.write,
|
||||||
modules: modules.all,
|
modules: modules.all,
|
||||||
inspect,
|
inspect,
|
||||||
@@ -262,10 +285,6 @@ const install = common.merge(runnable).extend({
|
|||||||
force: is.boolean().optional().transform((v) => v ? "--force" : ""),
|
force: is.boolean().optional().transform((v) => v ? "--force" : ""),
|
||||||
}).transform((v) => Object.values(v).filter(Boolean).join(" "))
|
}).transform((v) => Object.values(v).filter(Boolean).join(" "))
|
||||||
|
|
||||||
const uninstall = common.pick({ quiet: true, unstable: true }).extend({
|
|
||||||
root: is.string().optional().transform((v) => v ? `--root='${v}'` : ""),
|
|
||||||
}).transform((v) => Object.values(v).filter(Boolean).join(" "))
|
|
||||||
|
|
||||||
const lint = common.pick({ config: true, unstable: true, quiet: true }).extend({
|
const lint = common.pick({ config: true, unstable: true, quiet: true }).extend({
|
||||||
rules: is.object({
|
rules: is.object({
|
||||||
tags: is.array(is.string()).optional().transform((v) => v?.length ? `--rules-tags=${v.join(",")}` : ""),
|
tags: is.array(is.string()).optional().transform((v) => v?.length ? `--rules-tags=${v.join(",")}` : ""),
|
||||||
@@ -304,7 +323,7 @@ const test = common.merge(runnable).extend({
|
|||||||
doc: is.boolean().optional().transform((v) => v ? "--doc" : ""),
|
doc: is.boolean().optional().transform((v) => v ? "--doc" : ""),
|
||||||
traceOps: is.boolean().optional().transform((v) => v ? "--trace-ops" : ""),
|
traceOps: is.boolean().optional().transform((v) => v ? "--trace-ops" : ""),
|
||||||
run: is.boolean().optional().transform((v) => v === false ? "--no-run" : ""),
|
run: is.boolean().optional().transform((v) => v === false ? "--no-run" : ""),
|
||||||
allowNone: is.boolean().optional().transform((v) => v === true ? "--allow-none" : ""),
|
allowNone: is.boolean().optional().transform((v) => v ? "--allow-none" : ""),
|
||||||
failFast: is.union([
|
failFast: is.union([
|
||||||
is.boolean().transform((v) => v ? "--fail-fast" : ""),
|
is.boolean().transform((v) => v ? "--fail-fast" : ""),
|
||||||
is.number().transform((v) => `--fail-fast=${v}`),
|
is.number().transform((v) => `--fail-fast=${v}`),
|
||||||
@@ -326,6 +345,10 @@ const types = common.pick({
|
|||||||
quiet: true,
|
quiet: true,
|
||||||
}).transform((v) => Object.values(v).filter(Boolean).join(" "))
|
}).transform((v) => Object.values(v).filter(Boolean).join(" "))
|
||||||
|
|
||||||
|
const uninstall = common.pick({ quiet: true, unstable: true }).extend({
|
||||||
|
root: is.string().optional().transform((v) => v ? `--root='${v}'` : ""),
|
||||||
|
}).transform((v) => Object.values(v).filter(Boolean).join(" "))
|
||||||
|
|
||||||
const vendor = common.extend({
|
const vendor = common.extend({
|
||||||
lock: lock.check,
|
lock: lock.check,
|
||||||
modules: modules.vendor,
|
modules: modules.vendor,
|
||||||
@@ -342,13 +365,19 @@ const vendor = common.extend({
|
|||||||
|
|
||||||
const _make = is.object({
|
const _make = is.object({
|
||||||
task: is.union([is.string(), is.array(is.string())]).transform((v) => Array.isArray(v) ? v.join(" ") : v),
|
task: is.union([is.string(), is.array(is.string())]).transform((v) => Array.isArray(v) ? v.join(" ") : v),
|
||||||
description: is.union([is.string(), is.array(is.string())]).transform((v) => Array.isArray(v) ? v.join(" ") : v)
|
description: is.union([is.string(), is.array(is.string())]).default("").transform((v) =>
|
||||||
.default(""),
|
Array.isArray(v) ? v.join(" ") : v
|
||||||
env: is.record(is.string(), is.union([is.boolean(), is.string()])).transform((v) =>
|
),
|
||||||
|
env: is.record(is.string(), is.union([is.boolean(), is.string()])).transform((
|
||||||
|
v,
|
||||||
|
) =>
|
||||||
Object.fromEntries(
|
Object.fromEntries(
|
||||||
Object.entries(v).map(([k, v]) => [k, v === true ? Deno.env.get(k) ?? "" : v === false ? "" : v]),
|
Object.entries(v).map((
|
||||||
|
[k, v],
|
||||||
|
) => [k, v === true ? Deno.env.get(k) ?? "" : v === false ? "" : v]),
|
||||||
)
|
)
|
||||||
).default(() => ({})),
|
).default(() => ({})),
|
||||||
|
cwd: is.string().optional(),
|
||||||
deno: is.object({
|
deno: is.object({
|
||||||
bench,
|
bench,
|
||||||
bundle,
|
bundle,
|
||||||
@@ -372,18 +401,33 @@ const _make = is.object({
|
|||||||
})
|
})
|
||||||
|
|
||||||
/** Compute command to execute after applying deno flags */
|
/** Compute command to execute after applying deno flags */
|
||||||
export function command(raw: string, { deno }: Pick<is.infer<typeof _make>, "deno">, { colors = false } = {}) {
|
export function command(
|
||||||
|
raw: string,
|
||||||
|
{ deno }: Pick<is.infer<typeof _make>, "deno">,
|
||||||
|
{ colors = false } = {},
|
||||||
|
) {
|
||||||
for (const [subcommand, flags] of Object.entries(deno)) {
|
for (const [subcommand, flags] of Object.entries(deno)) {
|
||||||
raw = raw.replaceAll(`deno ${subcommand}`, `deno ${subcommand} ${colors ? italic(underline(flags)) : flags}`)
|
raw = raw.replaceAll(
|
||||||
|
`deno ${subcommand}`,
|
||||||
|
`deno ${subcommand} ${colors ? italic(underline(flags)) : flags}`,
|
||||||
|
)
|
||||||
}
|
}
|
||||||
return raw
|
return raw
|
||||||
}
|
}
|
||||||
|
|
||||||
/** Entry point */
|
/** Entry point */
|
||||||
export async function make(
|
export async function make(
|
||||||
{ task = "", config = "deno.jsonc", log = console.log, exit = true, stdio = "inherit" as "inherit" | "null" } = {},
|
{
|
||||||
|
task = "",
|
||||||
|
config = "deno.jsonc",
|
||||||
|
log = console.log,
|
||||||
|
exit = true,
|
||||||
|
stdio = "inherit" as "inherit" | "piped" | "null",
|
||||||
|
} = {},
|
||||||
) {
|
) {
|
||||||
const { "+tasks": _tasks = {} } = JSONC.parse(await Deno.readTextFile(config)) as {
|
const { "+tasks": _tasks = {} } = JSONC.parse(
|
||||||
|
await Deno.readTextFile(config),
|
||||||
|
) as {
|
||||||
"+tasks"?: Record<string, unknown>
|
"+tasks"?: Record<string, unknown>
|
||||||
}
|
}
|
||||||
const tasks = Object.fromEntries(
|
const tasks = Object.fromEntries(
|
||||||
@@ -396,40 +440,60 @@ export async function make(
|
|||||||
}),
|
}),
|
||||||
)
|
)
|
||||||
if (task) {
|
if (task) {
|
||||||
|
const { task: raw, env, deno, cwd } = tasks[task]
|
||||||
const temp = ".deno-make.json"
|
const temp = ".deno-make.json"
|
||||||
const { task: raw, env, deno } = tasks[task]
|
const decoder = new TextDecoder()
|
||||||
try {
|
try {
|
||||||
const make = command(raw, { deno })
|
const make = command(raw, { deno })
|
||||||
await Deno.writeTextFile(temp, JSON.stringify({ tasks: { make } }))
|
await Deno.writeTextFile(temp, JSON.stringify({ tasks: { make } }))
|
||||||
const process = new Deno.Command("deno", {
|
const process = new Deno.Command("deno", {
|
||||||
args: ["task", "--config", temp, "make"],
|
args: ["task", ...(cwd ? ["--cwd", cwd] : []), "--config", temp, "make"],
|
||||||
stdout: stdio,
|
stdout: stdio,
|
||||||
stderr: stdio,
|
stderr: stdio,
|
||||||
stdin: stdio,
|
stdin: stdio,
|
||||||
env,
|
env,
|
||||||
windowsRawArguments: true,
|
windowsRawArguments: true,
|
||||||
})
|
}).spawn()
|
||||||
const { code } = await process.output()
|
if (stdio === "piped") {
|
||||||
|
const { stdout, stderr } = await process.output()
|
||||||
|
log(decoder.decode(stdout))
|
||||||
|
log(decoder.decode(stderr))
|
||||||
|
await process.stdin?.close()
|
||||||
|
}
|
||||||
|
const { code } = await process.status
|
||||||
if (exit) {
|
if (exit) {
|
||||||
Deno.exit(code)
|
Deno.exit(code)
|
||||||
}
|
}
|
||||||
return { code }
|
return { code }
|
||||||
} finally {
|
} finally {
|
||||||
await Deno.remove(temp)
|
await Deno.remove(temp).catch(() => null)
|
||||||
}
|
}
|
||||||
} else if (Object.keys(tasks).length) {
|
} else if (Object.keys(tasks).length) {
|
||||||
for (const [name, { task, description, env, deno }] of Object.entries(tasks)) {
|
for (
|
||||||
|
const [name, { task, description, env, cwd, deno }] of Object.entries(
|
||||||
|
tasks,
|
||||||
|
)
|
||||||
|
) {
|
||||||
const { icon = "" } = description.match(/^(?<icon>[\p{Emoji}\u200d]+) /u)?.groups ?? {}
|
const { icon = "" } = description.match(/^(?<icon>[\p{Emoji}\u200d]+) /u)?.groups ?? {}
|
||||||
log(bgBrightBlue(`${icon} ${bold(name)}`.trim().padEnd(32)))
|
log(bgBrightBlue(`${icon} ${bold(name)}`.trim().padEnd(32)))
|
||||||
log(description.replace(icon, "").trim())
|
log(description.replace(icon, "").trim())
|
||||||
if (Object.keys(env).length) {
|
if (Object.keys(env).length) {
|
||||||
log(gray(`Environment variables:`))
|
log(gray(`Environment variables:`))
|
||||||
for (const [k, v] of Object.entries(env)) {
|
for (const [k, v] of Object.entries(env)) {
|
||||||
const inherited =
|
const inherited = ((_tasks as Record<string, is.infer<typeof _make>>)[name]
|
||||||
((_tasks as Record<string, is.infer<typeof _make>>)[name].env[k] as unknown as string | boolean) === true
|
.env[k] as unknown as string | boolean) === true
|
||||||
log(gray(` ${k}=${v}${inherited ? underline(italic("→ inherited")) : ""}`.trim()))
|
log(
|
||||||
|
gray(
|
||||||
|
` ${k}=${v}${inherited ? underline(italic("→ inherited")) : ""}`
|
||||||
|
.trim(),
|
||||||
|
),
|
||||||
|
)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
if (cwd) {
|
||||||
|
log(gray(`Working directory:`))
|
||||||
|
log(gray(` ${cwd}`))
|
||||||
|
}
|
||||||
log(gray(`Task:`))
|
log(gray(`Task:`))
|
||||||
log(gray(` ${command(task, { deno }, { colors: true })}`))
|
log(gray(` ${command(task, { deno }, { colors: true })}`))
|
||||||
log("")
|
log("")
|
||||||
|
|||||||
@@ -1,3 +0,0 @@
|
|||||||
Deno.bench("URL parsing", () => {
|
|
||||||
new URL("https://deno.land")
|
|
||||||
})
|
|
||||||
47
mod_test.ts
47
mod_test.ts
@@ -1,6 +1,6 @@
|
|||||||
import { make } from "./mod.ts"
|
import { make } from "./mod.ts"
|
||||||
import { expandGlob } from "https://deno.land/std@0.204.0/fs/mod.ts"
|
import { expandGlob } from "https://deno.land/std@0.205.0/fs/mod.ts"
|
||||||
import * as JSONC from "https://deno.land/std@0.203.0/jsonc/mod.ts"
|
import * as JSONC from "https://deno.land/std@0.205.0/jsonc/mod.ts"
|
||||||
import { expect } from "https://esm.sh/chai@4.3.10?pin=v133"
|
import { expect } from "https://esm.sh/chai@4.3.10?pin=v133"
|
||||||
|
|
||||||
for await (const { path, name: _name } of expandGlob("tests/*.jsonc")) {
|
for await (const { path, name: _name } of expandGlob("tests/*.jsonc")) {
|
||||||
@@ -11,17 +11,24 @@ for await (const { path, name: _name } of expandGlob("tests/*.jsonc")) {
|
|||||||
continue
|
continue
|
||||||
}
|
}
|
||||||
Deno.test(`${name}: ${task}`, async () => {
|
Deno.test(`${name}: ${task}`, async () => {
|
||||||
const { code } = await make({ task, config: path, log: () => null, exit: false, stdio: "null" })
|
const stdio = [] as string[]
|
||||||
expect(code).to.equal(0)
|
const { code } = await make({
|
||||||
|
task,
|
||||||
|
config: path,
|
||||||
|
stdio: "piped",
|
||||||
|
log: (message) => stdio.push(message),
|
||||||
|
exit: false,
|
||||||
|
})
|
||||||
|
try {
|
||||||
|
expect(code).to.equal(0)
|
||||||
|
} catch (error) {
|
||||||
|
console.log(...stdio)
|
||||||
|
throw error
|
||||||
|
}
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/*Deno.test("deno task make: exit code", async () => {
|
|
||||||
const {code} = await make({task:"make", config:"tests/deno_make.jsonc", log:() => null, exit:true})
|
|
||||||
expect(code).to.equal(1)
|
|
||||||
})*/
|
|
||||||
|
|
||||||
Deno.test("deno task make: print tasks", async () => {
|
Deno.test("deno task make: print tasks", async () => {
|
||||||
const stdio = [] as string[]
|
const stdio = [] as string[]
|
||||||
const { code } = await make({ config: "tests/deno_make.jsonc", log: (message) => stdio.push(message), exit: false })
|
const { code } = await make({ config: "tests/deno_make.jsonc", log: (message) => stdio.push(message), exit: false })
|
||||||
@@ -29,6 +36,28 @@ Deno.test("deno task make: print tasks", async () => {
|
|||||||
expect(code).to.equal(0)
|
expect(code).to.equal(0)
|
||||||
})
|
})
|
||||||
|
|
||||||
|
Deno.test("deno task make: exit code", async () => {
|
||||||
|
const { exit } = Deno
|
||||||
|
try {
|
||||||
|
let code = 0
|
||||||
|
Object.assign(Deno, { exit: (rc: number) => code = rc })
|
||||||
|
await make({ task: "make:exit", config: "tests/deno_make.jsonc", exit: true, stdio: "null" })
|
||||||
|
expect(code).to.equal(1)
|
||||||
|
} finally {
|
||||||
|
Object.assign(Deno, { exit })
|
||||||
|
}
|
||||||
|
})
|
||||||
|
|
||||||
|
Deno.test("deno task make: handle removal of .deno-make.json gracefully", async () => {
|
||||||
|
const { code } = await make({
|
||||||
|
task: "make:rm_deno_make_json",
|
||||||
|
config: "tests/deno_make.jsonc",
|
||||||
|
exit: false,
|
||||||
|
stdio: "null",
|
||||||
|
}).catch((error) => error)
|
||||||
|
expect(code).to.equal(0)
|
||||||
|
})
|
||||||
|
|
||||||
Deno.test("deno task make: tasks empty", async () => {
|
Deno.test("deno task make: tasks empty", async () => {
|
||||||
const stdio = [] as string[]
|
const stdio = [] as string[]
|
||||||
const { code } = await make({
|
const { code } = await make({
|
||||||
|
|||||||
4
tests/.deno.lock
generated
4
tests/.deno.lock
generated
@@ -1,4 +0,0 @@
|
|||||||
{
|
|
||||||
"version": "3",
|
|
||||||
"remote": {}
|
|
||||||
}
|
|
||||||
@@ -1 +0,0 @@
|
|||||||
{}
|
|
||||||
26
tests/deno_bench.jsonc
Normal file
26
tests/deno_bench.jsonc
Normal file
@@ -0,0 +1,26 @@
|
|||||||
|
{
|
||||||
|
"tasks": {
|
||||||
|
"make": "deno run --allow-env --allow-read --allow-write=.deno-make.json --allow-run=deno ./mod.ts $0"
|
||||||
|
},
|
||||||
|
"+tasks": {
|
||||||
|
"flags:none": {
|
||||||
|
"task": "deno bench",
|
||||||
|
"cwd": "tests",
|
||||||
|
"deno": {
|
||||||
|
"bench": {}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"flags:bench": {
|
||||||
|
"task": "deno bench",
|
||||||
|
"cwd": "tests",
|
||||||
|
"deno": {
|
||||||
|
"bench": {
|
||||||
|
"json": true,
|
||||||
|
"run": false,
|
||||||
|
"filter": "mod_bench.ts",
|
||||||
|
"ignore": ["mod.ts"]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
23
tests/deno_bundle.jsonc
Normal file
23
tests/deno_bundle.jsonc
Normal file
@@ -0,0 +1,23 @@
|
|||||||
|
{
|
||||||
|
"tasks": {
|
||||||
|
"make": "deno run --allow-env --allow-read --allow-write=.deno-make.json --allow-run=deno ./mod.ts $0"
|
||||||
|
},
|
||||||
|
"+tasks": {
|
||||||
|
"flags:none": {
|
||||||
|
"task": "deno bundle mod.ts",
|
||||||
|
"cwd": "tests",
|
||||||
|
"deno": {
|
||||||
|
"bundle": {}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"flags:bundle": {
|
||||||
|
"task": "deno bundle mod.ts",
|
||||||
|
"cwd": "tests",
|
||||||
|
"deno": {
|
||||||
|
"bundle": {
|
||||||
|
"ext": "js"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -4,7 +4,11 @@
|
|||||||
},
|
},
|
||||||
"+tasks": {
|
"+tasks": {
|
||||||
"flags:none": {
|
"flags:none": {
|
||||||
"task": "deno cache tests/mod.ts"
|
"task": "deno cache mod.ts",
|
||||||
|
"cwd": "tests",
|
||||||
|
"deno": {
|
||||||
|
"cache": {}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -4,10 +4,15 @@
|
|||||||
},
|
},
|
||||||
"+tasks": {
|
"+tasks": {
|
||||||
"flags:none": {
|
"flags:none": {
|
||||||
"task": "deno check tests/mod.ts"
|
"task": "deno check mod.ts",
|
||||||
|
"cwd": "tests",
|
||||||
|
"deno": {
|
||||||
|
"check": {}
|
||||||
|
}
|
||||||
},
|
},
|
||||||
"flags:all": {
|
"flags:check": {
|
||||||
"task": "deno check tests/mod.ts",
|
"task": "deno check mod.ts",
|
||||||
|
"cwd": "tests",
|
||||||
"deno": {
|
"deno": {
|
||||||
"check": {
|
"check": {
|
||||||
"all": true
|
"all": true
|
||||||
|
|||||||
@@ -4,60 +4,274 @@
|
|||||||
},
|
},
|
||||||
"+tasks": {
|
"+tasks": {
|
||||||
"flags:general": {
|
"flags:general": {
|
||||||
"task": "deno run tests/mod.ts",
|
"task": "deno help",
|
||||||
|
"cwd": "tests",
|
||||||
"deno": {
|
"deno": {
|
||||||
"run": {
|
"run": {
|
||||||
"unstable": true,
|
"unstable": true,
|
||||||
"quiet": true,
|
"quiet": true,
|
||||||
|
"certificateErrors": false,
|
||||||
|
"importMap": ".imports.json",
|
||||||
|
"cert": "/dev/null",
|
||||||
|
"location": "https://deno.test",
|
||||||
"seed": 0,
|
"seed": 0,
|
||||||
"ignoreCertificateErrors": true
|
"v8Flags": ["--print-code"],
|
||||||
}
|
"env": true
|
||||||
}
|
},
|
||||||
},
|
"test": {
|
||||||
"flags:resolution": {
|
"env": ".env",
|
||||||
"task": "deno run tests/mod.ts",
|
"unstable": ["kv", "bare-node-builtins"]
|
||||||
"deno": {
|
},
|
||||||
"run": {
|
"bench": {
|
||||||
"importMap": "tests/.imports.json",
|
"env": false,
|
||||||
"location": "https://deno.test"
|
"unstable": []
|
||||||
|
},
|
||||||
|
"lint": {
|
||||||
|
"unstable": false
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"flags:config": {
|
"flags:config": {
|
||||||
"task": "deno run tests/mod.ts",
|
"task": "deno help",
|
||||||
|
"cwd": "tests",
|
||||||
"deno": {
|
"deno": {
|
||||||
"run": {
|
"run": {
|
||||||
"config": "tests/deno_common.jsonc"
|
"config": "deno.jsonc"
|
||||||
|
},
|
||||||
|
"test": {
|
||||||
|
"config": true
|
||||||
},
|
},
|
||||||
"lint": {
|
"lint": {
|
||||||
"config": false
|
"config": false
|
||||||
},
|
|
||||||
"fmt": {
|
|
||||||
"config": true
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"flags:v8_flags": {
|
"flags:lock_1": {
|
||||||
"task": "deno run tests/mod.ts",
|
"task": "deno help",
|
||||||
|
"cwd": "tests",
|
||||||
|
"deno": {
|
||||||
|
"vendor": {
|
||||||
|
"lock": "deno.lock"
|
||||||
|
},
|
||||||
|
"info": {
|
||||||
|
"lock": "deno.lock"
|
||||||
|
},
|
||||||
|
"run": {
|
||||||
|
"lock": "deno.lock"
|
||||||
|
},
|
||||||
|
"bench": {
|
||||||
|
"lock": {
|
||||||
|
"write": true
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"bundle": {
|
||||||
|
"lock": {
|
||||||
|
"file": "deno.lock",
|
||||||
|
"write": false
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"cache": {
|
||||||
|
"lock": false
|
||||||
|
},
|
||||||
|
"check": {
|
||||||
|
"lock": true
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"flags:lock_2": {
|
||||||
|
"task": "deno help",
|
||||||
|
"cwd": "tests",
|
||||||
|
"deno": {
|
||||||
|
"doc": {
|
||||||
|
"lock": true
|
||||||
|
},
|
||||||
|
"info": {
|
||||||
|
"lock": false
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"flags:permissions:all": {
|
||||||
|
"task": "deno help",
|
||||||
|
"cwd": "tests",
|
||||||
"deno": {
|
"deno": {
|
||||||
"run": {
|
"run": {
|
||||||
"v8Flags": ["--print-code"]
|
"permissions": {
|
||||||
|
"all": true,
|
||||||
|
"prompt": true
|
||||||
|
}
|
||||||
},
|
},
|
||||||
"test": {
|
"test": {
|
||||||
"v8Flags": []
|
"permissions": {
|
||||||
|
"all": false
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"flags:permissions:detailed": {
|
||||||
|
"task": "deno help",
|
||||||
|
"cwd": "tests",
|
||||||
|
"deno": {
|
||||||
|
"run": {
|
||||||
|
"permissions": {
|
||||||
|
"read": true,
|
||||||
|
"write": true,
|
||||||
|
"net": true,
|
||||||
|
"env": true,
|
||||||
|
"sys": true,
|
||||||
|
"run": true,
|
||||||
|
"ffi": true,
|
||||||
|
"hrtime": true,
|
||||||
|
"prompt": true
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"test": {
|
||||||
|
"permissions": {
|
||||||
|
"read": false,
|
||||||
|
"write": false,
|
||||||
|
"net": false,
|
||||||
|
"env": false,
|
||||||
|
"sys": false,
|
||||||
|
"run": false,
|
||||||
|
"ffi": false,
|
||||||
|
"hrtime": false,
|
||||||
|
"prompt": false
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"flags:permissions:detailed_more": {
|
||||||
|
"task": "deno help",
|
||||||
|
"cwd": "tests",
|
||||||
|
"deno": {
|
||||||
|
"run": {
|
||||||
|
"permissions": {
|
||||||
|
"read": ["test"],
|
||||||
|
"write": ["test"],
|
||||||
|
"net": ["https://example.com"],
|
||||||
|
"env": ["TEST"],
|
||||||
|
"sys": ["osRelease"],
|
||||||
|
"run": ["deno"],
|
||||||
|
"ffi": ["test"]
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"test": {
|
||||||
|
"permissions": {
|
||||||
|
"read": { "allow": ["test"], "deny": ["test"] },
|
||||||
|
"write": { "allow": ["test"], "deny": ["test"] },
|
||||||
|
"net": { "allow": ["https://example.com"], "deny": ["https://example.com"] },
|
||||||
|
"env": { "allow": ["TEST"], "deny": ["TEST"] },
|
||||||
|
"sys": { "allow": ["osRelease"], "deny": ["osRelease"] },
|
||||||
|
"run": { "allow": ["deno"], "deny": ["deno"] },
|
||||||
|
"ffi": { "allow": ["test"], "deny": ["test"] }
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"compile": {
|
||||||
|
"permissions": {
|
||||||
|
"read": [],
|
||||||
|
"write": [],
|
||||||
|
"net": [],
|
||||||
|
"env": [],
|
||||||
|
"sys": [],
|
||||||
|
"run": [],
|
||||||
|
"ffi": []
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"install": {
|
||||||
|
"permissions": {
|
||||||
|
"read": { "allow": [], "deny": [] },
|
||||||
|
"write": { "allow": [], "deny": [] },
|
||||||
|
"net": { "allow": [], "deny": [] },
|
||||||
|
"env": { "allow": [], "deny": [] },
|
||||||
|
"sys": { "allow": [], "deny": [] },
|
||||||
|
"run": { "allow": [], "deny": [] },
|
||||||
|
"ffi": { "allow": [], "deny": [] }
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"flags:modules": {
|
||||||
|
"task": "deno help",
|
||||||
|
"cwd": "tests",
|
||||||
|
"deno": {
|
||||||
|
"run": {
|
||||||
|
"modules": {
|
||||||
|
"cached": true,
|
||||||
|
"remote": false,
|
||||||
|
"npm": false,
|
||||||
|
"check": true,
|
||||||
|
"reload": true,
|
||||||
|
"node_modules": true,
|
||||||
|
"vendor": true
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"bundle": {
|
||||||
|
"modules": {}
|
||||||
|
},
|
||||||
|
"test": {
|
||||||
|
"modules": {
|
||||||
|
"check": false,
|
||||||
|
"reload": false
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"compile": {
|
||||||
|
"modules": {
|
||||||
|
"check": "all",
|
||||||
|
"reload": ["npm:"]
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"vendor": {
|
||||||
|
"modules": {
|
||||||
|
"reload": []
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"flags:inspect": {
|
||||||
|
"task": "deno help",
|
||||||
|
"cwd": "tests",
|
||||||
|
"deno": {
|
||||||
|
"run": {
|
||||||
|
"inspect": "127.0.0.1:9229"
|
||||||
|
},
|
||||||
|
"test": {
|
||||||
|
"inspect": {
|
||||||
|
"listen": "127.0.0.1:9229",
|
||||||
|
"break": "127.0.0.1:9230",
|
||||||
|
"wait": "127.0.0.1:9231"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"repl": {
|
||||||
|
"inspect": {}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"flags:watch": {
|
||||||
|
"task": "deno help",
|
||||||
|
"cwd": "tests",
|
||||||
|
"deno": {
|
||||||
|
"run": {
|
||||||
|
"watch": true
|
||||||
|
},
|
||||||
|
"bundle": {
|
||||||
|
"watch": false
|
||||||
|
},
|
||||||
|
"test": {
|
||||||
|
"watch": ["mod.ts"]
|
||||||
|
},
|
||||||
|
"bench": {
|
||||||
|
"watch": []
|
||||||
|
},
|
||||||
|
"fmt": {
|
||||||
|
"watch": {
|
||||||
|
"files": ["mod.ts"]
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"lint": {
|
||||||
|
"watch": {
|
||||||
|
"clearScreen": false
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/** Common flags
|
|
||||||
const common = is.object({
|
|
||||||
config: is.union([
|
|
||||||
is.boolean().transform((v) => v === false ? "--no-config" : ""),
|
|
||||||
is.string().transform((v) => v ? `--config='${v}'` : ""),
|
|
||||||
]).optional(),
|
|
||||||
cert: is.string().optional().transform((v) => v ? `--cert='${v}'` : ""),
|
|
||||||
})
|
|
||||||
|
|
||||||
*/
|
|
||||||
|
|||||||
26
tests/deno_compile.jsonc
Normal file
26
tests/deno_compile.jsonc
Normal file
@@ -0,0 +1,26 @@
|
|||||||
|
{
|
||||||
|
"tasks": {
|
||||||
|
"make": "deno run --allow-env --allow-read --allow-write=.deno-make.json --allow-run=deno ./mod.ts $0"
|
||||||
|
},
|
||||||
|
"+tasks": {
|
||||||
|
"flags:none": {
|
||||||
|
"task": "deno compile mod.ts",
|
||||||
|
"cwd": "tests",
|
||||||
|
"deno": {
|
||||||
|
"compile": {}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"flags:compile": {
|
||||||
|
"task": "deno compile mod.ts",
|
||||||
|
"cwd": "tests",
|
||||||
|
"deno": {
|
||||||
|
"compile": {
|
||||||
|
"include": ["mod_test.ts"],
|
||||||
|
"output": ".mod.bin",
|
||||||
|
"target": "x86_64-pc-windows-msvc",
|
||||||
|
"terminal": false
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -4,23 +4,30 @@
|
|||||||
},
|
},
|
||||||
"+tasks": {
|
"+tasks": {
|
||||||
"flags:none": {
|
"flags:none": {
|
||||||
"task": "deno coverage tests/.coverage"
|
"task": "deno coverage .coverage",
|
||||||
},
|
"cwd": "tests",
|
||||||
"flags:filters": {
|
|
||||||
"task": "deno coverage tests/.coverage",
|
|
||||||
"deno": {
|
"deno": {
|
||||||
"coverage": {
|
"coverage": {}
|
||||||
"include": "^file:",
|
|
||||||
"exclude": "(js|mjs|ts|jsx|tsx)"
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"flags:lcov": {
|
"flags:coverage": {
|
||||||
"task": "deno coverage tests/.coverage",
|
"task": "deno coverage .coverage",
|
||||||
|
"cwd": "tests",
|
||||||
"deno": {
|
"deno": {
|
||||||
"coverage": {
|
"coverage": {
|
||||||
"lcov": true,
|
"lcov": true,
|
||||||
"output": "tests/.coverage.report"
|
"include": "^file:",
|
||||||
|
"exclude": "(js|mjs|ts|jsx|tsx)",
|
||||||
|
"output": ".coverage.report"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"flags:coverage_alt": {
|
||||||
|
"task": "deno help",
|
||||||
|
"cwd": "tests",
|
||||||
|
"deno": {
|
||||||
|
"coverage": {
|
||||||
|
"ignore": ["mod.ts"]
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -4,16 +4,35 @@
|
|||||||
},
|
},
|
||||||
"+tasks": {
|
"+tasks": {
|
||||||
"flags:none": {
|
"flags:none": {
|
||||||
"task": "deno doc tests/mod.ts"
|
"task": "deno doc mod.ts",
|
||||||
|
"cwd": "tests",
|
||||||
|
"deno": {
|
||||||
|
"doc": {}
|
||||||
|
}
|
||||||
},
|
},
|
||||||
"flags:options": {
|
"flags:doc": {
|
||||||
"task": "deno doc tests/mod.ts",
|
"task": "deno doc mod.ts",
|
||||||
|
"cwd": "tests",
|
||||||
"deno": {
|
"deno": {
|
||||||
"doc": {
|
"doc": {
|
||||||
"private": true,
|
"private": true,
|
||||||
"json": true
|
"json": true
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
},
|
||||||
|
"flags:doc_alt": {
|
||||||
|
"task": [
|
||||||
|
"deno doc mod.ts;",
|
||||||
|
"rm -rf .docs"
|
||||||
|
],
|
||||||
|
"cwd": "tests",
|
||||||
|
"deno": {
|
||||||
|
"doc": {
|
||||||
|
"html": true,
|
||||||
|
"name": "test",
|
||||||
|
"output": ".docs"
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
24
tests/deno_eval.jsonc
Normal file
24
tests/deno_eval.jsonc
Normal file
@@ -0,0 +1,24 @@
|
|||||||
|
{
|
||||||
|
"tasks": {
|
||||||
|
"make": "deno run --allow-env --allow-read --allow-write=.deno-make.json --allow-run=deno ./mod.ts $0"
|
||||||
|
},
|
||||||
|
"+tasks": {
|
||||||
|
"flags:none": {
|
||||||
|
"task": "deno eval 'true'",
|
||||||
|
"cwd": "tests",
|
||||||
|
"deno": {
|
||||||
|
"eval": {}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"flags:eval": {
|
||||||
|
"task": "deno eval 'true'",
|
||||||
|
"cwd": "tests",
|
||||||
|
"deno": {
|
||||||
|
"eval": {
|
||||||
|
"print": true,
|
||||||
|
"ext": "ts"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -4,20 +4,25 @@
|
|||||||
},
|
},
|
||||||
"+tasks": {
|
"+tasks": {
|
||||||
"flags:none": {
|
"flags:none": {
|
||||||
"task": "deno check tests/mod.ts"
|
"task": "deno fmt mod.ts",
|
||||||
|
"cwd": "tests",
|
||||||
|
"deno": {
|
||||||
|
"fmt": {}
|
||||||
|
}
|
||||||
},
|
},
|
||||||
"flags:fmt": {
|
"flags:fmt": {
|
||||||
"task": "deno check tests/mod.ts",
|
"task": "deno fmt mod.ts",
|
||||||
|
"cwd": "tests",
|
||||||
"deno": {
|
"deno": {
|
||||||
"fmt": {
|
"fmt": {
|
||||||
"check": true,
|
"check": true,
|
||||||
"tabs": true,
|
"tabs": false,
|
||||||
"lineWidth": 80,
|
"lineWidth": 80,
|
||||||
"indentWidth": 2,
|
"indentWidth": 2,
|
||||||
"singleQuote": true,
|
"singleQuote": false,
|
||||||
"semicolons": false,
|
"semicolons": false,
|
||||||
"proseWrap": "always",
|
"proseWrap": "always",
|
||||||
"ignore": ["*"],
|
"ignore": ["mod_test.ts"],
|
||||||
"ext": "js"
|
"ext": "js"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -4,29 +4,18 @@
|
|||||||
},
|
},
|
||||||
"+tasks": {
|
"+tasks": {
|
||||||
"flags:none": {
|
"flags:none": {
|
||||||
"task": "deno info"
|
|
||||||
},
|
|
||||||
"flags:lock_1": {
|
|
||||||
"task": "deno info",
|
"task": "deno info",
|
||||||
|
"cwd": "tests",
|
||||||
"deno": {
|
"deno": {
|
||||||
"info": {
|
"info": {}
|
||||||
"lock": true
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"flags:lock_2": {
|
"flags:info": {
|
||||||
"task": "deno info",
|
"task": "deno info",
|
||||||
|
"cwd": "tests",
|
||||||
"deno": {
|
"deno": {
|
||||||
"info": {
|
"info": {
|
||||||
"lock": false
|
"json": true
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"flags:lock_3": {
|
|
||||||
"task": "deno info",
|
|
||||||
"deno": {
|
|
||||||
"info": {
|
|
||||||
"lock": "deno.lock"
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
25
tests/deno_install.jsonc
Normal file
25
tests/deno_install.jsonc
Normal file
@@ -0,0 +1,25 @@
|
|||||||
|
{
|
||||||
|
"tasks": {
|
||||||
|
"make": "deno run --allow-env --allow-read --allow-write=.deno-make.json --allow-run=deno ./mod.ts $0"
|
||||||
|
},
|
||||||
|
"+tasks": {
|
||||||
|
"flags:none": {
|
||||||
|
"task": "deno help",
|
||||||
|
"cwd": "tests",
|
||||||
|
"deno": {
|
||||||
|
"install": {}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"flags:install": {
|
||||||
|
"task": "deno help",
|
||||||
|
"cwd": "tests",
|
||||||
|
"deno": {
|
||||||
|
"install": {
|
||||||
|
"name": "test_deno_make",
|
||||||
|
"root": "/tmp",
|
||||||
|
"force": true
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -4,12 +4,19 @@
|
|||||||
},
|
},
|
||||||
"+tasks": {
|
"+tasks": {
|
||||||
"flags:none": {
|
"flags:none": {
|
||||||
"task": "deno types"
|
|
||||||
},
|
|
||||||
"flags:rules_1": {
|
|
||||||
"task": "deno lint",
|
"task": "deno lint",
|
||||||
|
"cwd": "tests",
|
||||||
|
"deno": {
|
||||||
|
"lint": {}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"flags:lint": {
|
||||||
|
"task": "deno lint",
|
||||||
|
"cwd": "tests",
|
||||||
"deno": {
|
"deno": {
|
||||||
"lint": {
|
"lint": {
|
||||||
|
"json": true,
|
||||||
|
"ignore": ["*.js"],
|
||||||
"rules": {
|
"rules": {
|
||||||
"tags": ["recommended"],
|
"tags": ["recommended"],
|
||||||
"include": ["single-var-declarator"],
|
"include": ["single-var-declarator"],
|
||||||
@@ -18,47 +25,13 @@
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"flags:rules_2": {
|
"flags:lint_alt": {
|
||||||
"task": "deno lint",
|
"task": "deno lint",
|
||||||
|
"cwd": "tests",
|
||||||
"deno": {
|
"deno": {
|
||||||
"lint": {
|
"lint": {
|
||||||
"rules": {
|
"compact": true,
|
||||||
"tags": [],
|
"rules": {}
|
||||||
"include": [],
|
|
||||||
"exclude": []
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"flags:json": {
|
|
||||||
"task": "deno lint",
|
|
||||||
"deno": {
|
|
||||||
"lint": {
|
|
||||||
"json": true
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"flags:compact": {
|
|
||||||
"task": "deno lint",
|
|
||||||
"deno": {
|
|
||||||
"lint": {
|
|
||||||
"compact": true
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"flags:ignore_1": {
|
|
||||||
"task": "deno lint",
|
|
||||||
"deno": {
|
|
||||||
"lint": {
|
|
||||||
"ignore": ["*.js"]
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"flags:ignore_2": {
|
|
||||||
"task": "deno lint",
|
|
||||||
"deno": {
|
|
||||||
"lint": {
|
|
||||||
"ignore": []
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -3,23 +3,33 @@
|
|||||||
"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"
|
||||||
},
|
},
|
||||||
"+tasks": {
|
"+tasks": {
|
||||||
"make": {
|
"make:empty": {
|
||||||
"task": "exit 1",
|
"task": "deno help"
|
||||||
|
},
|
||||||
|
"make:task": {
|
||||||
|
"task": "deno info",
|
||||||
|
"cwd": "tests",
|
||||||
"description": "🦕 test",
|
"description": "🦕 test",
|
||||||
"env": {
|
|
||||||
"DINOSAUR": "🦖"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"make:no_description": {
|
|
||||||
"task": "exit 1"
|
|
||||||
},
|
|
||||||
"make:deno": {
|
|
||||||
"task": "deno quiet",
|
|
||||||
"deno": {
|
"deno": {
|
||||||
"info": {
|
"info": {
|
||||||
"quiet": true
|
"quiet": true
|
||||||
}
|
}
|
||||||
|
},
|
||||||
|
"env": {
|
||||||
|
"DINOSAUR": "🦖",
|
||||||
|
"TEST_INHERIT": true
|
||||||
}
|
}
|
||||||
|
},
|
||||||
|
"make:multiline": {
|
||||||
|
"task": ["deno help"],
|
||||||
|
"cwd": "tests",
|
||||||
|
"description": ["🦕 test"]
|
||||||
|
},
|
||||||
|
"make:exit": {
|
||||||
|
"task": "exit 1"
|
||||||
|
},
|
||||||
|
"make:rm_deno_make_json": {
|
||||||
|
"task": "rm -r .deno-make.json"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,108 +0,0 @@
|
|||||||
{
|
|
||||||
"tasks": {
|
|
||||||
"make": "deno run --allow-env --allow-read --allow-write=.deno-make.json --allow-run=deno ./mod.ts $0"
|
|
||||||
},
|
|
||||||
"+tasks": {
|
|
||||||
"flags:all": {
|
|
||||||
"task": "deno run tests/mod.ts",
|
|
||||||
"deno": {
|
|
||||||
"run": {
|
|
||||||
"permissions": {
|
|
||||||
"allow": true,
|
|
||||||
"prompt": true
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"test": {
|
|
||||||
"permissions": {
|
|
||||||
"allow": false
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"flags:booleans": {
|
|
||||||
"task": "deno run tests/mod.ts",
|
|
||||||
"deno": {
|
|
||||||
"run": {
|
|
||||||
"permissions": {
|
|
||||||
"read": true,
|
|
||||||
"write": true,
|
|
||||||
"net": true,
|
|
||||||
"env": true,
|
|
||||||
"sys": true,
|
|
||||||
"run": true,
|
|
||||||
"ffi": true,
|
|
||||||
"hrtime": true,
|
|
||||||
"prompt": true
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"test": {
|
|
||||||
"permissions": {
|
|
||||||
"read": false,
|
|
||||||
"write": false,
|
|
||||||
"net": false,
|
|
||||||
"env": false,
|
|
||||||
"sys": false,
|
|
||||||
"run": false,
|
|
||||||
"ffi": false,
|
|
||||||
"hrtime": false,
|
|
||||||
"prompt": false
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"flags:paths": {
|
|
||||||
"task": "deno run tests/mod.ts",
|
|
||||||
"deno": {
|
|
||||||
"run": {
|
|
||||||
"permissions": {
|
|
||||||
"read": ["test"],
|
|
||||||
"write": ["test"],
|
|
||||||
"net": ["https://example.com"],
|
|
||||||
"env": ["FOO"],
|
|
||||||
"sys": ["osRelease"],
|
|
||||||
"run": ["deno"],
|
|
||||||
"ffi": ["test"]
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"test": {
|
|
||||||
"permissions": {
|
|
||||||
"read": [],
|
|
||||||
"write": [],
|
|
||||||
"net": [],
|
|
||||||
"env": [],
|
|
||||||
"sys": [],
|
|
||||||
"run": [],
|
|
||||||
"ffi": []
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"flags:allow_deny": {
|
|
||||||
"task": "deno run tests/mod.ts",
|
|
||||||
"deno": {
|
|
||||||
"run": {
|
|
||||||
"permissions": {
|
|
||||||
"read": { "allow": ["test"], "deny": ["test"] },
|
|
||||||
"write": { "allow": ["test"], "deny": ["test"] },
|
|
||||||
"net": { "allow": ["https://example.com"], "deny": ["https://example.com"] },
|
|
||||||
"env": { "allow": ["FOO"], "deny": ["FOO"] },
|
|
||||||
"sys": { "allow": ["osRelease"], "deny": ["osRelease"] },
|
|
||||||
"run": { "allow": ["deno"], "deny": ["deno"] },
|
|
||||||
"ffi": { "allow": ["test"], "deny": ["test"] }
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"test": {
|
|
||||||
"permissions": {
|
|
||||||
"read": { "allow": [], "deny": [] },
|
|
||||||
"write": { "allow": [], "deny": [] },
|
|
||||||
"net": { "allow": [], "deny": [] },
|
|
||||||
"env": { "allow": [], "deny": [] },
|
|
||||||
"sys": { "allow": [], "deny": [] },
|
|
||||||
"run": { "allow": [], "deny": [] },
|
|
||||||
"ffi": { "allow": [], "deny": [] }
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
24
tests/deno_repl.jsonc
Normal file
24
tests/deno_repl.jsonc
Normal file
@@ -0,0 +1,24 @@
|
|||||||
|
{
|
||||||
|
"tasks": {
|
||||||
|
"make": "deno run --allow-env --allow-read --allow-write=.deno-make.json --allow-run=deno ./mod.ts $0"
|
||||||
|
},
|
||||||
|
"+tasks": {
|
||||||
|
"flags:none": {
|
||||||
|
"task": "deno help",
|
||||||
|
"cwd": "tests",
|
||||||
|
"deno": {
|
||||||
|
"repl": {}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"flags:repl": {
|
||||||
|
"task": "deno help",
|
||||||
|
"cwd": "tests",
|
||||||
|
"deno": {
|
||||||
|
"repl": {
|
||||||
|
"eval": "true",
|
||||||
|
"evalFile": ["mod_test.ts"]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -4,60 +4,20 @@
|
|||||||
},
|
},
|
||||||
"+tasks": {
|
"+tasks": {
|
||||||
"flags:none": {
|
"flags:none": {
|
||||||
"task": "deno run tests/mod.ts"
|
"task": "deno run mod.ts",
|
||||||
|
"cwd": "tests",
|
||||||
|
"deno": {
|
||||||
|
"run": {}
|
||||||
|
}
|
||||||
},
|
},
|
||||||
"flags:ext": {
|
"flags:run": {
|
||||||
"task": "deno run tests/mod.ts",
|
"task": "deno run mod.ts",
|
||||||
|
"cwd": "tests",
|
||||||
"deno": {
|
"deno": {
|
||||||
"run": {
|
"run": {
|
||||||
"ext": "ts"
|
"ext": "ts"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
|
||||||
"flags:lock_1": {
|
|
||||||
"task": "deno run tests/mod.ts",
|
|
||||||
"deno": {
|
|
||||||
"run": {
|
|
||||||
"lock": true
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"flags:lock_2": {
|
|
||||||
"task": "deno run tests/mod.ts",
|
|
||||||
"deno": {
|
|
||||||
"run": {
|
|
||||||
"lock": false
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"flags:lock_3": {
|
|
||||||
"task": "deno run tests/mod.ts",
|
|
||||||
"deno": {
|
|
||||||
"run": {
|
|
||||||
"lock": {
|
|
||||||
"write": false
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"flags:lock_4": {
|
|
||||||
"task": "deno run tests/mod.ts",
|
|
||||||
"deno": {
|
|
||||||
"run": {
|
|
||||||
"lock": {
|
|
||||||
"file": "tests/.deno.lock",
|
|
||||||
"write": true
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"flags:lock_5": {
|
|
||||||
"task": "deno run tests/mod.ts",
|
|
||||||
"deno": {
|
|
||||||
"run": {
|
|
||||||
"lock": "deno.lock"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -4,84 +4,51 @@
|
|||||||
},
|
},
|
||||||
"+tasks": {
|
"+tasks": {
|
||||||
"flags:none": {
|
"flags:none": {
|
||||||
"task": "deno test tests/mod_test.ts"
|
"task": "deno test mod_test.ts",
|
||||||
},
|
"cwd": "tests",
|
||||||
"flags:doc": {
|
|
||||||
"task": "deno test tests/mod_test.ts",
|
|
||||||
"deno": {
|
"deno": {
|
||||||
"test": {
|
"test": {}
|
||||||
"doc": true
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"flags:execution_1": {
|
"flags:test_1": {
|
||||||
"task": "deno test tests/mod_test.ts",
|
"task": "deno test mod_test.ts",
|
||||||
|
"cwd": "tests",
|
||||||
"deno": {
|
"deno": {
|
||||||
"test": {
|
"test": {
|
||||||
|
"doc": true,
|
||||||
"traceOps": true,
|
"traceOps": true,
|
||||||
"failFast": true,
|
"failFast": true,
|
||||||
"shuffle": true,
|
"shuffle": true,
|
||||||
"parallel": true,
|
"parallel": true,
|
||||||
"run": true,
|
"run": false,
|
||||||
"allowNone": true
|
"allowNone": true,
|
||||||
|
"coverage": ".coverage",
|
||||||
|
"reporter": "junit",
|
||||||
|
"filter": "junit",
|
||||||
|
"junitPath": ".junit.xml",
|
||||||
|
"ignore": ["*_test.ts"]
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"flags:execution_2": {
|
"flags:test_2": {
|
||||||
"task": "deno test tests/mod_test.ts",
|
"task": "deno test mod_test.ts",
|
||||||
|
"cwd": "tests",
|
||||||
"deno": {
|
"deno": {
|
||||||
"test": {
|
"test": {
|
||||||
"traceOps": false,
|
|
||||||
"failFast": false,
|
"failFast": false,
|
||||||
"shuffle": false,
|
"shuffle": false
|
||||||
"parallel": false,
|
|
||||||
"run": false,
|
|
||||||
"allowNone": false
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"flags:execution_number": {
|
"flags:test_3": {
|
||||||
"task": "deno test tests/mod_test.ts",
|
"task": "deno test mod_test.ts",
|
||||||
|
"cwd": "tests",
|
||||||
"deno": {
|
"deno": {
|
||||||
"test": {
|
"test": {
|
||||||
"failFast": 1,
|
"failFast": 1,
|
||||||
"shuffle": 1
|
"shuffle": 1
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
|
||||||
"flags:reporter": {
|
|
||||||
"task": "deno test tests/mod_test.ts",
|
|
||||||
"deno": {
|
|
||||||
"test": {
|
|
||||||
"coverage": "tests/.coverage",
|
|
||||||
"reporter": "junit",
|
|
||||||
"junitPath": "tests/.junit.xml"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"flags:ignore_1": {
|
|
||||||
"task": "deno test tests/mod_test.ts",
|
|
||||||
"deno": {
|
|
||||||
"test": {
|
|
||||||
"ignore": ["*_test.ts"]
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"flags:ignore_2": {
|
|
||||||
"task": "deno test tests/mod_test.ts",
|
|
||||||
"deno": {
|
|
||||||
"test": {
|
|
||||||
"ignore": []
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"flags:filter": {
|
|
||||||
"task": "deno test tests/mod_test.ts",
|
|
||||||
"deno": {
|
|
||||||
"test": {
|
|
||||||
"filter": "dummy"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -4,7 +4,18 @@
|
|||||||
},
|
},
|
||||||
"+tasks": {
|
"+tasks": {
|
||||||
"flags:none": {
|
"flags:none": {
|
||||||
"task": "deno types"
|
"task": "deno types",
|
||||||
|
"cwd": "tests",
|
||||||
|
"deno": {
|
||||||
|
"types": {}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"flags:common": {
|
||||||
|
"task": "deno types",
|
||||||
|
"cwd": "tests",
|
||||||
|
"types": {
|
||||||
|
"quiet": true
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
23
tests/deno_uninstall.jsonc
Normal file
23
tests/deno_uninstall.jsonc
Normal file
@@ -0,0 +1,23 @@
|
|||||||
|
{
|
||||||
|
"tasks": {
|
||||||
|
"make": "deno run --allow-env --allow-read --allow-write=.deno-make.json --allow-run=deno ./mod.ts $0"
|
||||||
|
},
|
||||||
|
"+tasks": {
|
||||||
|
"flags:none": {
|
||||||
|
"task": "deno help",
|
||||||
|
"cwd": "tests",
|
||||||
|
"deno": {
|
||||||
|
"uninstall": {}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"flags:uninstall": {
|
||||||
|
"task": "deno help",
|
||||||
|
"cwd": "tests",
|
||||||
|
"deno": {
|
||||||
|
"uninstall": {
|
||||||
|
"root": "/tmp"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -4,10 +4,15 @@
|
|||||||
},
|
},
|
||||||
"+tasks": {
|
"+tasks": {
|
||||||
"flags:none": {
|
"flags:none": {
|
||||||
"task": "deno vendor 'data:application/typescript;base64,Y29uc29sZS5sb2coJ2Zvbycp'"
|
"task": "deno vendor mod.ts",
|
||||||
|
"cwd": "tests",
|
||||||
|
"deno": {
|
||||||
|
"vendor": {}
|
||||||
|
}
|
||||||
},
|
},
|
||||||
"flags:output_1": {
|
"flags:output_1": {
|
||||||
"task": "deno run 'data:application/typescript;base64,Y29uc29sZS5sb2coJ2Zvbycp'",
|
"task": "deno run mod.ts",
|
||||||
|
"cwd": "tests",
|
||||||
"deno": {
|
"deno": {
|
||||||
"vendor": {
|
"vendor": {
|
||||||
"output": "vendor"
|
"output": "vendor"
|
||||||
@@ -15,33 +20,26 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"flags:output_2": {
|
"flags:output_2": {
|
||||||
"task": "deno run 'data:application/typescript;base64,Y29uc29sZS5sb2coJ2Zvbycp'",
|
"task": "deno run mod.ts",
|
||||||
|
"cwd": "tests",
|
||||||
"deno": {
|
"deno": {
|
||||||
"vendor": {
|
"vendor": {
|
||||||
"output": {
|
"output": {
|
||||||
"path": "vendor",
|
"path": "vendor",
|
||||||
"force:": true
|
"force": true
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"flags:output_3": {
|
"flags:output_3": {
|
||||||
"task": "deno run 'data:application/typescript;base64,Y29uc29sZS5sb2coJ2Zvbycp'",
|
"task": "deno run mod.ts",
|
||||||
|
"cwd": "tests",
|
||||||
"deno": {
|
"deno": {
|
||||||
"vendor": {
|
"vendor": {
|
||||||
"output": {
|
"output": {
|
||||||
"force:": false
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
|
||||||
"flags:lock": {
|
|
||||||
"task": "deno run 'data:application/typescript;base64,Y29uc29sZS5sb2coJ2Zvbycp'",
|
|
||||||
"deno": {
|
|
||||||
"vendor": {
|
|
||||||
"lock": "deno.lock"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
1
tests/mod_bench.ts
Normal file
1
tests/mod_bench.ts
Normal file
@@ -0,0 +1 @@
|
|||||||
|
Deno.bench("dummy bench", () => void null)
|
||||||
Reference in New Issue
Block a user