#!/usr/bin/env perl
use warnings;
use strict;
use Getopt::Long qw(:config bundling no_ignore_case);

sub _warn { warn "$0: @_\n"; }

my $opt_verbose = 0;
my $opt_may_erase = 0;

GetOptions(
	"v|verbose!" => \$opt_verbose,
	"e|erase!" => \$opt_may_erase,
);

my ($helper, @args) = @ARGV;
my $action = pop @ARGV;

sub exec_helper {
	exec {"git"} "git", "credential-$helper", @args;
}

if ($action eq "get") {
	exec_helper();
}
elsif ($action eq "store") {
	if ($opt_verbose) {
		_warn("ignoring store to credential-$helper");
	}
}
elsif ($action eq "erase") {
	if ($opt_may_erase) {
		exec_helper();
	}
	elsif ($opt_verbose) {
		_warn("ignoring erase from credential-$helper");
	}
}
