diff options
| -rw-r--r-- | lib/dbshell/client/postgres.rb | 4 | ||||
| -rw-r--r-- | lib/dbshell/exec_alias.rb | 11 | ||||
| -rw-r--r-- | spec/dbshell/exec_alias_spec.rb | 25 | 
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 | 
