Compare commits

...

3 Commits

2 changed files with 23 additions and 7 deletions

View File

@ -13,7 +13,7 @@ pub struct Config {
pub repositories: Vec<Repository>,
}
#[derive(Debug, Serialize, Deserialize)]
#[derive(Debug, Eq, PartialEq, Serialize, Deserialize)]
/// The internal representation of a single repository
pub struct Repository {
name: String,

View File

@ -1,7 +1,7 @@
pub mod config;
use config::{Config, Repository};
use std::error::Error;
use std::env;
use std::error::Error;
#[derive(Debug)]
/// Holds the current state of the application.
@ -19,6 +19,7 @@ pub struct State {
enum Cmd {
Add,
Help,
Fetch,
DumpConfig,
}
@ -80,10 +81,19 @@ impl State {
_ => {}
},
None => {
eprintln!("No URL provided for \'number\' command\n");
eprintln!("No URL provided for command\n");
}
}
}
// fetch command
else if x == "fetch" {
match state.cmd {
None => {
state.cmd = Some(Cmd::Fetch);
}
_ => {}
}
}
arg = args.next();
}
@ -106,11 +116,17 @@ pub fn run(state: State, mut config: Config) -> Result<(), Box<dyn Error>> {
println!("{}", config.to_string().unwrap());
}
Some(Cmd::Add) => {
config.repositories.push(Repository::new(match state.url {
let repo = Repository::new(match state.url {
Some(x) => x,
None => String::new(),
}));
config.save_config()?;
});
if let None = config.repositories.iter().find(|x| **x == repo) {
config.repositories.push(repo);
config.save_config()?;
println!("Repository has been added");
} else {
println!("Repository is already being tracked");
}
}
Some(x) => {
println!("{:?} hasn't been implemented yet!", x)
@ -137,7 +153,7 @@ General
help Print out this help message
Manage Repositories
clone Add another git repo to keep track of
add Add another git repo to keep track of
fetch Update currently tracked repos"
)
}