@@ 0,0 1,53 @@
+use crate::dirstate;
+use crate::errors;
+use crate::revlogs;
+use snafu::{OptionExt, ResultExt};
+use std::env;
+use std::fs::File;
+use std::io::BufReader;
+use std::path::PathBuf;
+
+fn hg_dir() -> Result<PathBuf, errors::RugError> {
+ let current_dir = env::current_dir().context(errors::NotAValidDirectory)?;
+ let mut anc = current_dir.ancestors();
+
+ loop {
+ let p = match anc.next() {
+ Some(d) => d,
+ None => break None,
+ };
+ let possible_hg_dir = p.join(".hg");
+ if possible_hg_dir.is_dir() {
+ break Some(possible_hg_dir);
+ }
+ }
+ .context(errors::NotARepository)
+}
+
+pub fn hg_log() -> Result<(), errors::RugError> {
+ let fname = hg_dir()?.join("store/00changelog.i");
+
+ let f = File::open(&fname).context(errors::NoChangelog { path: &fname })?;
+ let mut r = BufReader::new(f);
+
+ let revlog =
+ revlogs::Revlog::new(&mut r).context(errors::CannotParseRevlog { path: &fname })?;
+
+ println!("{}", revlog);
+
+ Ok(())
+}
+
+pub fn hg_status() -> Result<(), errors::RugError> {
+ let fname = hg_dir()?.join("dirstate");
+
+ let f = File::open(&fname).context(errors::NoDirstate { path: &fname })?;
+ let mut r = BufReader::new(f);
+
+ let dirstate =
+ dirstate::Dirstate::new(&mut r).context(errors::CannotParseDirstate { path: &fname })?;
+
+ println!("{}", dirstate);
+
+ Ok(())
+}
@@ 1,59 1,10 @@
-use snafu::{OptionExt, ResultExt};
-use std::env;
-use std::fs::File;
-use std::io::BufReader;
-use std::path::PathBuf;
use structopt::StructOpt;
+mod commands;
mod dirstate;
mod errors;
mod revlogs;
-fn hg_dir() -> Result<PathBuf, errors::RugError> {
- let current_dir = env::current_dir().context(errors::NotAValidDirectory)?;
- let mut anc = current_dir.ancestors();
-
- loop {
- let p = match anc.next() {
- Some(d) => d,
- None => break None,
- };
- let possible_hg_dir = p.join(".hg");
- if possible_hg_dir.is_dir() {
- break Some(possible_hg_dir);
- }
- }
- .context(errors::NotARepository)
-}
-
-fn hg_log() -> Result<(), errors::RugError> {
- let fname = hg_dir()?.join("store/00changelog.i");
-
- let f = File::open(&fname).context(errors::NoChangelog { path: &fname })?;
- let mut r = BufReader::new(f);
-
- let revlog =
- revlogs::Revlog::new(&mut r).context(errors::CannotParseRevlog { path: &fname })?;
-
- println!("{}", revlog);
-
- Ok(())
-}
-
-fn hg_status() -> Result<(), errors::RugError> {
- let fname = hg_dir()?.join("dirstate");
-
- let f = File::open(&fname).context(errors::NoDirstate { path: &fname })?;
- let mut r = BufReader::new(f);
-
- let dirstate =
- dirstate::Dirstate::new(&mut r).context(errors::CannotParseDirstate { path: &fname })?;
-
- println!("{}", dirstate);
-
- Ok(())
-}
-
#[derive(StructOpt)]
#[structopt(
name = "rug",
@@ 71,11 22,11 @@ enum Rug {
fn main() {
match Rug::from_args() {
- Rug::Log {} => match hg_log() {
+ Rug::Log {} => match commands::hg_log() {
Ok(_) => {}
Err(e) => println!("{}", e),
},
- Rug::Status {} => match hg_status() {
+ Rug::Status {} => match commands::hg_status() {
Ok(_) => {}
Err(e) => println!("{}", e),
},