Some checks failed
Build and Test / Validate Setup (push) Has been cancelled
Build and Test / Build (darwin-amd64) (push) Has been cancelled
Build and Test / Build (darwin-arm64) (push) Has been cancelled
Build and Test / Build (linux-amd64) (push) Has been cancelled
Build and Test / Build (windows-amd64) (push) Has been cancelled
Build and Test / Build (linux-arm64) (push) Has been cancelled
Build and Test / Security Audit (push) Has been cancelled
Build and Test / Package Results (push) Has been cancelled
Build and Test / Quality Gate (push) Has been cancelled
Nightly Build / Check for Changes (push) Has been cancelled
Nightly Build / Validate Setup (push) Has been cancelled
Nightly Build / Nightly Build (darwin-amd64) (push) Has been cancelled
Nightly Build / Nightly Build (darwin-arm64) (push) Has been cancelled
Nightly Build / Nightly Build (linux-amd64) (push) Has been cancelled
Nightly Build / Nightly Build (windows-amd64) (push) Has been cancelled
Nightly Build / Nightly Build (linux-arm64) (push) Has been cancelled
Nightly Build / Create Nightly Pre-release (push) Has been cancelled
Nightly Build / Notify Build Status (push) Has been cancelled
Nightly Build / Nightly Maintenance (push) Has been cancelled
- Bump all 18 plugins from 0.110.0 to 0.111.0
- Update rust-toolchain.toml channel to 1.93.1 (nu 0.111.0 requires ≥1.91.1)
Fixes:
- interprocess pin =2.2.x → ^2.3.1 in nu_plugin_mcp, nu_plugin_nats, nu_plugin_typedialog
(required by nu-plugin-core 0.111.0)
- nu_plugin_typedialog: BackendType::Web initializer — add open_browser: false field
- nu_plugin_auth: implement missing user_info_to_value helper referenced in tests
Scripts:
- update_all_plugins.nu: fix [package].version update on minor bumps; add [dev-dependencies]
pass; add nu-plugin-test-support to managed crates
- download_nushell.nu: rustup override unset before rm -rf on nushell dir replace;
fix unclosed ) in string interpolation
76 lines
2.3 KiB
Rust
76 lines
2.3 KiB
Rust
use crate::ClipboardPlugins;
|
|
use crate::clipboard::clipboard::Clipboard;
|
|
use crate::{clipboard::clipboard::create_clipboard, utils::json};
|
|
use nu_plugin::{EngineInterface, EvaluatedCall, PluginCommand};
|
|
use nu_protocol::{Category, IntoPipelineData, LabeledError, PipelineData, Signature, Type, Value};
|
|
|
|
pub struct ClipboardCopy;
|
|
|
|
impl ClipboardCopy {
|
|
pub fn new() -> ClipboardCopy {
|
|
ClipboardCopy {}
|
|
}
|
|
fn format_json(input: &Value) -> Result<String, LabeledError> {
|
|
let json_value =
|
|
json::value_to_json_value(input).map(|v| nu_json::to_string_with_indent(&v, 4));
|
|
|
|
match json_value {
|
|
Ok(Ok(text)) => Ok(text.to_owned()), // Return the owned String
|
|
Ok(Err(err)) => Err(LabeledError::new(format!(
|
|
"JSON Serialization Error: {}",
|
|
err,
|
|
))),
|
|
Err(err) => Err(LabeledError::new(format!("JSON Conversion Error: {}", err))),
|
|
}
|
|
}
|
|
fn copy(engine: &EngineInterface, input: &Value) -> Result<(), LabeledError> {
|
|
let text: Result<String, LabeledError> = match input {
|
|
Value::String { val, .. } => Ok(val.to_owned()),
|
|
_ => Self::format_json(input),
|
|
};
|
|
|
|
match text.map(|text| {
|
|
create_clipboard(engine.get_plugin_config().ok().unwrap_or(None))
|
|
.copy_text(text.as_str())
|
|
}) {
|
|
Ok(Ok(_)) => Ok(()),
|
|
Err(err) | Ok(Err(err)) => Err(err),
|
|
}
|
|
}
|
|
}
|
|
|
|
impl PluginCommand for ClipboardCopy {
|
|
type Plugin = ClipboardPlugins;
|
|
|
|
fn name(&self) -> &str {
|
|
"clipboard copy"
|
|
}
|
|
|
|
fn signature(&self) -> Signature {
|
|
Signature::build("clipboard copy")
|
|
.input_output_types(vec![(Type::Any, Type::Any)])
|
|
.category(Category::System)
|
|
}
|
|
|
|
fn run(
|
|
&self,
|
|
_plugin: &Self::Plugin,
|
|
engine: &EngineInterface,
|
|
call: &EvaluatedCall,
|
|
input: PipelineData,
|
|
) -> Result<PipelineData, LabeledError> {
|
|
let value = input.into_value(call.head);
|
|
match value {
|
|
Ok(value) => {
|
|
Self::copy(engine, &value)?;
|
|
Ok(value.into_pipeline_data())
|
|
}
|
|
Err(err) => Err(LabeledError::new(err.to_string())),
|
|
}
|
|
}
|
|
|
|
fn description(&self) -> &str {
|
|
"copy the input into the clipboard"
|
|
}
|
|
}
|