aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--lib/dbshell/client/postgres.rb4
-rw-r--r--lib/dbshell/exec_alias.rb11
-rw-r--r--spec/dbshell/exec_alias_spec.rb25
3 files changed, 39 insertions, 1 deletions
diff --git a/lib/dbshell/client/postgres.rb b/lib/dbshell/client/postgres.rb
index 78b82d7..9979710 100644
--- a/lib/dbshell/client/postgres.rb
+++ b/lib/dbshell/client/postgres.rb
@@ -1,3 +1,5 @@
+require 'dbshell/exec_alias'
+
module DBShell
module Client
class Postgres
@@ -5,7 +7,7 @@ module DBShell
def self.runshell(db_info)
args = self.build_command(db_info)
- exec(*args)
+ DBShell::ExecAlias.exec(args)
end
def self.build_command(db_info)
diff --git a/lib/dbshell/exec_alias.rb b/lib/dbshell/exec_alias.rb
new file mode 100644
index 0000000..7bd86b7
--- /dev/null
+++ b/lib/dbshell/exec_alias.rb
@@ -0,0 +1,11 @@
+module DBShell
+ class ExecAlias
+ def self.exec(command_args)
+ Kernel.exec(*self.build_command(command_args))
+ end
+
+ def self.build_command(command_args)
+ [ENV['SHELL'], '--login', '-c', command_args.join(' ')]
+ end
+ end
+end
diff --git a/spec/dbshell/exec_alias_spec.rb b/spec/dbshell/exec_alias_spec.rb
new file mode 100644
index 0000000..1b8c425
--- /dev/null
+++ b/spec/dbshell/exec_alias_spec.rb
@@ -0,0 +1,25 @@
+require 'minitest/autorun'
+require 'dbshell/exec_alias'
+
+describe DBShell::ExecAlias do
+ describe ".build_command" do
+ it "prefixes the command with an interactive version of the current \
+ shell" do
+ DBShell::ExecAlias.build_command([
+ 'psql',
+ '-U',
+ 'derpyhooves',
+ '-h',
+ 'mailmarehost',
+ '-p',
+ '6027',
+ 'dbname'
+ ]).must_equal([
+ ENV['SHELL'],
+ '-i',
+ '-c',
+ 'psql -U derpyhooves -h mailmarehost -p 6027 dbname'
+ ])
+ end
+ end
+end