mirror of
https://github.com/nushell/nushell
synced 2024-11-10 07:04:13 +00:00
Remove 'arboard' (#4174)
This commit is contained in:
parent
e6e6b730f3
commit
89cbfd758d
10 changed files with 142 additions and 612 deletions
559
Cargo.lock
generated
559
Cargo.lock
generated
File diff suppressed because it is too large
Load diff
|
@ -89,7 +89,6 @@ extra = [
|
|||
"inc",
|
||||
"tree",
|
||||
"textview",
|
||||
"clipboard-cli",
|
||||
"trash-support",
|
||||
"uuid-support",
|
||||
"start",
|
||||
|
@ -113,7 +112,6 @@ textview = ["nu_plugin_textview"]
|
|||
binaryview = ["nu_plugin_binaryview"]
|
||||
bson = ["nu_plugin_from_bson", "nu_plugin_to_bson"]
|
||||
chart = ["nu_plugin_chart"]
|
||||
clipboard-cli = ["nu-command/clipboard-cli"]
|
||||
query-json = ["nu_plugin_query_json"]
|
||||
s3 = ["nu_plugin_s3"]
|
||||
selector = ["nu_plugin_selector"]
|
||||
|
|
|
@ -31,7 +31,6 @@ nu-pretty-hex = { version = "0.40.0", path="../nu-pretty-hex" }
|
|||
url = "2.2.1"
|
||||
mime = "0.3.16"
|
||||
Inflector = "0.11"
|
||||
arboard = { version = "2.0.1", optional = true }
|
||||
base64 = "0.13.0"
|
||||
bigdecimal = { version = "0.3.0", features = ["serde"] }
|
||||
calamine = "0.18.0"
|
||||
|
@ -113,7 +112,6 @@ quickcheck_macros = "1.0.0"
|
|||
hamcrest2 = "0.3.0"
|
||||
|
||||
[features]
|
||||
clipboard-cli = ["arboard"]
|
||||
rustyline-support = ["rustyline"]
|
||||
stable = []
|
||||
trash-support = ["trash"]
|
||||
|
|
|
@ -221,11 +221,6 @@ fn features_enabled() -> Vec<String> {
|
|||
names.push("zip".to_string());
|
||||
}
|
||||
|
||||
#[cfg(feature = "clipboard-cli")]
|
||||
{
|
||||
names.push("clipboard-cli".to_string());
|
||||
}
|
||||
|
||||
#[cfg(feature = "trash-support")]
|
||||
{
|
||||
names.push("trash".to_string());
|
||||
|
|
|
@ -1,105 +0,0 @@
|
|||
use crate::prelude::*;
|
||||
|
||||
use nu_engine::WholeStreamCommand;
|
||||
use nu_errors::ShellError;
|
||||
use nu_protocol::{Signature, Value};
|
||||
|
||||
use arboard::Clipboard;
|
||||
|
||||
pub struct Clip;
|
||||
|
||||
impl WholeStreamCommand for Clip {
|
||||
fn name(&self) -> &str {
|
||||
"clip"
|
||||
}
|
||||
|
||||
fn signature(&self) -> Signature {
|
||||
Signature::build("clip")
|
||||
}
|
||||
|
||||
fn usage(&self) -> &str {
|
||||
"Copy the contents of the pipeline to the copy/paste buffer."
|
||||
}
|
||||
|
||||
fn run_with_actions(&self, args: CommandArgs) -> Result<ActionStream, ShellError> {
|
||||
clip(args)
|
||||
}
|
||||
|
||||
fn examples(&self) -> Vec<Example> {
|
||||
vec![
|
||||
Example {
|
||||
description: "Save text to the clipboard",
|
||||
example: "echo 'secret value' | clip",
|
||||
result: None,
|
||||
},
|
||||
Example {
|
||||
description: "Save numbers to the clipboard",
|
||||
example: "random integer 10000000..99999999 | clip",
|
||||
result: None,
|
||||
},
|
||||
]
|
||||
}
|
||||
}
|
||||
|
||||
pub fn clip(args: CommandArgs) -> Result<ActionStream, ShellError> {
|
||||
let input = args.input;
|
||||
let name = args.call_info.name_tag;
|
||||
let values: Vec<Value> = input.collect();
|
||||
|
||||
if let Ok(mut clip_context) = Clipboard::new() {
|
||||
let mut new_copy_data = String::new();
|
||||
|
||||
if !values.is_empty() {
|
||||
let mut first = true;
|
||||
for i in &values {
|
||||
if !first {
|
||||
new_copy_data.push('\n');
|
||||
} else {
|
||||
first = false;
|
||||
}
|
||||
|
||||
let string: String = i.convert_to_string();
|
||||
if string.is_empty() {
|
||||
return Err(ShellError::labeled_error(
|
||||
"Unable to convert to string",
|
||||
"Unable to convert to string",
|
||||
name,
|
||||
));
|
||||
}
|
||||
|
||||
new_copy_data.push_str(&string);
|
||||
}
|
||||
}
|
||||
|
||||
match clip_context.set_text(new_copy_data) {
|
||||
Ok(_) => {}
|
||||
Err(_) => {
|
||||
return Err(ShellError::labeled_error(
|
||||
"Could not set contents of clipboard",
|
||||
"could not set contents of clipboard",
|
||||
name,
|
||||
));
|
||||
}
|
||||
}
|
||||
} else {
|
||||
return Err(ShellError::labeled_error(
|
||||
"Could not open clipboard",
|
||||
"could not open clipboard",
|
||||
name,
|
||||
));
|
||||
}
|
||||
Ok(ActionStream::empty())
|
||||
}
|
||||
|
||||
#[cfg(test)]
|
||||
mod tests {
|
||||
use super::Clip;
|
||||
use super::ShellError;
|
||||
|
||||
#[test]
|
||||
fn examples_work_as_expected() -> Result<(), ShellError> {
|
||||
use crate::examples::test as test_examples;
|
||||
|
||||
test_examples(Clip {})
|
||||
}
|
||||
}
|
|
@ -1,13 +1,9 @@
|
|||
mod ansi;
|
||||
mod benchmark;
|
||||
mod clear;
|
||||
#[cfg(feature = "clipboard-cli")]
|
||||
mod clip;
|
||||
mod du;
|
||||
mod exec;
|
||||
mod kill;
|
||||
#[cfg(feature = "clipboard-cli")]
|
||||
mod paste;
|
||||
mod pwd;
|
||||
mod run_external;
|
||||
mod sleep;
|
||||
|
@ -17,13 +13,9 @@ mod which_;
|
|||
pub use ansi::*;
|
||||
pub use benchmark::Benchmark;
|
||||
pub use clear::Clear;
|
||||
#[cfg(feature = "clipboard-cli")]
|
||||
pub use clip::Clip;
|
||||
pub use du::Du;
|
||||
pub use exec::Exec;
|
||||
pub use kill::Kill;
|
||||
#[cfg(feature = "clipboard-cli")]
|
||||
pub use paste::Paste;
|
||||
pub use pwd::Pwd;
|
||||
pub use run_external::RunExternalCommand;
|
||||
pub use sleep::Sleep;
|
||||
|
|
|
@ -1,61 +0,0 @@
|
|||
use crate::prelude::*;
|
||||
|
||||
use nu_engine::WholeStreamCommand;
|
||||
use nu_errors::ShellError;
|
||||
use nu_protocol::{Primitive, ReturnSuccess, Signature, UntaggedValue};
|
||||
|
||||
use arboard::Clipboard;
|
||||
|
||||
pub struct Paste;
|
||||
|
||||
impl WholeStreamCommand for Paste {
|
||||
fn name(&self) -> &str {
|
||||
"paste"
|
||||
}
|
||||
|
||||
fn signature(&self) -> Signature {
|
||||
Signature::build("paste")
|
||||
}
|
||||
|
||||
fn usage(&self) -> &str {
|
||||
"Paste contents from the clipboard"
|
||||
}
|
||||
|
||||
fn run_with_actions(&self, args: CommandArgs) -> Result<ActionStream, ShellError> {
|
||||
paste(args)
|
||||
}
|
||||
|
||||
fn examples(&self) -> Vec<Example> {
|
||||
vec![Example {
|
||||
description: "Paste text from your clipboard",
|
||||
example: "echo 'secret value' | clip | paste",
|
||||
result: Some(vec![UntaggedValue::Primitive(Primitive::String(
|
||||
"secret value".to_owned(),
|
||||
))
|
||||
.into_value(Tag::default())]),
|
||||
}]
|
||||
}
|
||||
}
|
||||
|
||||
pub fn paste(args: CommandArgs) -> Result<ActionStream, ShellError> {
|
||||
let name = args.call_info.name_tag;
|
||||
|
||||
if let Ok(mut clip_context) = Clipboard::new() {
|
||||
match clip_context.get_text() {
|
||||
Ok(out) => Ok(ActionStream::one(ReturnSuccess::value(
|
||||
UntaggedValue::Primitive(Primitive::String(out)),
|
||||
))),
|
||||
Err(_) => Err(ShellError::labeled_error(
|
||||
"Could not get contents of clipboard",
|
||||
"could not get contents of clipboard",
|
||||
name,
|
||||
)),
|
||||
}
|
||||
} else {
|
||||
Err(ShellError::labeled_error(
|
||||
"Could not open clipboard",
|
||||
"could not open clipboard",
|
||||
name,
|
||||
))
|
||||
}
|
||||
}
|
|
@ -366,14 +366,6 @@ pub fn create_default_context(interactive: bool) -> Result<EvaluationContext, Bo
|
|||
whole_stream_command(DataFrameCumulative),
|
||||
whole_stream_command(DataFrameRename),
|
||||
]);
|
||||
|
||||
#[cfg(feature = "clipboard-cli")]
|
||||
{
|
||||
context.add_commands(vec![
|
||||
whole_stream_command(crate::commands::Clip),
|
||||
whole_stream_command(crate::commands::Paste),
|
||||
]);
|
||||
}
|
||||
}
|
||||
|
||||
Ok(context)
|
||||
|
|
|
@ -4,7 +4,7 @@ description = "A converter plugin to the mp4 format for Nushell"
|
|||
edition = "2018"
|
||||
license = "MIT"
|
||||
name = "nu_plugin_from_mp4"
|
||||
version = "0.1.0"
|
||||
version = "0.40.0"
|
||||
|
||||
[lib]
|
||||
doctest = false
|
||||
|
|
|
@ -208,7 +208,7 @@ pub fn css(selector: &str) -> ScraperSelector {
|
|||
mod tests {
|
||||
use super::*;
|
||||
|
||||
const SIMPLE_LIST: &'static str = r#"
|
||||
const SIMPLE_LIST: &str = r#"
|
||||
<ul>
|
||||
<li>Coffee</li>
|
||||
<li>Tea</li>
|
||||
|
|
Loading…
Reference in a new issue