#!/usr/bin/perl
use warnings; use strict;
my $scripts_dir = "$HOME/amiga/scripts";
my $links_dir = "$HOME/amiga/links";
my $remove_dir = "$HOME/amiga/scripts-removed";
chdir $scripts_dir or die "can't chdir: $scripts_dir\n";
mkdir $links_dir;
mkdir $remove_dir;
my @games = `ls`;
chomp for @games;
my %short_to_long;
for my $long (@games) {
	my $short = $long;
	$short =~ s/ \(.*//;
	$short =~ s/ [rv][0-9].*//;
	push @{$short_to_long{$short}}, $long;
}
sub Rename {
	my ($from, $to) = @_;
	if ($from ne $to) {
		if (-e $to || !rename $from, $to) {
			die qq{can't rename: "$from" -> "$to"\n};
		}
	}
}
sub Symlink {
	my ($from, $to) = @_;
	if ($from ne $to) {
		if (-e $to || !symlink $from, $to) {
			die qq{can't symlink: "$from" -> "$to"\n};
		}
	}
}
for my $short (sort keys %short_to_long) {
	my $long = $short_to_long{$short};
	my $n = @$long;
	if ($n != 1) {
		print "\n";
		for my $i (1..$n) {
			printf "%3d. %s\n", $i, $long->[$i-1];
		}
		print "keep which? ";
		my $line = <STDIN>;
		chomp $line;
		my @which = split /[, ]+/, $line;
		my %which = map {$_,1} @which;
		my @keep;
		for my $i (1..$n) {
			my $f = $long->[$i-1];
			if ($which{$i}) {
				push @keep, $f;
			} else {
				Rename $f, "$remove_dir/$f";
			}
		}
		$long = \@keep;
		$n = @keep;
	}
	if ($n == 1) {
		my $from = "$scripts_dir/$long->[0]";
		my $to = "$links_dir/$short";
		Symlink $from, $to;
	} else {
		print "there are still multiple files for: $short\n";
	}
}
