diff --git a/Cargo.lock b/Cargo.lock index ac4f78b..4b845ff 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -56,9 +56,9 @@ checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd" [[package]] name = "clap" -version = "3.0.0-beta.5" +version = "3.0.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "feff3878564edb93745d58cf63e17b63f24142506e7a20c87a5521ed7bfb1d63" +checksum = "b63edc3f163b3c71ec8aa23f9bd6070f77edbf3d1d198b164afa90ff00e4ec62" dependencies = [ "atty", "bitflags", @@ -69,14 +69,22 @@ dependencies = [ "strsim", "termcolor", "textwrap", - "unicase", +] + +[[package]] +name = "clap_complete" +version = "3.0.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "678db4c39c013cc68b54d372bce2efc58e30a0337c497c9032fd196802df3bc3" +dependencies = [ + "clap", ] [[package]] name = "clap_derive" -version = "3.0.0-beta.5" +version = "3.0.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8b15c6b4f786ffb6192ffe65a36855bc1fc2444bcd0945ae16748dcd6ed7d0d3" +checksum = "9a1132dc3944b31c20dd8b906b3a9f0a5d0243e092d59171414969657ac6aa85" dependencies = [ "heck", "proc-macro-error", @@ -85,15 +93,6 @@ dependencies = [ "syn", ] -[[package]] -name = "clap_generate" -version = "3.0.0-beta.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "097ab5db1c3417442270cd57c8dd39f6c3114d3ce09d595f9efddbb1fcfaa799" -dependencies = [ - "clap", -] - [[package]] name = "dfm" version = "0.1.0" @@ -101,7 +100,7 @@ dependencies = [ "anyhow", "async-recursion", "clap", - "clap_generate", + "clap_complete", "directories", "futures", "terminal_size", @@ -242,12 +241,9 @@ checksum = "ab5ef0d4909ef3724cc8cce6ccc8572c5c817592e9285f5464f8e86f8bd3726e" [[package]] name = "heck" -version = "0.3.3" +version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6d621efb26863f0e9924c6ac577e8275e5e6b77455db64ffa6c65c904e9e132c" -dependencies = [ - "unicode-segmentation", -] +checksum = "2540771e65fc8cb83cd6e8a237f70c319bd5c29f78ed1084ba5d50eeac86f7f9" [[package]] name = "hermit-abi" @@ -344,9 +340,9 @@ checksum = "692fcb63b64b1758029e0a96ee63e049ce8c5948587f2f7208df04625e5f6b56" [[package]] name = "os_str_bytes" -version = "4.2.0" +version = "6.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "addaa943333a514159c80c97ff4a93306530d965d27e139188283cd13e06a799" +checksum = "8e22443d1643a904602595ba1cd8f7d896afe56d26712531c5ff73a15b2fbf64" dependencies = [ "memchr", ] @@ -492,9 +488,6 @@ name = "textwrap" version = "0.14.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0066c8d12af8b5acd21e00547c3797fde4e8677254a7ee429176ccebbe93dd80" -dependencies = [ - "unicode-width", -] [[package]] name = "tokio" @@ -525,27 +518,6 @@ dependencies = [ "syn", ] -[[package]] -name = "unicase" -version = "2.6.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "50f37be617794602aabbeee0be4f259dc1778fabe05e2d67ee8f79326d5cb4f6" -dependencies = [ - "version_check", -] - -[[package]] -name = "unicode-segmentation" -version = "1.8.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8895849a949e7845e06bd6dc1aa51731a103c42707010a5b591c0038fb73385b" - -[[package]] -name = "unicode-width" -version = "0.1.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9337591893a19b88d8d87f2cec1e73fad5cdfd10e5a6f349f498ad6ea2ffb1e3" - [[package]] name = "unicode-xid" version = "0.2.2" @@ -554,9 +526,9 @@ checksum = "8ccb82d61f80a663efe1f787a51b16b5a51e3314d6ac365b08639f52387b33f3" [[package]] name = "version_check" -version = "0.9.3" +version = "0.9.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5fecdca9a5291cc2b8dcf7dc02453fee791a280f3743cb0905f8822ae463b3fe" +checksum = "49874b5167b65d7193b8aba1567f5c7d93d001cafc34600cee003eda787e483f" [[package]] name = "wasi" diff --git a/Cargo.toml b/Cargo.toml index 9eac8ce..d28d87d 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -7,8 +7,8 @@ edition = "2021" [dependencies] anyhow = "1.0" async-recursion = "0.3" -clap = "3.0.0-beta.5" -clap_generate = "3.0.0-beta.5" +clap = { version = "3.0", features = ["derive"] } +clap_complete = "3.0" directories = "4.0" futures = "0.3" terminal_size = "0.1" diff --git a/src/build.rs b/src/build.rs index f3d4ca8..61a9ea8 100644 --- a/src/build.rs +++ b/src/build.rs @@ -4,6 +4,7 @@ use crate::{ }; pub async fn build(config: &Config) -> anyhow::Result<()> { + tokio::fs::create_dir_all(&config.build_dir).await?; let source_files = get_tree_files(config, &config.source_dir).await?; let build_files = get_tree_files(config, &config.build_dir).await?; diff --git a/src/install.rs b/src/install.rs index cf35cfa..a222fdc 100644 --- a/src/install.rs +++ b/src/install.rs @@ -4,12 +4,13 @@ use crate::{ }; pub async fn install(config: &Config) -> anyhow::Result<()> { + tokio::fs::create_dir_all(&config.install_dir).await?; let built_files = get_tree_files(config, &config.build_dir).await?; let installed_files = get_tree_files(config, &config.install_dir).await?; for file_path in built_files.iter() { if let Some(folder_path) = file_path.parent() { - let dir = config.build_dir.join(folder_path); + let dir = config.install_dir.join(folder_path); tokio::fs::create_dir_all(dir).await?; } diff --git a/src/main.rs b/src/main.rs index 3a606a5..e161cbc 100644 --- a/src/main.rs +++ b/src/main.rs @@ -8,7 +8,7 @@ mod utils; use std::path::PathBuf; use clap::{IntoApp, Parser}; -use clap_generate::generate; +use clap_complete::generate; use directories::{ProjectDirs, UserDirs}; use crate::{build::build, config::Config, diff::diff, install::install, opts::Opts}; diff --git a/src/opts.rs b/src/opts.rs index ae273b5..a0d1d3c 100644 --- a/src/opts.rs +++ b/src/opts.rs @@ -1,7 +1,7 @@ use std::path::PathBuf; use clap::Parser; -use clap_generate::Shell; +use clap_complete::Shell; use crate::utils::APP_VERSION; @@ -20,7 +20,7 @@ pub struct Opts { short, long, default_value = ".df", - about = "Absolute path or relative path to $HOME" + help = "Absolute path or relative path to $HOME" )] pub repo_path: PathBuf, @@ -28,10 +28,10 @@ pub struct Opts { short, long, default_value = "delta", - about = "Command to execute to show diffs" + help = "Command to execute to show diffs" )] pub diff_command: String, - #[clap(long, value_name = "SHELL", about = "Generate shell completions")] + #[clap(long, value_name = "SHELL", help = "Generate shell completions")] pub generate: Option, }