diff options
Diffstat (limited to 'src/bin/riki.rs')
-rw-r--r-- | src/bin/riki.rs | 66 |
1 files changed, 14 insertions, 52 deletions
diff --git a/src/bin/riki.rs b/src/bin/riki.rs index 3c24148..c1f9e4b 100644 --- a/src/bin/riki.rs +++ b/src/bin/riki.rs @@ -1,13 +1,14 @@ use clap::{CommandFactory, FromArgMatches, Parser}; -use git_testament::{git_testament, render_testament, GitModification}; +use git_testament::git_testament; use log::{debug, error, info}; -use riki::error::SiteError; +use riki::error::RikiError; use riki::git::{git_dirty, git_whatchanged}; use riki::name::Name; use riki::pagespec; use riki::site::Site; use riki::time::parse_timestamp; use riki::util::{canonicalize, copy_file_from_source, get_mtime, mkdir, set_mtime}; +use riki::version::Version; use std::error::Error; use std::path::{Path, PathBuf}; @@ -28,19 +29,20 @@ fn main() { } } -fn real_main() -> Result<(), SiteError> { +fn real_main() -> Result<(), RikiError> { let env = env_logger::Env::new().filter(ENVLOG); env_logger::init_from_env(env); info!("riki starts"); - let version = version().map_err(SiteError::Format)?; - let long_version = long_version().map_err(SiteError::Format)?; + let version = Version::new(&VERSION); + let short = version.version()?; + let long = version.long_version()?; { let argparser = Args::command(); - let argparser = argparser.version(version.as_str()); - let argparser = argparser.long_version(long_version.as_str()); + let argparser = argparser.version(short.as_str()); + let argparser = argparser.long_version(long.as_str()); let args = argparser.get_matches(); let args = Args::from_arg_matches(&args).unwrap(); @@ -57,46 +59,6 @@ fn real_main() -> Result<(), SiteError> { Ok(()) } -fn version() -> Result<String, std::fmt::Error> { - use std::fmt::Write as _; - let mut ret = String::new(); - writeln!(ret, "{}", render_testament!(VERSION))?; - writeln!( - ret, - "{} {}", - env!("CARGO_PKG_NAME"), - env!("CARGO_PKG_VERSION") - )?; - Ok(ret) -} - -fn long_version() -> Result<String, std::fmt::Error> { - use std::fmt::Write as _; - let mut ret = String::new(); - writeln!(ret, "{}", render_testament!(VERSION))?; - writeln!(ret, "Crate version: {}", env!("CARGO_PKG_VERSION"))?; - if let Some(branch) = VERSION.branch_name { - writeln!(ret, "Built from branch: {}", branch)?; - } else { - writeln!(ret, "Branch information is missing.")?; - } - writeln!(ret, "Commit info: {}", VERSION.commit)?; - if VERSION.modifications.is_empty() { - writeln!(ret, "Working tree is clean")?; - } else { - use GitModification::*; - for fmod in VERSION.modifications { - match fmod { - Added(f) => writeln!(ret, "Added: {}", String::from_utf8_lossy(f))?, - Removed(f) => writeln!(ret, "Removed: {}", String::from_utf8_lossy(f))?, - Modified(f) => writeln!(ret, "Modified: {}", String::from_utf8_lossy(f))?, - Untracked(f) => writeln!(ret, "Untracked: {}", String::from_utf8_lossy(f))?, - } - } - } - Ok(ret) -} - /// Static site generator. /// /// Riki generates a static web site from markdown files. It mostly @@ -134,7 +96,7 @@ struct Build { } impl Build { - fn run(&self) -> Result<(), SiteError> { + fn run(&self) -> Result<(), RikiError> { let srcdir = canonicalize(&self.srcdir)?; debug!("srcdir={}", srcdir.display()); @@ -175,7 +137,7 @@ struct List { } impl List { - fn run(&self) -> Result<(), SiteError> { + fn run(&self) -> Result<(), RikiError> { let srcdir = canonicalize(&self.srcdir)?; let mut site = Site::new(&srcdir, &srcdir); site.scan()?; @@ -196,7 +158,7 @@ struct Timestamps { } impl Timestamps { - fn run(&self) -> Result<(), SiteError> { + fn run(&self) -> Result<(), RikiError> { let srcdir = canonicalize(&self.srcdir)?; let mut site = Site::new(&srcdir, &srcdir); site.scan()?; @@ -234,7 +196,7 @@ struct ParseDate { } impl ParseDate { - fn run(&self) -> Result<(), SiteError> { + fn run(&self) -> Result<(), RikiError> { for date in self.dates.iter() { println!("input: {:?}", date); let parsed = parse_timestamp(date)?; @@ -258,7 +220,7 @@ struct PageSpec { } impl PageSpec { - fn run(&self) -> Result<(), SiteError> { + fn run(&self) -> Result<(), RikiError> { let srcdir = canonicalize(&self.srcdir)?; let mut site = Site::new(&srcdir, &PathBuf::from("/tmp")); site.scan()?; |