]> git.sesse.net Git - skvidarsync/blobdiff - bin/sync.pl
Correct cell names for duplicate detection.
[skvidarsync] / bin / sync.pl
index 10fcbf70995c75de97a85e3f0b22d6925de87a24..0237fd66e7edf73ebea482ae007546324c7ed464 100644 (file)
@@ -14,6 +14,7 @@ use utf8;
 
 # TODO:
 # - detect moves between groups
+# - make the sheet message more in-your-face (ephemeral message)
 
 require '../include/config.pm';
 
@@ -115,7 +116,7 @@ sub matches_name {
 
 sub format_cell_names_for_seen {
        my $seen = shift;
-       my @cells = map { chr(ord('A') + $_->[2]) . $_->[1] } @$seen;
+       my @cells = map { chr(ord('A') + $_->[2]) . ($_->[1] + 1) } @$seen;
        return join(', ', @cells);
 }
 
@@ -279,6 +280,8 @@ sub find_diff {
                if (!exists($seen_names->{lc $real_name})) {
                        # TODO: This can somehow come if we try to add someone who's not in the sheet, too?
                        skv_log("Ønsket å fjerne at $real_name skulle på trening, men de var ikke i regnearket lenger.");
+               } elsif (scalar @{$seen_names->{lc $real_name}} > 1) {
+                       # Don't touch them.
                } else {
                        skv_log("Fjerner at $real_name skal på trening.");
                        push @diffs, [
@@ -352,7 +355,7 @@ sub run {
 
        my ($tab_name, $tab_id) = get_spreadsheet_with_title($ua, $token, $wanted_sheet_title);
        if (!defined($tab_name)) {
-               skv_log("Fant ikke noen fane med “$wanted_sheet_title” i navnet; kan ikke synkronisere.\n");
+               skv_log("Fant ikke noen fane med «$wanted_sheet_title» i navnet; kan ikke synkronisere.\n");
                sheet_batch_update($ua, $token, [ serialize_skv_log_to_sheet() ]);
                die;
        }
@@ -548,9 +551,13 @@ sub run {
                for my $diff (@diffs) {
                        my $real_name = $diff->[0];
 
-                       # See if we can find them in the spreadsheet.
                        my $seen = $seen_names{lc $real_name};
-                       die if (!defined($seen) || scalar @$seen > 1);
+
+                       # We've already complained about these earlier, so just skip them silently.
+                       next if (scalar @$seen > 1);
+
+                       # See if we can find them in the spreadsheet.
+                       die "Could not find $real_name" if (!defined($seen));
                        my $rowno = $seen->[0][1];
                        my $colno = $seen->[0][2];
                        push @yellow_updates, {