#!/usr/bin/perl
#
# auto-record ARB-session
# (for debugging purposes; user could as well record ARB crashes)
#
# call via:
# arb_ntree --execute _dolog database.arb
#
# rerun via
# arb_ntree --execute _logged database.arb


use strict;
use warnings;

use lib "$ENV{'ARBHOME'}/lib/";
use ARB;

my $logged_amc = '_logged.amc';

my $gb_main = ARB::open(":","r");
if (not $gb_main) {
  my $error = ARB::await_error();
  die "$error";
}

my $macrodir = ARB::getenvARBMACROHOME();
if (defined $macrodir) {
  if (not -d $macrodir) { die "No such directory '$macrodir'"; }
  my $last_logged = $macrodir.'/'.$logged_amc;
  if (-f $last_logged) {
    my $backupDir = $macrodir.'/_backup';
    if (not -d $backupDir) {
      mkdir($backupDir) || die "Failed to create directory '$backupDir' (Reason: $!)";
    }
    my $modtime = (stat $last_logged)[9];
    my $backup = $backupDir.'/_logged_'.$modtime.'.amc';
    print "backup '$last_logged' -> '$backup'\n";
    my $cmd = "cp -p $last_logged $backup";
    system($cmd)==0 || die "Failed to execute '$cmd'";
  }

  BIO::remote_action($gb_main,"ARB_NT","macros");
  BIO::remote_awar($gb_main,"ARB_NT","tmp/macro/file_name",$logged_amc);
  BIO::remote_action($gb_main,"ARB_NT","MACROS/macro_record"); # hack :)
  BIO::remote_action($gb_main,"ARB_NT","MACROS/CLOSE");
}
ARB::close($gb_main);
