#!/usr/bin/perl -w ############################################################################### =pod =head1 NAME mig-remove - This will remove the specified files from the mig tracking table You'll need to invoke B prior to using commands like B =head1 SYNOPSIS B [file] [...] =cut ############################################################################### use strict; use Switch; use Env qw( HOME MYSQL_HOST MYSQL_TCP_PORT MYSQL_USER MYSQL_DATABASE MYSQL_PW MIGSCHEMA MIGBASEWORKDIR MIGBASEGITDIR MIGGITDIR MIGWORKDIR ); use Pod::Usage; use DBI; use Cwd 'abs_path'; use FindBin; my $mig_bin = "$FindBin::Bin/"; use lib "$FindBin::Bin/"; use KMig; pod2usage(-verbose => 2) if ! $ARGV[0] || $ARGV[0] eq '--help'; KMig::die_if_no_env_migschema(); KMig::die_if_mig_tracking_table_does_not_exist(); foreach my $arg (@ARGV) { my $file = abs_path($arg); if ($file =~ /^$MIGBASEWORKDIR/) { remove_this_file($file); } else { print "File falls outside of MIGWORKDIR ($MIGWORKDIR): $file\n"; } } exit 0; ############################################################################### sub remove_this_file { my $file = shift; my $tracked_file_id = KMig::check_for_tracked_file($file,{'allow_missing'=>1}); if ($tracked_file_id) { print "removing tracked file: $file\n"; my $dbh = KMig::db_connect(); my $rv = $dbh->do(" DELETE FROM m_tracked_file WHERE id = $tracked_file_id; ") || die "Error deleting from table m_tracked_file (id = $tracked_file_id): $!\n"; KMig::db_disconnect($dbh); } else { print "File not currently tracked: $file\n"; } }