#![deny(warnings)]
use docopt::Docopt;
use git2::{Direction, Repository};
use serde_derive::Deserialize;
#[derive(Deserialize)]
struct Args {
arg_remote: String,
}
fn run(args: &Args) -> Result<(), git2::Error> {
let repo = Repository::open(".")?;
let remote = &args.arg_remote;
let mut remote = repo
.find_remote(remote)
.or_else(|_| repo.remote_anonymous(remote))?;
let connection = remote.connect_auth(Direction::Fetch, None, None)?;
for head in connection.list()?.iter() {
println!("{}\t{}", head.oid(), head.name());
}
Ok(())
}
fn main() {
const USAGE: &str = "
usage: ls-remote [option] <remote>
Options:
-h, --help show this message
";
let args = Docopt::new(USAGE)
.and_then(|d| d.deserialize())
.unwrap_or_else(|e| e.exit());
match run(&args) {
Ok(()) => {}
Err(e) => println!("error: {}", e),
}
}