prick 0.17.0 → 0.18.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/lib/prick/builder.rb +10 -7
- data/lib/prick/command.rb +12 -3
- data/lib/prick/version.rb +1 -1
- metadata +2 -2
    
        checksums.yaml
    CHANGED
    
    | @@ -1,7 +1,7 @@ | |
| 1 1 | 
             
            ---
         | 
| 2 2 | 
             
            SHA256:
         | 
| 3 | 
            -
              metadata.gz:  | 
| 4 | 
            -
              data.tar.gz:  | 
| 3 | 
            +
              metadata.gz: 22580f7a2f37e4ad59c6354e3b6ac1d7bb6f5eb7fe8f44eddb941ba715f8fa39
         | 
| 4 | 
            +
              data.tar.gz: b0b5bf43389a0e35c6a739b92b4e50b043cb75ab1e215aa109a9a68e4f17e1e3
         | 
| 5 5 | 
             
            SHA512:
         | 
| 6 | 
            -
              metadata.gz:  | 
| 7 | 
            -
              data.tar.gz:  | 
| 6 | 
            +
              metadata.gz: 7768a47145ae07f6ae99e808ad513107ccd98327fc009311cd0bfde1f1dbd3a52a3d9f5061c6bb3918b12da6850b0cf4e5242efade679d950a603047c8dd9cfc
         | 
| 7 | 
            +
              data.tar.gz: e2709800fe62d599bba1ea64960b4a09e8a97a87da3d60731e8293f4957c9ac35147122dea16220481b9c49b17d3cf31377663f1328b99608c0fc3cc84ca4ad9
         | 
    
        data/lib/prick/builder.rb
    CHANGED
    
    | @@ -60,6 +60,7 @@ module Prick | |
| 60 60 |  | 
| 61 61 | 
             
              protected
         | 
| 62 62 | 
             
                def do_dir(path, &block)
         | 
| 63 | 
            +
            #     puts "do_dir(#{path.inspect})"
         | 
| 63 64 | 
             
                  dir, file = File.split(path)
         | 
| 64 65 | 
             
                  Dir.chdir(dir) { yield(file) }
         | 
| 65 66 | 
             
                end
         | 
| @@ -82,10 +83,11 @@ module Prick | |
| 82 83 | 
             
                  true
         | 
| 83 84 | 
             
                end
         | 
| 84 85 |  | 
| 85 | 
            -
                def do_exe(path, schema: nil)
         | 
| 86 | 
            -
            #     puts "do_exe(#{path})"
         | 
| 86 | 
            +
                def do_exe(path, args = [], schema: nil)
         | 
| 87 | 
            +
            #     puts "do_exe(#{path.inspect}, #{args.inspect})"
         | 
| 87 88 | 
             
                  do_dir(path) { |file| 
         | 
| 88 | 
            -
                     | 
| 89 | 
            +
                    cmd = (["./#{file}"] + args).join(" ")
         | 
| 90 | 
            +
                    lines = Command.command cmd, stdin: [database.name, database.user]
         | 
| 89 91 | 
             
                    if @execute
         | 
| 90 92 | 
             
                      begin
         | 
| 91 93 | 
             
                        Rdbms.exec_sql(database.name, lines.join("\n"), user: database.user, schema: schema)
         | 
| @@ -110,8 +112,9 @@ module Prick | |
| 110 112 |  | 
| 111 113 | 
             
                # A subject can be both an abstract subject or a concrete file (*.yml, *.sql)
         | 
| 112 114 | 
             
                def build_subject(subject)
         | 
| 113 | 
            -
                   | 
| 114 | 
            -
             | 
| 115 | 
            +
                  cmd, *args = subject.split(/\s+/)
         | 
| 116 | 
            +
                  if File.file?(cmd) && File.executable?(cmd)
         | 
| 117 | 
            +
                    do_exe(cmd, args)
         | 
| 115 118 | 
             
                  elsif File.file?(subject) && subject.end_with?(".yml")
         | 
| 116 119 | 
             
                    do_yml(subject)
         | 
| 117 120 | 
             
                  elsif File.file?(subject) && subject.end_with?(".sql")
         | 
| @@ -193,9 +196,9 @@ module Prick | |
| 193 196 | 
             
                  super(path, schema: schema)
         | 
| 194 197 | 
             
                end
         | 
| 195 198 |  | 
| 196 | 
            -
                def do_exe(path)
         | 
| 199 | 
            +
                def do_exe(path, args = [])
         | 
| 197 200 | 
             
                  schema = Dir.getwd.sub(/^.*schema\/([^\/]+)(?:\/.*)?$/, '\1')
         | 
| 198 | 
            -
                  super(path, schema: schema)
         | 
| 201 | 
            +
                  super(path, args, schema: schema)
         | 
| 199 202 | 
             
                end
         | 
| 200 203 | 
             
              end
         | 
| 201 204 | 
             
            end
         | 
    
        data/lib/prick/command.rb
    CHANGED
    
    | @@ -15,14 +15,17 @@ module Command | |
| 15 15 | 
             
              end
         | 
| 16 16 |  | 
| 17 17 | 
             
              # Execute the shell command 'cmd' and return standard output as an array of
         | 
| 18 | 
            -
              # strings | 
| 18 | 
            +
              # strings.  while stderr is passed through unless stderr: is false. If stderr:
         | 
| 19 19 | 
             
              # is true, it returns a tuple of [stdout, stderr] instead. The shell command
         | 
| 20 20 | 
             
              # is executed with the `errexit` and `pipefail` bash options
         | 
| 21 | 
            +
              #
         | 
| 22 | 
            +
              # The :stdin option is a line or an array of lines that'll be fed to the
         | 
| 23 | 
            +
              # standard input of the command. Default is nil
         | 
| 21 24 | 
             
              # 
         | 
| 22 25 | 
             
              # It raises a Command::Error exception if the command fails unless :fail is
         | 
| 23 26 | 
             
              # true. The exit status of the last command is stored in ::status
         | 
| 24 27 | 
             
              #
         | 
| 25 | 
            -
              def command(cmd, stderr: false, fail: true)
         | 
| 28 | 
            +
              def command(cmd, stdin: nil, stderr: false, fail: true)
         | 
| 26 29 | 
             
                cmd = "set -o errexit\nset -o pipefail\n#{cmd}"
         | 
| 27 30 |  | 
| 28 31 | 
             
                pw = IO::pipe   # pipe[0] for read, pipe[1] for write
         | 
| @@ -52,12 +55,18 @@ module Command | |
| 52 55 | 
             
                pr[1].close
         | 
| 53 56 | 
             
                pe[1].close
         | 
| 54 57 |  | 
| 58 | 
            +
                if stdin
         | 
| 59 | 
            +
                  pw[1].puts(stdin)
         | 
| 60 | 
            +
                  pw[1].flush
         | 
| 61 | 
            +
                  pw[1].close
         | 
| 62 | 
            +
                end
         | 
| 63 | 
            +
             | 
| 55 64 | 
             
                @status = Process.waitpid2(pid)[1].exitstatus
         | 
| 56 65 |  | 
| 57 66 | 
             
                out = pr[0].readlines.collect { |line| line.chop }
         | 
| 58 67 | 
             
                err = pe[0].readlines.collect { |line| line.chop }.grep_v(/^NOTICE:/)
         | 
| 59 68 |  | 
| 60 | 
            -
                pw[1].close
         | 
| 69 | 
            +
                pw[1].close if !stdin
         | 
| 61 70 | 
             
                pr[0].close
         | 
| 62 71 | 
             
                pe[0].close
         | 
| 63 72 |  | 
    
        data/lib/prick/version.rb
    CHANGED
    
    
    
        metadata
    CHANGED
    
    | @@ -1,14 +1,14 @@ | |
| 1 1 | 
             
            --- !ruby/object:Gem::Specification
         | 
| 2 2 | 
             
            name: prick
         | 
| 3 3 | 
             
            version: !ruby/object:Gem::Version
         | 
| 4 | 
            -
              version: 0. | 
| 4 | 
            +
              version: 0.18.0
         | 
| 5 5 | 
             
            platform: ruby
         | 
| 6 6 | 
             
            authors:
         | 
| 7 7 | 
             
            - Claus Rasmussen
         | 
| 8 8 | 
             
            autorequire: 
         | 
| 9 9 | 
             
            bindir: exe
         | 
| 10 10 | 
             
            cert_chain: []
         | 
| 11 | 
            -
            date: 2021-07- | 
| 11 | 
            +
            date: 2021-07-21 00:00:00.000000000 Z
         | 
| 12 12 | 
             
            dependencies:
         | 
| 13 13 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 14 14 | 
             
              name: shellopts
         |