use gixor::{AliasManager, GixorFactory, Name, RepositoryManager};
use gixor::repos::Repository;
use gixor::aliases::Alias;
use std::path::PathBuf;
fn main() -> gixor::Result<()> {
let config_path = PathBuf::from("custom_config.json");
let mut gixor = GixorFactory::new_at(&config_path);
println!("Adding custom repository...");
let custom_repo = Repository::new("https://github.com/github/gitignore.git"); gixor.add_repository(custom_repo)?;
println!("Adding an alias 'my-web-stack'...");
let web_alias = Alias::new(
"my-web-stack".to_string(),
"Standard boilerplates for my web projects".to_string(),
Name::parse_all(vec!["Node", "TypeScript", "React"]),
);
gixor.add_alias(web_alias)?;
println!("\nConfigured Repositories:");
for repo in gixor.repositories() {
println!(" - {}: {}", repo.name, repo.url);
}
println!("\nConfigured Aliases:");
for alias in gixor.iter_aliases() {
println!(" - {}: {} ({:?})", alias.name, alias.description, alias.boilerplates);
}
println!("\nSaving configuration to {}...", config_path.display());
gixor.store()?;
if config_path.exists() {
std::fs::remove_file(config_path).ok();
}
Ok(())
}