#![doc = include_str!("../README.md")]
#![forbid(unsafe_code)]
#![warn(missing_docs)]
pub extern crate self_replace;
use std::env::current_exe;
use std::ffi::OsStr;
use std::fs::remove_file;
use std::io::Result;
use std::path::Path;
use std::process::Command;
pub fn run_upgrade<P: AsRef<Path>, S: AsRef<OsStr>, A: IntoIterator<Item=S>>(source: P, delete: bool, args: A) -> Result<()> {
let source = source.as_ref();
let current = current_exe()?.canonicalize()?;
self_replace::self_replace(source)?;
Command::new(¤t).args(args).spawn()?;
if delete { remove_file(source)?; }
Ok(())
}
#[inline]
pub fn upgrade<P: AsRef<Path>>(path: P) -> Result<()> {
run_upgrade::<_, &str, _>(path, true, [])
}