From d83ac58de956453fcb161c2860f8f8cc080a5848 Mon Sep 17 00:00:00 2001 From: Norbert Preining Date: Wed, 10 May 2017 04:43:53 +0000 Subject: factor out backup setup code from action_update git-svn-id: svn://tug.org/texlive/trunk@44274 c570f23f-e606-0410-a88d-b1316a301751 --- Master/texmf-dist/scripts/texlive/tlmgr.pl | 92 ++++++++++++++++-------------- 1 file changed, 49 insertions(+), 43 deletions(-) (limited to 'Master/texmf-dist/scripts') diff --git a/Master/texmf-dist/scripts/texlive/tlmgr.pl b/Master/texmf-dist/scripts/texlive/tlmgr.pl index 181a63e5d02..1ac5e16ae8a 100755 --- a/Master/texmf-dist/scripts/texlive/tlmgr.pl +++ b/Master/texmf-dist/scripts/texlive/tlmgr.pl @@ -1783,6 +1783,53 @@ sub restore_one_package { return ($F_OK); } +sub setup_backup_directory { + my $ret = $F_OK; + my $autobackup = 0; + # check for the tlpdb option autobackup, and if present and true (!= 0) + # assume we are doing backups + if (!$opts{"backup"}) { + $autobackup = $localtlpdb->option("autobackup"); + if ($autobackup) { + # check the format, we currently allow only natural numbers, and -1 + if ($autobackup eq "-1") { + debug ("Automatic backups activated, keeping all backups.\n"); + $opts{"backup"} = 1; + } elsif ($autobackup eq "0") { + debug ("Automatic backups disabled.\n"); + } elsif ($autobackup =~ m/^[0-9]+$/) { + debug ("Automatic backups activated, keeping $autobackup backups.\n"); + $opts{"backup"} = 1; + } else { + tlwarn ("$prg: Option autobackup can only be an integer >= -1.\n"); + tlwarn ("$prg: Disabling auto backups.\n"); + $localtlpdb->option("autobackup", 0); + $autobackup = 0; + $ret |= $F_WARNING; + } + } + } + + # cmd line --backup, we check for --backupdir, and if that is not given + # we try to get the default from the tlpdb. If that doesn't work, exit. + if ($opts{"backup"}) { + my ($a, $b) = check_backupdir_selection(); + if ($a & $F_ERROR) { + # in all these cases we want to terminate in the non-gui mode + tlwarn($b); + return ($F_ERROR, $autobackup); + } + } + + # finally, if we have --backupdir, but no --backup, just enable it + $opts{"backup"} = 1 if $opts{"backupdir"}; + + info("$prg: saving backups to $opts{'backupdir'}\n") + if $opts{"backup"} && !$::machinereadable; + + return ($ret, $autobackup); +} + sub check_backupdir_selection { my $warntext = ""; if ($opts{"backupdir"}) { @@ -2466,8 +2513,6 @@ sub upd_info { } sub action_update { - my $ret = $F_OK; - init_local_db(1); $opts{"no-depends"} = 1 if $opts{"no-depends-at-all"}; @@ -2512,47 +2557,8 @@ sub action_update { } } - my $autobackup = 0; - # check for the tlpdb option autobackup, and if present and true (!= 0) - # assume we are doing backups - if (!$opts{"backup"}) { - $autobackup = $localtlpdb->option("autobackup"); - if ($autobackup) { - # check the format, we currently allow only natural numbers, and -1 - if ($autobackup eq "-1") { - debug ("Automatic backups activated, keeping all backups.\n"); - $opts{"backup"} = 1; - } elsif ($autobackup eq "0") { - debug ("Automatic backups disabled.\n"); - } elsif ($autobackup =~ m/^[0-9]+$/) { - debug ("Automatic backups activated, keeping $autobackup backups.\n"); - $opts{"backup"} = 1; - } else { - tlwarn ("$prg: Option autobackup can only be an integer >= -1.\n"); - tlwarn ("$prg: Disabling auto backups.\n"); - $localtlpdb->option("autobackup", 0); - $autobackup = 0; - $ret |= $F_WARNING; - } - } - } - - # cmd line --backup, we check for --backupdir, and if that is not given - # we try to get the default from the tlpdb. If that doesn't work, exit. - if ($opts{"backup"}) { - my ($a, $b) = check_backupdir_selection(); - if ($a & $F_ERROR) { - # in all these cases we want to terminate in the non-gui mode - tlwarn($b); - return ($F_ERROR); - } - } - - # finally, if we have --backupdir, but no --backup, just enable it - $opts{"backup"} = 1 if $opts{"backupdir"}; - - info("$prg: saving backups to $opts{'backupdir'}\n") - if $opts{"backup"} && !$::machinereadable; + my ($ret, $autobackup) = setup_backup_directory(); + return ($ret) if ($ret != $F_OK); # these two variables are used throughout this function my $root = $localtlpdb->root; -- cgit v1.2.3