Compare commits
1 Commits
v0.0.5
...
f9fd3cc558
Author | SHA1 | Date | |
---|---|---|---|
|
f9fd3cc558 |
@@ -6,11 +6,6 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
||||
|
||||
## [Unreleased]
|
||||
|
||||
## [0.0.5] - 2025-07-26
|
||||
|
||||
### Added
|
||||
- actually copy files
|
||||
|
||||
## [0.0.4] - 2025-07-26
|
||||
|
||||
### Added
|
||||
|
@@ -3,7 +3,7 @@ members = ["crates/*"]
|
||||
resolver = "2"
|
||||
|
||||
[workspace.package]
|
||||
version = "0.0.5"
|
||||
version = "0.0.4"
|
||||
|
||||
[workspace.dependencies]
|
||||
noil = { path = "crates/noil" }
|
||||
|
@@ -6,10 +6,7 @@ use crate::{
|
||||
};
|
||||
|
||||
#[derive(clap::Parser)]
|
||||
pub struct ApplyCommand {
|
||||
#[arg(long = "commit")]
|
||||
commit: bool,
|
||||
}
|
||||
pub struct ApplyCommand {}
|
||||
|
||||
impl ApplyCommand {
|
||||
pub async fn execute(&self) -> anyhow::Result<()> {
|
||||
@@ -20,15 +17,11 @@ impl ApplyCommand {
|
||||
|
||||
let input = String::from_utf8_lossy(&buffer);
|
||||
|
||||
if !self.commit {
|
||||
let action = print_changes(&input, !self.commit).await?;
|
||||
match action {
|
||||
Action::Quit => Ok(()),
|
||||
Action::Apply { original } => apply(&original).await,
|
||||
Action::Edit => todo!(),
|
||||
}
|
||||
} else {
|
||||
apply(&input).await
|
||||
let action = print_changes(&input).await?;
|
||||
match action {
|
||||
Action::Quit => Ok(()),
|
||||
Action::Apply { original } => apply(&original).await,
|
||||
Action::Edit => todo!(),
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@@ -17,8 +17,6 @@ use crate::{
|
||||
parse,
|
||||
};
|
||||
|
||||
const PREVIEW: bool = false;
|
||||
|
||||
#[derive(Parser)]
|
||||
pub struct EditCommand {
|
||||
#[arg()]
|
||||
@@ -70,7 +68,7 @@ impl EditCommand {
|
||||
.await
|
||||
.context("read noil file")?;
|
||||
|
||||
let res = print_changes(&noil_content, PREVIEW).await;
|
||||
let res = print_changes(&noil_content).await;
|
||||
|
||||
let action = match res {
|
||||
Ok(a) => a,
|
||||
@@ -177,7 +175,6 @@ pub async fn apply(input: &str) -> anyhow::Result<()> {
|
||||
if existing.path.is_dir() {
|
||||
tracing::debug!("copying dir");
|
||||
copy(&existing.path, path).await?;
|
||||
continue;
|
||||
}
|
||||
|
||||
tokio::fs::copy(&existing.path, &path)
|
||||
@@ -238,9 +235,6 @@ async fn copy(source: &Path, dest: &Path) -> anyhow::Result<()> {
|
||||
|
||||
for entry in walkdir::WalkDir::new(source) {
|
||||
let entry = entry?;
|
||||
|
||||
tracing::debug!("copying path: {}", entry.path().display());
|
||||
|
||||
paths.push(entry.path().strip_prefix(source)?.to_path_buf());
|
||||
}
|
||||
|
||||
@@ -266,12 +260,10 @@ async fn copy_path(src: &Path, dest: &Path) -> anyhow::Result<()> {
|
||||
}
|
||||
|
||||
if src.is_dir() {
|
||||
tracing::info!("copying dir: {}", dest.display());
|
||||
tokio::fs::create_dir_all(&dest).await.context("copy dir")?;
|
||||
}
|
||||
|
||||
if src.is_file() {
|
||||
tracing::info!("copying file: {}", dest.display());
|
||||
if dest.is_file() {
|
||||
tokio::fs::copy(&src, &dest).await.context("copy file")?;
|
||||
}
|
||||
|
||||
|
@@ -14,7 +14,7 @@ pub enum Action {
|
||||
Edit,
|
||||
}
|
||||
|
||||
pub async fn print_changes(input: &str, preview: bool) -> anyhow::Result<Action> {
|
||||
pub async fn print_changes(input: &str) -> anyhow::Result<Action> {
|
||||
let noil_index = parse_input(input).context("parse input")?;
|
||||
|
||||
fn print_op(key: &str, index: Option<&str>, path: Option<&Path>) {
|
||||
@@ -64,11 +64,6 @@ pub async fn print_changes(input: &str, preview: bool) -> anyhow::Result<Action>
|
||||
_ => {}
|
||||
}
|
||||
}
|
||||
|
||||
if preview {
|
||||
return Ok(Action::Quit);
|
||||
}
|
||||
|
||||
eprint!("\nApply changes? (y (yes) / n (abort) / E (edit)): ");
|
||||
let mut stderr = std::io::stderr();
|
||||
stderr.flush()?;
|
||||
|
Reference in New Issue
Block a user