summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBartek IwaƄczuk <biwanczuk@gmail.com>2020-09-26 20:26:51 +0200
committerGitHub <noreply@github.com>2020-09-26 20:26:51 +0200
commite1beebc71a53d5ad9203a71f8f2764efaac2f649 (patch)
tree52777321e31fc13d6aeb6dd96f6a0aa88d68d109
parentf64a44810e1fc732cd5a0aecec541c6c8a289806 (diff)
refactor: factor out check_unstable op helper (#7695)
-rw-r--r--cli/ops/fs.rs59
-rw-r--r--cli/ops/mod.rs11
-rw-r--r--cli/ops/net.rs12
-rw-r--r--cli/ops/os.rs12
-rw-r--r--cli/ops/plugin.rs3
-rw-r--r--cli/ops/process.rs3
-rw-r--r--cli/ops/runtime_compiler.rs8
-rw-r--r--cli/ops/signal.rs6
-rw-r--r--cli/ops/tls.rs3
-rw-r--r--cli/ops/tty.rs4
-rw-r--r--cli/ops/worker_host.rs4
11 files changed, 51 insertions, 74 deletions
diff --git a/cli/ops/fs.rs b/cli/ops/fs.rs
index 7610231c7..c5d1458fc 100644
--- a/cli/ops/fs.rs
+++ b/cli/ops/fs.rs
@@ -282,10 +282,7 @@ fn op_fdatasync_sync(
args: Value,
_zero_copy: &mut [ZeroCopyBuf],
) -> Result<Value, AnyError> {
- {
- let cli_state = super::global_state(state);
- cli_state.check_unstable("Deno.fdatasync");
- }
+ super::check_unstable(state, "Deno.fdatasync");
let args: FdatasyncArgs = serde_json::from_value(args)?;
let rid = args.rid as u32;
std_file_resource(state, rid, |r| match r {
@@ -300,7 +297,7 @@ async fn op_fdatasync_async(
args: Value,
_zero_copy: BufVec,
) -> Result<Value, AnyError> {
- super::global_state2(&state).check_unstable("Deno.fdatasync");
+ super::check_unstable2(&state, "Deno.fdatasync");
let args: FdatasyncArgs = serde_json::from_value(args)?;
let rid = args.rid as u32;
@@ -322,10 +319,7 @@ fn op_fsync_sync(
args: Value,
_zero_copy: &mut [ZeroCopyBuf],
) -> Result<Value, AnyError> {
- {
- let cli_state = super::global_state(state);
- cli_state.check_unstable("Deno.fsync");
- }
+ super::check_unstable(state, "Deno.fsync");
let args: FsyncArgs = serde_json::from_value(args)?;
let rid = args.rid as u32;
std_file_resource(state, rid, |r| match r {
@@ -340,7 +334,7 @@ async fn op_fsync_async(
args: Value,
_zero_copy: BufVec,
) -> Result<Value, AnyError> {
- super::global_state2(&state).check_unstable("Deno.fsync");
+ super::check_unstable2(&state, "Deno.fsync");
let args: FsyncArgs = serde_json::from_value(args)?;
let rid = args.rid as u32;
@@ -362,10 +356,7 @@ fn op_fstat_sync(
args: Value,
_zero_copy: &mut [ZeroCopyBuf],
) -> Result<Value, AnyError> {
- {
- let cli_state = super::global_state(state);
- cli_state.check_unstable("Deno.fstat");
- }
+ super::check_unstable(state, "Deno.fstat");
let args: FstatArgs = serde_json::from_value(args)?;
let rid = args.rid as u32;
let metadata = std_file_resource(state, rid, |r| match r {
@@ -380,7 +371,7 @@ async fn op_fstat_async(
args: Value,
_zero_copy: BufVec,
) -> Result<Value, AnyError> {
- super::global_state2(&state).check_unstable("Deno.fstat");
+ super::check_unstable2(&state, "Deno.fstat");
let args: FstatArgs = serde_json::from_value(args)?;
let rid = args.rid as u32;
@@ -404,10 +395,7 @@ fn op_umask(
args: Value,
_zero_copy: &mut [ZeroCopyBuf],
) -> Result<Value, AnyError> {
- {
- let cli_state = super::global_state(state);
- cli_state.check_unstable("Deno.umask");
- }
+ super::check_unstable(state, "Deno.umask");
let args: UmaskArgs = serde_json::from_value(args)?;
// TODO implement umask for Windows
// see https://github.com/nodejs/node/blob/master/src/node_process_methods.cc
@@ -1134,8 +1122,7 @@ fn op_link_sync(
args: Value,
_zero_copy: &mut [ZeroCopyBuf],
) -> Result<Value, AnyError> {
- let cli_state = super::global_state(state);
- cli_state.check_unstable("Deno.link");
+ super::check_unstable(state, "Deno.link");
let args: LinkArgs = serde_json::from_value(args)?;
let oldpath = PathBuf::from(&args.oldpath);
let newpath = PathBuf::from(&args.newpath);
@@ -1154,8 +1141,7 @@ async fn op_link_async(
args: Value,
_zero_copy: BufVec,
) -> Result<Value, AnyError> {
- let cli_state = super::global_state2(&state);
- cli_state.check_unstable("Deno.link");
+ super::check_unstable2(&state, "Deno.link");
let args: LinkArgs = serde_json::from_value(args)?;
let oldpath = PathBuf::from(&args.oldpath);
@@ -1198,8 +1184,7 @@ fn op_symlink_sync(
args: Value,
_zero_copy: &mut [ZeroCopyBuf],
) -> Result<Value, AnyError> {
- let cli_state = super::global_state(state);
- cli_state.check_unstable("Deno.symlink");
+ super::check_unstable(state, "Deno.symlink");
let args: SymlinkArgs = serde_json::from_value(args)?;
let oldpath = PathBuf::from(&args.oldpath);
let newpath = PathBuf::from(&args.newpath);
@@ -1250,8 +1235,7 @@ async fn op_symlink_async(
args: Value,
_zero_copy: BufVec,
) -> Result<Value, AnyError> {
- let cli_state = super::global_state2(&state);
- cli_state.check_unstable("Deno.symlink");
+ super::check_unstable2(&state, "Deno.symlink");
let args: SymlinkArgs = serde_json::from_value(args)?;
let oldpath = PathBuf::from(&args.oldpath);
@@ -1356,10 +1340,7 @@ fn op_ftruncate_sync(
args: Value,
_zero_copy: &mut [ZeroCopyBuf],
) -> Result<Value, AnyError> {
- {
- let cli_state = super::global_state(state);
- cli_state.check_unstable("Deno.ftruncate");
- }
+ super::check_unstable(state, "Deno.ftruncate");
let args: FtruncateArgs = serde_json::from_value(args)?;
let rid = args.rid as u32;
let len = args.len as u64;
@@ -1375,7 +1356,7 @@ async fn op_ftruncate_async(
args: Value,
_zero_copy: BufVec,
) -> Result<Value, AnyError> {
- super::global_state2(&state).check_unstable("Deno.ftruncate");
+ super::check_unstable2(&state, "Deno.ftruncate");
let args: FtruncateArgs = serde_json::from_value(args)?;
let rid = args.rid as u32;
let len = args.len as u64;
@@ -1628,10 +1609,7 @@ fn op_futime_sync(
args: Value,
_zero_copy: &mut [ZeroCopyBuf],
) -> Result<Value, AnyError> {
- {
- let cli_state = super::global_state(state);
- cli_state.check_unstable("Deno.futimeSync");
- }
+ super::check_unstable(state, "Deno.futimeSync");
let args: FutimeArgs = serde_json::from_value(args)?;
let rid = args.rid as u32;
let atime = filetime::FileTime::from_unix_time(args.atime.0, args.atime.1);
@@ -1656,8 +1634,7 @@ async fn op_futime_async(
_zero_copy: BufVec,
) -> Result<Value, AnyError> {
let mut state = state.borrow_mut();
- let cli_state = super::global_state(&state);
- cli_state.check_unstable("Deno.futime");
+ super::check_unstable(&state, "Deno.futime");
let args: FutimeArgs = serde_json::from_value(args)?;
let rid = args.rid as u32;
let atime = filetime::FileTime::from_unix_time(args.atime.0, args.atime.1);
@@ -1689,8 +1666,7 @@ fn op_utime_sync(
args: Value,
_zero_copy: &mut [ZeroCopyBuf],
) -> Result<Value, AnyError> {
- let cli_state = super::global_state(state);
- cli_state.check_unstable("Deno.utime");
+ super::check_unstable(state, "Deno.utime");
let args: UtimeArgs = serde_json::from_value(args)?;
let path = PathBuf::from(&args.path);
@@ -1708,8 +1684,7 @@ async fn op_utime_async(
_zero_copy: BufVec,
) -> Result<Value, AnyError> {
let state = state.borrow();
- let cli_state = super::global_state(&state);
- cli_state.check_unstable("Deno.utime");
+ super::check_unstable(&state, "Deno.utime");
let args: UtimeArgs = serde_json::from_value(args)?;
let path = PathBuf::from(&args.path);
diff --git a/cli/ops/mod.rs b/cli/ops/mod.rs
index cbaa932aa..c6d5cc1dc 100644
--- a/cli/ops/mod.rs
+++ b/cli/ops/mod.rs
@@ -58,6 +58,17 @@ where
rt.register_op(name, metrics_op(json_op_sync(op_fn)));
}
+/// Helper for checking unstable features. Used for sync ops.
+pub fn check_unstable(state: &OpState, api_name: &str) {
+ state.borrow::<Arc<GlobalState>>().check_unstable(api_name)
+}
+
+/// Helper for checking unstable features. Used for async ops.
+pub fn check_unstable2(state: &Rc<RefCell<OpState>>, api_name: &str) {
+ let state = state.borrow();
+ state.borrow::<Arc<GlobalState>>().check_unstable(api_name)
+}
+
/// Helper for extracting the commonly used state. Used for sync ops.
pub fn global_state(state: &OpState) -> Arc<GlobalState> {
state.borrow::<Arc<GlobalState>>().clone()
diff --git a/cli/ops/net.rs b/cli/ops/net.rs
index c0cb84a9b..2be65e1ec 100644
--- a/cli/ops/net.rs
+++ b/cli/ops/net.rs
@@ -304,8 +304,7 @@ async fn op_connect(
transport_args: ArgsEnum::Unix(args),
} if transport == "unix" => {
let address_path = Path::new(&args.path);
- let cli_state = super::global_state2(&state);
- cli_state.check_unstable("Deno.connect");
+ super::check_unstable2(&state, "Deno.connect");
{
let state_ = state.borrow();
state_.borrow::<Permissions>().check_read(&address_path)?;
@@ -349,7 +348,7 @@ fn op_shutdown(
args: Value,
_zero_copy: &mut [ZeroCopyBuf],
) -> Result<Value, AnyError> {
- super::global_state(state).check_unstable("Deno.shutdown");
+ super::check_unstable(state, "Deno.shutdown");
let args: ShutdownArgs = serde_json::from_value(args)?;
@@ -493,7 +492,6 @@ fn op_listen(
args: Value,
_zero_copy: &mut [ZeroCopyBuf],
) -> Result<Value, AnyError> {
- let cli_state = super::global_state(state);
let permissions = state.borrow::<Permissions>();
match serde_json::from_value(args)? {
ListenArgs {
@@ -502,7 +500,7 @@ fn op_listen(
} => {
{
if transport == "udp" {
- cli_state.check_unstable("Deno.listenDatagram");
+ super::check_unstable(state, "Deno.listenDatagram");
}
permissions.check_net(&args.hostname, args.port)?;
}
@@ -535,10 +533,10 @@ fn op_listen(
let address_path = Path::new(&args.path);
{
if transport == "unix" {
- cli_state.check_unstable("Deno.listen");
+ super::check_unstable(state, "Deno.listen");
}
if transport == "unixpacket" {
- cli_state.check_unstable("Deno.listenDatagram");
+ super::check_unstable(state, "Deno.listenDatagram");
}
permissions.check_read(&address_path)?;
permissions.check_write(&address_path)?;
diff --git a/cli/ops/os.rs b/cli/ops/os.rs
index 4b28f898e..5265d4d08 100644
--- a/cli/ops/os.rs
+++ b/cli/ops/os.rs
@@ -122,8 +122,7 @@ fn op_loadavg(
_args: Value,
_zero_copy: &mut [ZeroCopyBuf],
) -> Result<Value, AnyError> {
- let cli_state = super::global_state(state);
- cli_state.check_unstable("Deno.loadavg");
+ super::check_unstable(state, "Deno.loadavg");
state.borrow::<Permissions>().check_env()?;
match sys_info::loadavg() {
Ok(loadavg) => Ok(json!([loadavg.one, loadavg.five, loadavg.fifteen])),
@@ -136,8 +135,7 @@ fn op_hostname(
_args: Value,
_zero_copy: &mut [ZeroCopyBuf],
) -> Result<Value, AnyError> {
- let cli_state = super::global_state(state);
- cli_state.check_unstable("Deno.hostname");
+ super::check_unstable(state, "Deno.hostname");
state.borrow::<Permissions>().check_env()?;
let hostname = sys_info::hostname().unwrap_or_else(|_| "".to_string());
Ok(json!(hostname))
@@ -148,8 +146,7 @@ fn op_os_release(
_args: Value,
_zero_copy: &mut [ZeroCopyBuf],
) -> Result<Value, AnyError> {
- let cli_state = super::global_state(state);
- cli_state.check_unstable("Deno.osRelease");
+ super::check_unstable(state, "Deno.osRelease");
state.borrow::<Permissions>().check_env()?;
let release = sys_info::os_release().unwrap_or_else(|_| "".to_string());
Ok(json!(release))
@@ -160,8 +157,7 @@ fn op_system_memory_info(
_args: Value,
_zero_copy: &mut [ZeroCopyBuf],
) -> Result<Value, AnyError> {
- let cli_state = super::global_state(state);
- cli_state.check_unstable("Deno.systemMemoryInfo");
+ super::check_unstable(state, "Deno.systemMemoryInfo");
state.borrow::<Permissions>().check_env()?;
match sys_info::mem_info() {
Ok(info) => Ok(json!({
diff --git a/cli/ops/plugin.rs b/cli/ops/plugin.rs
index f929a89d3..1f3669b6f 100644
--- a/cli/ops/plugin.rs
+++ b/cli/ops/plugin.rs
@@ -42,8 +42,7 @@ pub fn op_open_plugin(
let args: OpenPluginArgs = serde_json::from_value(args)?;
let filename = PathBuf::from(&args.filename);
- let cli_state = super::global_state(state);
- cli_state.check_unstable("Deno.openPlugin");
+ super::check_unstable(state, "Deno.openPlugin");
let permissions = state.borrow::<Permissions>();
permissions.check_plugin(&filename)?;
diff --git a/cli/ops/process.rs b/cli/ops/process.rs
index 48b945f07..026c6833e 100644
--- a/cli/ops/process.rs
+++ b/cli/ops/process.rs
@@ -227,8 +227,7 @@ fn op_kill(
args: Value,
_zero_copy: &mut [ZeroCopyBuf],
) -> Result<Value, AnyError> {
- let cli_state = super::global_state(state);
- cli_state.check_unstable("Deno.kill");
+ super::check_unstable(state, "Deno.kill");
state.borrow::<Permissions>().check_run()?;
let args: KillArgs = serde_json::from_value(args)?;
diff --git a/cli/ops/runtime_compiler.rs b/cli/ops/runtime_compiler.rs
index 91e638033..b06e51157 100644
--- a/cli/ops/runtime_compiler.rs
+++ b/cli/ops/runtime_compiler.rs
@@ -34,9 +34,9 @@ async fn op_compile(
args: Value,
_data: BufVec,
) -> Result<Value, AnyError> {
- let cli_state = super::global_state2(&state);
- cli_state.check_unstable("Deno.compile");
+ super::check_unstable2(&state, "Deno.compile");
let args: CompileArgs = serde_json::from_value(args)?;
+ let cli_state = super::global_state2(&state);
let global_state = cli_state.clone();
let permissions = {
let state = state.borrow();
@@ -76,9 +76,9 @@ async fn op_transpile(
args: Value,
_data: BufVec,
) -> Result<Value, AnyError> {
- let cli_state = super::global_state2(&state);
- cli_state.check_unstable("Deno.transpile");
+ super::check_unstable2(&state, "Deno.transpile");
let args: TranspileArgs = serde_json::from_value(args)?;
+ let cli_state = super::global_state2(&state);
let global_state = cli_state.clone();
let result =
runtime_transpile(global_state, &args.sources, &args.options).await?;
diff --git a/cli/ops/signal.rs b/cli/ops/signal.rs
index 4159de84a..be6bc0a35 100644
--- a/cli/ops/signal.rs
+++ b/cli/ops/signal.rs
@@ -52,7 +52,7 @@ fn op_signal_bind(
args: Value,
_zero_copy: &mut [ZeroCopyBuf],
) -> Result<Value, AnyError> {
- super::global_state(state).check_unstable("Deno.signal");
+ super::check_unstable(state, "Deno.signal");
let args: BindSignalArgs = serde_json::from_value(args)?;
let rid = state.resource_table.add(
"signal",
@@ -72,7 +72,7 @@ async fn op_signal_poll(
args: Value,
_zero_copy: BufVec,
) -> Result<Value, AnyError> {
- super::global_state2(&state).check_unstable("Deno.signal");
+ super::check_unstable2(&state, "Deno.signal");
let args: SignalArgs = serde_json::from_value(args)?;
let rid = args.rid as u32;
@@ -96,7 +96,7 @@ pub fn op_signal_unbind(
args: Value,
_zero_copy: &mut [ZeroCopyBuf],
) -> Result<Value, AnyError> {
- super::global_state(state).check_unstable("Deno.signal");
+ super::check_unstable(state, "Deno.signal");
let args: SignalArgs = serde_json::from_value(args)?;
let rid = args.rid as u32;
let resource = state.resource_table.get_mut::<SignalStreamResource>(rid);
diff --git a/cli/ops/tls.rs b/cli/ops/tls.rs
index 1b812c33f..37fd8f206 100644
--- a/cli/ops/tls.rs
+++ b/cli/ops/tls.rs
@@ -76,8 +76,7 @@ async fn op_start_tls(
domain.push_str("localhost");
}
{
- let cli_state = super::global_state2(&state);
- cli_state.check_unstable("Deno.startTls");
+ super::check_unstable2(&state, "Deno.startTls");
let s = state.borrow();
let permissions = s.borrow::<Permissions>();
permissions.check_net(&domain, 0)?;
diff --git a/cli/ops/tty.rs b/cli/ops/tty.rs
index 767309054..01ed73a05 100644
--- a/cli/ops/tty.rs
+++ b/cli/ops/tty.rs
@@ -64,7 +64,7 @@ fn op_set_raw(
args: Value,
_zero_copy: &mut [ZeroCopyBuf],
) -> Result<Value, AnyError> {
- super::global_state(state).check_unstable("Deno.setRaw");
+ super::check_unstable(state, "Deno.setRaw");
let args: SetRawArgs = serde_json::from_value(args)?;
let rid = args.rid;
@@ -275,7 +275,7 @@ fn op_console_size(
args: Value,
_zero_copy: &mut [ZeroCopyBuf],
) -> Result<Value, AnyError> {
- super::global_state(state).check_unstable("Deno.consoleSize");
+ super::check_unstable(state, "Deno.consoleSize");
let args: ConsoleSizeArgs = serde_json::from_value(args)?;
let rid = args.rid;
diff --git a/cli/ops/worker_host.rs b/cli/ops/worker_host.rs
index 058ffaa31..60262b4f6 100644
--- a/cli/ops/worker_host.rs
+++ b/cli/ops/worker_host.rs
@@ -184,7 +184,6 @@ fn op_create_worker(
args: Value,
_data: &mut [ZeroCopyBuf],
) -> Result<Value, AnyError> {
- let cli_state = super::global_state(state);
let args: CreateWorkerArgs = serde_json::from_value(args)?;
let specifier = args.specifier.clone();
@@ -196,7 +195,7 @@ fn op_create_worker(
let args_name = args.name;
let use_deno_namespace = args.use_deno_namespace;
if use_deno_namespace {
- cli_state.check_unstable("Worker.deno");
+ super::check_unstable(state, "Worker.deno");
}
let permissions = state.borrow::<Permissions>().clone();
let worker_id = state.take::<WorkerId>();
@@ -204,6 +203,7 @@ fn op_create_worker(
let module_specifier = ModuleSpecifier::resolve_url(&specifier)?;
let worker_name = args_name.unwrap_or_else(|| "".to_string());
+ let cli_state = super::global_state(state);
let (join_handle, worker_handle) = run_worker_thread(
worker_id,