From 417718a7bf0eaa05337dba954c3b40c2ac1ef369 Mon Sep 17 00:00:00 2001 From: Jason Etheridge Date: Wed, 20 Jun 2018 09:43:08 -0400 Subject: [PATCH] mig env clone --- mig-bin/mig-env | 23 +++++++++++++++++++++++ 1 files changed, 23 insertions(+), 0 deletions(-) diff --git a/mig-bin/mig-env b/mig-bin/mig-env index bcfe148..a9f8b35 100755 --- a/mig-bin/mig-env +++ b/mig-bin/mig-env @@ -13,6 +13,8 @@ B B [migration_schema] +B [orig_migration_schema] [new_migration_schema] + B B @@ -81,6 +83,12 @@ This command will show the contents of the corresponding ~/.mig/.env script, or, if no schema is specified, then it will list pertinent variables in the current environment if they exist. +=item B [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 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`; +} + -- 1.7.2.5