#!/usr/bin/perl

use strict;
use warnings;
use Gear::Rules;
use Gear::Remotes;
use Gear::Remotes::Entry;
use Gear::Remotes::InSpec;
use Getopt::Long;

my $help;
my $verbose_default=1;
my $verbose=$verbose_default;
my $opt_force;

my $options_result =
    GetOptions (
	"h|help"   => \$help,
	"f|force"  => \$opt_force,
	"verbose+"  => \$verbose,
	"quiet"  => sub {$verbose=0},
    );

sub exit_usage {
    #exec "pod2usage --exit=0 $0";
    pod2usage({ #-message => "the options below are package-specific:" ,
	-exitval => 0  ,
	-verbose => $verbose ? $verbose - $verbose_default : 0,
	#-output  => $filehandle
	      } );
}

if ($help) {
    &exit_usage();
}

my $topdir=Gear::Git::Helper::get_git_toplevel();
die "fatal: $topdir - not a gear repository.\n" unless &Gear::Remotes::check_if_gear_dir($topdir);
my $gear_remotes_file=&Gear::Remotes::get_gear_remotes_file($topdir);
if (-e $gear_remotes_file) {
    my $gear_remotes=Gear::Remotes->new(-autorestore=>1, -force_overwrite=>$opt_force);
} else {
    my ($sourcegit,$comment,$is_vcs_tag)=Gear::Remotes::InSpec::get_from_spec($verbose > $verbose_default ? ('-debug' => 1):());
    if ($is_vcs_tag) {
	my $gear_remotes_obj=Gear::Remotes::Entry->new(-url => $sourcegit, -label =>'[specfile tag VSC: '.$sourcegit.']');
	my $gear_remotes=Gear::Remotes->new(-remotes_obj=>$gear_remotes_obj, -autorestore=>1, -force_overwrite=>$opt_force);

    } elsif ($sourcegit) {
	warn "gear-remotes-restore: $gear_remotes_file not found.
However, spec file has a comment
$comment $sourcegit

run
gear-remotes-set-from-spec-comment to set the url from spec file comment
or
gear-remotes-set-from-url <url> to set the git url manually.
";
	exit 1;
    } else {
	warn "gear-remotes-restore: $gear_remotes_file not found.
Find git repository url manually and run
gear-remotes-set-from-url <url>.
";
	exit 1;
    }
}

__END__

=head1	NAME

gear-remotes-restore - create .git/config entry from .gear/upstream/remotes file

=head1	SYNOPSIS

B<gear-remotes-restore>
[B<-f>]
[I<remotename>]

=head1	DESCRIPTION

B<gear-remotes-restore> restores .git/config [upstream] entry
from file I<.gear/upstream/remotes>.

=head1	OPTIONS

=over

=item	B<-h, --help>

Display this help and exit.

=item	B<-f, --force>

Force overwrite remotes/upstream.

=item	B<-v, --verbose>

Increase verbosity level.

=item	B<-q, --quiet>

Quiet mode.

=back

=head1	AUTHOR

Written by Igor Vlasenko <viy@altlinux.org>.

=head1	COPYING

Copyright (c) 2014-2022 Igor Vlasenko, ALT Linux Team.

This is free software; you can redistribute it and/or modify it under the terms
of the GNU General Public License as published by the Free Software Foundation;
either version 2 of the License, or (at your option) any later version.

=cut

