let's not name these differently than the emig.d/ counterparts
[migration-tools.git] / kmig.d / bin / mig-init
diff --git a/kmig.d/bin/mig-init b/kmig.d/bin/mig-init
new file mode 100755 (executable)
index 0000000..8b207f8
--- /dev/null
@@ -0,0 +1,65 @@
+#!/usr/bin/perl -w
+###############################################################################
+=pod
+
+=head1 NAME
+
+mig-init - This will add or recreate tracking tables for the B<mig> toolset
+to the database specified by the current mig environment.
+
+In practice, you should invoke 'mig env use schema_name' prior to calling
+B<init>
+
+=head1 SYNOPSIS
+
+B<mig-init>
+
+B<mig-init> <help>
+
+=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 FindBin;
+my $mig_bin = "$FindBin::Bin/";
+my $mig_sql = $mig_bin . "../sql/init/";
+use lib "$FindBin::Bin/";
+use KMig;
+
+pod2usage(-verbose => 2) if $ARGV[0];
+
+KMig::die_if_no_env_migschema();
+
+if (! KMig::check_for_db_migschema()) {
+    die "could not find the schema";
+}
+
+KMig::die_if_mig_tracking_table_exists();
+KMig::die_if_mig_column_tracking_table_exists();
+loop_through_mig_sql_templates();
+
+exit 0;
+
+###############################################################################
+
+sub loop_through_mig_sql_templates {
+    print "Looping through mig.d/sql/init/ templates\n";
+    opendir my $dir, $mig_sql or die "Cannot open directory: $!";
+    my @files = sort readdir $dir;
+    closedir $dir;
+    foreach my $file (@files) {
+        if ($file =~ /.sql$/) {
+            print "executing $file:\n";
+            system( $mig_bin . "mig-sql", ('-e',"source $mig_sql$file") )
+        }
+    }
+}
+