mig env clone
authorJason Etheridge <jason@esilibrary.com>
Wed, 20 Jun 2018 13:43:08 +0000 (09:43 -0400)
committerJason Etheridge <jason@esilibrary.com>
Wed, 20 Jun 2018 13:43:08 +0000 (09:43 -0400)
mig-bin/mig-env

index bcfe148..a9f8b35 100755 (executable)
@@ -13,6 +13,8 @@ B<mig-env> <create|use> <migration_schema>
 
 B<mig-env> <show> [migration_schema]
 
+B<mig-env> <clone> [orig_migration_schema] [new_migration_schema]
+
 B<mig-env> <list>
 
 B<mig-env> <help>
@@ -81,6 +83,12 @@ This command will show the contents of the corresponding ~/.mig/<schema>.env
 script, or, if no schema is specified, then it will list pertinent variables in
 the current environment if they exist.
 
+=item B<clone> [orig schema] [new schema]
+
+This command will create a "shallow" clone of the orig schema, in that it will
+share database credentials as well as git and data directories, but will have a
+separate schema name.
+
 =item B<list>
 
 This command will list migration schemas found in ~/.mig
@@ -123,6 +131,12 @@ switch($ARGV[0]) {
         pod2usage(-verbose => 1) if ! $ARGV[1];
         mig_env_create();
     }
+    case "clone" {
+        pod2usage(-verbose => 1) if ! $ARGV[2];
+        $migration_schema = $ARGV[2] || '';
+        $filename = "$HOME/.mig/$migration_schema.env";
+        mig_env_clone();
+    }
     case "use" {
         pod2usage(-verbose => 1) if ! $ARGV[1];
         if (-e $filename) {
@@ -243,3 +257,12 @@ sub mig_env_create {
     close FILE;
 }
 
+sub mig_env_clone {
+    my $orig_migration_schema = $ARGV[1] || '';
+    my $orig_filename = "$HOME/.mig/$orig_migration_schema.env";
+    `cp $orig_filename $filename`;
+    `sed -i 's/export PGOPTIONS=.*/export PGOPTIONS=-c search_path=$migration_schema,public,evergreen/' $filename`;
+    `sed -i 's/export MIGENVPROMPT=.*/export MIGENVPROMPT=$migration_schema/' $filename`;
+    `sed -i 's/export MIGSCHEMA=.*/export MIGSCHEMA=$migration_schema/' $filename`;
+}
+