diff options
author | Benedikt Peetz <benedikt.peetz@b-peetz.de> | 2024-05-20 16:10:21 +0200 |
---|---|---|
committer | Benedikt Peetz <benedikt.peetz@b-peetz.de> | 2024-05-20 16:14:26 +0200 |
commit | 368cb6b0d25db2ae23be42ad51584de059997e51 (patch) | |
tree | 3282e45d3ebced63c8498a47e83a255c35de620b /sys/nixpkgs/pkgs/yt/src/bin/yts | |
parent | refactor(hm): Rename to `modules/home` (diff) | |
download | nixos-config-368cb6b0d25db2ae23be42ad51584de059997e51.tar.gz nixos-config-368cb6b0d25db2ae23be42ad51584de059997e51.zip |
refactor(sys): Modularize and move to `modules/system` or `pkgs`
Diffstat (limited to 'sys/nixpkgs/pkgs/yt/src/bin/yts')
-rw-r--r-- | sys/nixpkgs/pkgs/yt/src/bin/yts/args.rs | 41 | ||||
-rw-r--r-- | sys/nixpkgs/pkgs/yt/src/bin/yts/main.rs | 91 |
2 files changed, 0 insertions, 132 deletions
diff --git a/sys/nixpkgs/pkgs/yt/src/bin/yts/args.rs b/sys/nixpkgs/pkgs/yt/src/bin/yts/args.rs deleted file mode 100644 index 56989421..00000000 --- a/sys/nixpkgs/pkgs/yt/src/bin/yts/args.rs +++ /dev/null @@ -1,41 +0,0 @@ -use clap::{Parser, Subcommand}; -/// A helper for selecting which videos to download from ytcc to ytc -#[derive(Parser, Debug)] -#[clap(author, version, about, long_about = None)] -pub struct Args { - #[command(subcommand)] - /// subcommand to execute - pub subcommand: Option<Command>, -} - -#[derive(Subcommand, Debug)] -pub enum Command { - #[clap(value_parser)] - /// Which ordering to use - Order { - #[command(subcommand)] - command: OrderCommand, - }, -} - -#[derive(Subcommand, Debug)] -pub enum OrderCommand { - #[clap(value_parser)] - /// Order by date - #[group(required = true)] - Date { - #[arg(value_parser)] - /// Order descending - desc: bool, - #[clap(value_parser)] - /// Order ascending - asc: bool, - }, - #[clap(value_parser)] - /// Pass a raw SQL 'ORDER BY' value - Raw { - #[clap(value_parser)] - /// The raw value(s) to pass - value: Vec<String>, - }, -} diff --git a/sys/nixpkgs/pkgs/yt/src/bin/yts/main.rs b/sys/nixpkgs/pkgs/yt/src/bin/yts/main.rs deleted file mode 100644 index 7398db61..00000000 --- a/sys/nixpkgs/pkgs/yt/src/bin/yts/main.rs +++ /dev/null @@ -1,91 +0,0 @@ -use anyhow::{bail, Context, Result}; -use clap::Parser; -use std::{ - env, - io::{BufRead, BufReader, Write}, - process::Command as StdCmd, -}; -use tempfile::NamedTempFile; -use yt::{constants::HELP_STR, filter_line, YtccListData}; - -use crate::args::{Args, Command, OrderCommand}; - -mod args; - -fn main() -> Result<()> { - let args = Args::parse(); - cli_log::init_cli_log!(); - - let ordering = match args.subcommand.unwrap_or(Command::Order { - command: OrderCommand::Date { - desc: true, - asc: false, - }, - }) { - Command::Order { command } => match command { - OrderCommand::Date { desc, asc } => { - if desc { - vec!["--order-by".into(), "publish_date".into(), "desc".into()] - } else if asc { - vec!["--order-by".into(), "publish_date".into(), "asc".into()] - } else { - vec!["--order-by".into(), "publish_date".into(), "desc".into()] - } - } - OrderCommand::Raw { value } => [vec!["--order-by".into()], value].concat(), - }, - }; - - let json_map = { - let mut ytcc = StdCmd::new("ytcc"); - ytcc.args(["--output", "json", "list"]); - ytcc.args(ordering); - - serde_json::from_slice::<Vec<YtccListData>>( - &ytcc.output().context("Failed to json from ytcc")?.stdout, - ) - .context("Failed to deserialize json output")? - }; - - let mut edit_file = NamedTempFile::new().context("Failed to get tempfile")?; - - json_map.iter().for_each(|line| { - let line = line.to_string(); - edit_file - .write_all(line.as_bytes()) - .expect("This write should not fail"); - }); - - write!(&edit_file, "{}", HELP_STR)?; - edit_file.flush().context("Failed to flush edit file")?; - - let read_file = edit_file.reopen()?; - - let mut nvim = StdCmd::new("nvim"); - nvim.arg(edit_file.path()); - - let status = nvim.status().context("Falied to run nvim")?; - if !status.success() { - bail!("Nvim exited with error status: {}", status) - } - - let mut watching = Vec::new(); - let reader = BufReader::new(&read_file); - for line in reader.lines() { - let line = line.context("Failed to read line")?; - - if let Some(downloadable) = - filter_line(&line).with_context(|| format!("Failed to process line: '{}'", line))? - { - watching.push(downloadable); - } - } - - let watching: String = watching - .iter() - .map(|d| d.to_string()) - .collect::<Vec<String>>() - .join("\n"); - println!("{}", &watching); - Ok(()) -} |