summaryrefslogtreecommitdiff
path: root/src/bin/riki.rs
diff options
context:
space:
mode:
Diffstat (limited to 'src/bin/riki.rs')
-rw-r--r--src/bin/riki.rs66
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()?;