extern crate clap;
extern crate directories;
extern crate flate2;
extern crate reqwest;
extern crate semver;
extern crate strum;
extern crate tar;
extern crate toml;
extern crate url;
extern crate zip;
use clap::Clap;
use langenv::langenv::*;
use std::path::Path;
#[derive(Clap)]
#[clap(author = "Vyas Nellutla <vyasnellutla@gmail.com>")]
struct Opts {
#[clap(subcommand)]
subcmd: SubCommand,
}
#[derive(Clap)]
enum SubCommand {
Install(Install),
List(List),
Info(Info),
Setup(Setup),
}
#[derive(Clap)]
struct Install {
package: String,
}
#[derive(Clap)]
struct Info {
package: Option<String>,
}
#[derive(Clap)]
struct Setup {}
#[derive(Clap)]
struct List {}
fn main() -> Result<(), std::io::Error> {
let langenv: Langenv = Langenv::new(Path::new("./repos"))?;
println!("{:?}\n", langenv);
let opts: Opts = Opts::parse();
match opts.subcmd {
SubCommand::Install(Install { package }) => {
println!("User requested to install {:?}", package);
}
SubCommand::Info(Info { package }) => {
match package {
Some(package) => {
println!("User wants to get information about {:?}", package);
}
None => {
println!("Printing Information about langenv & host system");
}
}
}
SubCommand::List(_) => {
println!("User requested a list of all available packages:");
for tool in &langenv.repo.tools {
println!("- {}", &tool.name);
}
println!();
}
SubCommand::Setup(_) => println!("User requested to setup the current user to use langenv"),
}
Ok(())
}