Skip to content

Commit

Permalink
Merge pull request #167 from jlebon/pr/edit-nochange
Browse files Browse the repository at this point in the history
cli/edit: Minor tweaks
  • Loading branch information
cgwalters authored Nov 1, 2023
2 parents aaa8954 + 9e13cd4 commit a704a99
Showing 1 changed file with 9 additions and 7 deletions.
16 changes: 9 additions & 7 deletions lib/src/cli.rs
Original file line number Diff line number Diff line change
Expand Up @@ -68,8 +68,9 @@ pub(crate) struct SwitchOpts {
/// Perform an edit operation
#[derive(Debug, Parser)]
pub(crate) struct EditOpts {
/// Path to new system specification; use `-` for stdin
pub(crate) filename: String,
/// Use filename to edit system specification
#[clap(long, short = 'f')]
pub(crate) filename: Option<String>,

/// Don't display progress
#[clap(long)]
Expand Down Expand Up @@ -426,19 +427,20 @@ async fn edit(opts: EditOpts) -> Result<()> {
let repo = &sysroot.repo();
let (booted_deployment, _deployments, host) =
crate::status::get_status_require_booted(sysroot)?;
let new_host: Host = if opts.filename == "-" {
let new_host: Host = if let Some(filename) = opts.filename {
let mut r = std::io::BufReader::new(std::fs::File::open(&filename)?);
serde_yaml::from_reader(&mut r)?
} else {
let tmpf = tempfile::NamedTempFile::new()?;
serde_yaml::to_writer(std::io::BufWriter::new(tmpf.as_file()), &host)?;
crate::utils::spawn_editor(&tmpf)?;
tmpf.as_file().seek(std::io::SeekFrom::Start(0))?;
serde_yaml::from_reader(&mut tmpf.as_file())?
} else {
let mut r = std::io::BufReader::new(std::fs::File::open(opts.filename)?);
serde_yaml::from_reader(&mut r)?
};

if new_host.spec == host.spec {
anyhow::bail!("No changes in current host spec");
println!("Edit cancelled, no changes made.");
return Ok(());
}
let new_spec = RequiredHostSpec::from_spec(&new_host.spec)?;
let fetched = pull(repo, new_spec.image, opts.quiet).await?;
Expand Down

0 comments on commit a704a99

Please sign in to comment.