summaryrefslogtreecommitdiff
path: root/cli/tools/standalone.rs
diff options
context:
space:
mode:
authorAndreu Botella <andreu@andreubotella.com>2023-01-17 16:18:24 -0800
committerGitHub <noreply@github.com>2023-01-18 01:18:24 +0100
commit69ec45eac76c63ea973c68479ea4f0bbf58b29e9 (patch)
tree6e58f2eecc903f91981c695430dc64dca98fe7b6 /cli/tools/standalone.rs
parent1a792f8805d835257302baf538505451b149d84c (diff)
refactor(cli): Integrate standalone mode cert handling into `Flags` (#17419)
The way the standalone mode handles the `--cert` flag is different to all other modes. This is because `--cert` takes a path to the certificate file, which is directly added to the root cert store; except for compile mode, where its byte contents are stored in the standalone metadata, and they are added to the root cert store after the `ProcState` is created. This change instead changes `Flags::ca_file` (an `Option<String>`) into `Flags::ca_data`, which can represent a `String` file path or a `Vec<u8>` with the certificate contents. That way, standalone mode can create a `ProcState` whose root cert store alreay contains the certificate. This change also adds a tests for certificates in standalone mode, since there weren't any before. This refactor will help with implementing web workers in standalone mode in the future.
Diffstat (limited to 'cli/tools/standalone.rs')
-rw-r--r--cli/tools/standalone.rs6
1 files changed, 4 insertions, 2 deletions
diff --git a/cli/tools/standalone.rs b/cli/tools/standalone.rs
index b5738654a..8b99b8874 100644
--- a/cli/tools/standalone.rs
+++ b/cli/tools/standalone.rs
@@ -1,5 +1,6 @@
// Copyright 2018-2023 the Deno authors. All rights reserved. MIT license.
+use crate::args::CaData;
use crate::args::CompileFlags;
use crate::args::Flags;
use crate::cache::DenoDir;
@@ -158,10 +159,11 @@ async fn create_standalone_binary(
) -> Result<Vec<u8>, AnyError> {
let mut eszip_archive = eszip.into_bytes();
- let ca_data = match ps.options.ca_file() {
- Some(ca_file) => {
+ let ca_data = match ps.options.ca_data() {
+ Some(CaData::File(ca_file)) => {
Some(fs::read(ca_file).with_context(|| format!("Reading: {}", ca_file))?)
}
+ Some(CaData::Bytes(bytes)) => Some(bytes.clone()),
None => None,
};
let maybe_import_map: Option<(Url, String)> =