adding some basic copy tag and serial tables to the mig init function
[migration-tools.git] / mig-bin / mig-status
1 #!/usr/bin/perl -w
2 ###############################################################################
3 =pod
4
5 =head1 NAME
6
7 mig-status -  This will show tracking information for either the specified files
8 or all tracked files if no argument is given.
9
10 You'll need to invoke B<mig-init> prior to using commands like B<mig-status>
11
12 =head1 SYNOPSIS
13
14 B<mig-status> [file] [...]
15
16 =cut
17
18 ###############################################################################
19
20 use strict;
21 use Switch;
22 use Env qw(
23     HOME PGHOST PGPORT PGUSER PGDATABASE MIGSCHEMA
24     MIGBASEWORKDIR MIGBASEGITDIR MIGGITDIR MIGWORKDIR
25 );
26 use Pod::Usage;
27 use DBI;
28 use Cwd 'abs_path';
29 use FindBin;
30 my $mig_bin = "$FindBin::Bin/";
31 use lib "$FindBin::Bin/";
32 use Mig;
33
34 pod2usage(-verbose => 2) if scalar(@ARGV) > 0 && $ARGV[0] eq '--help';
35
36 Mig::die_if_no_env_migschema();
37 Mig::die_if_mig_tracking_table_does_not_exist();
38
39 my @files = @ARGV;
40 if (scalar(@files) == 0) {
41     @files = ();
42     my $dbh = Mig::db_connect();
43     my $sth = $dbh->prepare("
44         SELECT base_filename
45         FROM $MIGSCHEMA.tracked_file
46         ORDER BY 1;"
47     );
48     my $rv = $sth->execute()
49         || die "Error retrieving data from table (tracked_file): $!";
50     my $rows = $sth->fetchall_arrayref;
51     for my $row ( @$rows ) {
52         push @files, $row->[0]
53     }
54     $sth->finish;
55     Mig::db_disconnect($dbh);
56 }
57
58 foreach my $arg (sort @files) {
59     my $file = abs_path($arg);
60     my $data = Mig::status_this_file($file);
61     print "=-=-=\n";
62     foreach my $key (
63          'base_filename'
64         ,'has_headers'
65         ,'headers_file'
66         ,'utf8_filename'
67         ,'clean_filename'
68         ,'parent_table'
69         ,'stage_sql_filename'
70         ,'staged_table'
71         ,'map_sql_filename'
72         ,'prod_sql_filename'
73     ) {
74         printf "%-20s:\t", $key;
75         print $data->{$key} ? $data->{$key} : "";
76         if ($key =~ /filename$/ && $data->{$key} && ! -e $data->{$key}) {
77             print "  (FILE MISSING)";
78         }
79         print "\n";
80     }
81 }
82
83 exit 0;
84
85 ###############################################################################
86
87