From 5247a524978dc79b0c2b777513db749bd20e0bb8 Mon Sep 17 00:00:00 2001 From: Olivia Brooks <109807080+Cutieguwu@users.noreply.github.com> Date: Wed, 15 Oct 2025 12:42:21 -0400 Subject: [PATCH] Prepare for Lockfile saving; Clean up. --- Cargo.lock | 77 +++++++++++++++++++++++++++++++++++++++++++++++++++++ Cargo.toml | 1 + src/cli.rs | 28 +++++++++++++++---- src/lock.rs | 1 + 4 files changed, 102 insertions(+), 5 deletions(-) create mode 100644 src/lock.rs diff --git a/Cargo.lock b/Cargo.lock index d77137d..96bb3c9 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -156,8 +156,15 @@ dependencies = [ "markdown", "ron", "serde", + "toml", ] +[[package]] +name = "equivalent" +version = "1.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "877a4ace8713b0bcf2a4e7eec82529c029f1d0619886d18145fea96c3ffe5c0f" + [[package]] name = "fdeflate" version = "0.3.7" @@ -189,6 +196,12 @@ version = "0.3.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0cc23270f6e1808e30a928bdc84dea0b9b4136a8bc82338574f23baf47bbd280" +[[package]] +name = "hashbrown" +version = "0.16.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5419bdc4f6a9207fbeba6d11b604d481addf78ecd10c11ad51e76c2f6482748d" + [[package]] name = "heck" version = "0.5.0" @@ -245,6 +258,16 @@ dependencies = [ "quick-error", ] +[[package]] +name = "indexmap" +version = "2.11.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4b0f83760fb341a774ed326568e19f5a863af4a952def8c39f9ab92fd95b88e5" +dependencies = [ + "equivalent", + "hashbrown", +] + [[package]] name = "js-sys" version = "0.3.81" @@ -406,6 +429,15 @@ dependencies = [ "syn", ] +[[package]] +name = "serde_spanned" +version = "1.0.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e24345aa0fe688594e73770a5f6d1b216508b4f93484c0026d521acd30134392" +dependencies = [ + "serde_core", +] + [[package]] name = "shlex" version = "1.3.0" @@ -435,6 +467,45 @@ dependencies = [ "unicode-ident", ] +[[package]] +name = "toml" +version = "0.9.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f0dc8b1fb61449e27716ec0e1bdf0f6b8f3e8f6b05391e8497b8b6d7804ea6d8" +dependencies = [ + "indexmap", + "serde_core", + "serde_spanned", + "toml_datetime", + "toml_parser", + "toml_writer", + "winnow", +] + +[[package]] +name = "toml_datetime" +version = "0.7.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f2cdb639ebbc97961c51720f858597f7f24c4fc295327923af55b74c3c724533" +dependencies = [ + "serde_core", +] + +[[package]] +name = "toml_parser" +version = "1.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c0cbe268d35bdb4bb5a56a2de88d0ad0eb70af5384a99d648cd4b3d04039800e" +dependencies = [ + "winnow", +] + +[[package]] +name = "toml_writer" +version = "1.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "df8b2b54733674ad286d16267dcfc7a71ed5c776e4ac7aa3c3e2561f7c637bf2" + [[package]] name = "unicode-id" version = "0.3.6" @@ -565,6 +636,12 @@ dependencies = [ "windows-link", ] +[[package]] +name = "winnow" +version = "0.7.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "21a0236b59786fed61e2a80582dd500fe61f18b5dca67a4a067d0bc9039339cf" + [[package]] name = "zune-core" version = "0.4.12" diff --git a/Cargo.toml b/Cargo.toml index 250a03c..77ab98b 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -9,6 +9,7 @@ chrono = "0.4" glob = "0.3.3" markdown = "1.0.0" ron = "0.11" +toml = "0.9.8" [dependencies.clap] version = "4.5" diff --git a/src/cli.rs b/src/cli.rs index 49065fb..f671b51 100644 --- a/src/cli.rs +++ b/src/cli.rs @@ -8,11 +8,23 @@ pub struct Cli { #[command(subcommand)] pub command: Commands, - #[arg(value_hint = clap::ValueHint::DirPath, default_value = format!("./target"))] + #[arg(value_hint = clap::ValueHint::DirPath, default_value = "./target")] target_dir: PathBuf, } -#[derive(Debug, Subcommand)] +impl Cli { + fn get_target_dir(&self) -> PathBuf { + match self.command.clone() { + Commands::Clean => self.target_dir.to_owned(), + Commands::Build { lockfile, .. } => lockfile.into(), + Commands::Refresh { lockfile, .. } => lockfile.into(), + Commands::Update { lockfile } => lockfile.into(), + _ => panic!("New cli::Commands variant not accounted for."), + } + } +} + +#[derive(Debug, Subcommand, Clone, PartialEq)] pub enum Commands { #[command(arg_required_else_help = true)] Build { @@ -60,13 +72,13 @@ pub enum RefreshScope { All, // Both of the above } -#[derive(Debug, Args)] +#[derive(Debug, Args, Clone, PartialEq)] pub struct LockfileAccess { /// Path to blog root for batch updating. #[arg( long, value_hint = clap::ValueHint::DirPath, - default_value = format!("./") + default_value = "./" )] post_tree: PathBuf, @@ -75,7 +87,13 @@ pub struct LockfileAccess { short, long, value_hint = clap::ValueHint::DirPath, - default_value = format!("cutinews.lock") + default_value = "cutinews.lock" )] lock_file: PathBuf, } + +impl Into for LockfileAccess { + fn into(self) -> PathBuf { + return PathBuf::from(format!("{:?}{:?}", self.post_tree, self.lock_file)); + } +} diff --git a/src/lock.rs b/src/lock.rs new file mode 100644 index 0000000..7547ea3 --- /dev/null +++ b/src/lock.rs @@ -0,0 +1 @@ +pub struct LockFile {}