refactor(cli/flags): change allow_read/write/net types from bool to Option<Vec<T>> #8896
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
This PR refactors
cli/flags.rs
andruntime/permissions.rs
so thatallow_read
,allow_write
andallow_net
themselves will have allowlists.In the current implementation, the allowlist for the
net
flag is stored innet_allowlist: Vec<String>
and the presence ofallow-net
flag is stored inallow_net: bool
. However, if we run deno withdeno run --allow-net=example.com
,allow_net
will befalse
even thoughallow-net
flag is present - which looks confusing to me. The relation between them is as follows:deno run foo.ts
false
vec![]
deno run --allow-net foo.ts
true
vec![]
deno run --allow-net=example.com foo.ts
false
vec!["example.com"]
So in this PR,
net_allowlist
is removed and the type ofallow_net
is changed toOption<Vec<String>>
. In this way, both the presence of the flag and allowlist values can be stored well and simply like:deno run foo.ts
None
deno run --allow-net foo.ts
Some(vec![])
deno run --allow-net=example.com foo.ts
Some(vec!["example.com"])