#!/opt/bin/perl

# Usage: cfmap-set var=value map...
# example: cfmap-set music=@tavern **/inn.map
# modify the given map header in all maps

use common::sense;

use Deliantra;
use Deliantra::Map;
use Tie::Cache;
use Errno;

(shift) =~ /^(\S+?)=(.*)$/
   or die "Usage: $0 var=value map...";

my ($var, $value) = ($1, $2);

$|=1;

for my $path (@ARGV) {
   print "$path... ";

   my $map = new_from_file Deliantra::Map $path
      or die "$path: file load error\n";

   if ($map->{info}{$var} eq $value) {
      print "unchanged\n";
   } else {
      if (length $value) {
         $map->{info}{$var} = $value;
      } else {
         delete $map->{info}{$var};
      }
      $map->write_file ($path);
      print "updated\n";
   }

}

