Compare commits

...

6 commits

Author SHA1 Message Date
Quantum 2109cd45aa Document cargo install in README.md 2024-10-15 02:32:20 -04:00
Quantum a5e9f7e6fe Fix license tag 2024-10-15 02:27:11 -04:00
Quantum 4ef2eab3db Ignore .github in published crate 2024-10-15 02:22:35 -04:00
Quantum 6faafdd7ae Bump version to 0.1.2 and add cargo metadata 2024-10-15 02:18:34 -04:00
Quantum 58f0ba9952 Clean up use statements 2024-10-15 02:05:39 -04:00
Quantum 7e74fc8888 Forward child process return code if possible 2024-10-15 02:02:39 -04:00
5 changed files with 33 additions and 10 deletions

2
Cargo.lock generated
View file

@ -592,7 +592,7 @@ dependencies = [
[[package]] [[package]]
name = "ntfy-run" name = "ntfy-run"
version = "0.1.1" version = "0.1.2"
dependencies = [ dependencies = [
"clap", "clap",
"itertools", "itertools",

View file

@ -1,7 +1,19 @@
[package] [package]
name = "ntfy-run" name = "ntfy-run"
version = "0.1.1" version = "0.1.2"
edition = "2021" edition = "2021"
authors = ["Quantum <me@quantum5.ca>"]
description = "ntfy-run is a tool to run a command, capture its output, and send it to a ntfy server."
readme = "README.md"
homepage = "https://github.com/quantum5/ntfy-run"
repository = "https://github.com/quantum5/ntfy-run"
license = "GPL-3.0-or-later"
keywords = ["ntfy", "cron", "notifications", "utility"]
categories = ["command-line-interface"]
exclude = [
".github/*"
]
[dependencies] [dependencies]
clap = { version = "4.5.20", features = ["derive", "env"] } clap = { version = "4.5.20", features = ["derive", "env"] }

View file

@ -16,7 +16,13 @@ sudo wget https://github.com/quantum5/ntfy-run/releases/latest/download/ntfy-run
sudo chmod a+x /usr/local/bin/ntfy-run sudo chmod a+x /usr/local/bin/ntfy-run
``` ```
Alternatively, build it yourself: You can also install the latest release with `cargo`:
```bash
cargo install ntfy-run
```
Finally, you can build the latest Git version yourself:
```bash ```bash
git clone https://github.com/quantum5/ntfy-run.git git clone https://github.com/quantum5/ntfy-run.git

View file

@ -1,13 +1,13 @@
use crate::runner::CaptureError; use crate::runner::{CaptureError, CapturedOutput};
use clap::Parser; use clap::Parser;
use runner::CapturedOutput; use std::process::exit;
mod quote; mod quote;
mod runner; mod runner;
mod tap_stream; mod tap_stream;
#[derive(Parser)] #[derive(Parser)]
/// Tool to run a command, capture its output, and send it to ntfy. #[command(version, about)]
struct Cli { struct Cli {
/// URL of the ntfy server and topic, e.g. https://ntfy.sh/topic /// URL of the ntfy server and topic, e.g. https://ntfy.sh/topic
#[arg(short = 'n', long = "ntfy-url", env = "NTFY_URL", alias = "url")] #[arg(short = 'n', long = "ntfy-url", env = "NTFY_URL", alias = "url")]
@ -210,7 +210,13 @@ async fn main() {
}; };
match request.send().await.and_then(|r| r.error_for_status()) { match request.send().await.and_then(|r| r.error_for_status()) {
Ok(_) => (), Ok(_) => exit(match status {
Err(error) => eprintln!("Failed to send request to ntfy: {}", error), Some(code) => code.code().unwrap_or(255),
None => 255,
}),
Err(error) => {
eprintln!("Failed to send request to ntfy: {}", error);
exit(37)
}
} }
} }

View file

@ -1,7 +1,6 @@
use crate::tap_stream::{ReadOrWrite, TapStream}; use crate::tap_stream::{ReadOrWrite, TapStream};
use std::process::{ExitStatus, Stdio}; use std::process::{ExitStatus, Stdio};
use tokio::process::Command; use tokio::{io, process::Command, select};
use tokio::{io, select};
pub enum CaptureError { pub enum CaptureError {
Spawn(io::Error), Spawn(io::Error),