Name

backup-file — backup Interchange file

ATTRIBUTES

Attribute Pos. Req. Default Description
file Yes Yes File to back-up
interpolate     0 interpolate output?
hide     0 Hide the tag return value?

DESCRIPTION

The tag allows backing up of Interchange files. Files are simply copied to the backup/ subdirectory of the catalog root directory (CATROOT).

File paths are preserved during copy; a target catalog file of say, pages/index.html would be saved to backup/pages/index.html.

You can copy filenames specified with absolute paths, and in fact, you can backup any file that the Interchange process can read.

BEHAVIOR

This tag does not appear to be affected by, or affect, the rest of Interchange.

EXAMPLES

Example: Backing-up catalog index page

[either]
  [tmp name=backup set="[backup-file pages/index.html]" hide=1]
[or]
  [scratch ui_error]
[/either]

Example: Backing-up system password file

[either]
  [tmp name=backup set="[backup-file /etc/passwd]" hide=1]
[or]
  [scratch ui_error]
[/either]

NOTES

The backup directory and the full pathname are automatically created if they don't already exist.

AVAILABILITY

backup-file is available in Interchange versions:

4.6.0-5.9.0 (git-head)

SOURCE

Interchange 5.9.0:

Source: code/UI_Tag/backup_file.coretag
Lines: 47


# Copyright 2002-2007 Interchange Development Group and others
# 
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 2 of the License, or
# (at your option) any later version.  See the LICENSE file for details.
# 
# $Id: backup_file.coretag,v 1.5 2007-03-30 23:40:54 pajamian Exp $

UserTag backup-file Order     file
UserTag backup-file AddAttr
UserTag backup-file Version   $Revision: 1.5 $
UserTag backup-file Routine   <<EOR
require File::Copy;
require File::Path;
require File::Basename;
sub {
my ($file, $opt) = @_;
my $bu_file = "backup/$file";
$bu_file =~ s://+:/:g ;
$bu_file =~ m:(.*)/: ;
my $bu_dir = $1;
eval {
  die ::errmsg("Cannot figure out backup directory from %s", $bu_file)
    if ! $bu_dir;
  if (! -d $bu_dir) {
    File::Path::mkpath($bu_dir)
      or die ::errmsg("Cannot make backup directory %s: %s", $bu_dir, $!);
  }
  if (-f $bu_file) {
    my $fn = $bu_file;
    $fn =~ s:.*/::;
    UI::Primitive::rotate($fn, { Directory => $bu_dir } )
      or die ::errmsg("Cannot make backup of %s: %s", $bu_file, $!);
  }
#::logDebug("ready to copy $file to $bu_file");
  File::Copy::copy($file, $bu_file)
    or die ::errmsg("Copy %s to %s: %s", $file, $bu_file, $!);
};
if ($@) {
  $::Scratch->{ui_error} = $@;
  ::logError($::Scratch->{ui_error});
  return undef;
}
return 1;
}
EOR

AUTHORS

Interchange Development Group

SEE ALSO

cp(7ic)

DocBook! Interchange!