babl 0.2.1 → 0.3.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (4) hide show
  1. checksums.yaml +4 -4
  2. data/babl.gemspec +1 -1
  3. data/lib/babl.rb +18 -2
  4. metadata +1 -1
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: ef8873db4e771ecb8a0ab02a25d20359ed99899b
4
- data.tar.gz: a2f0e6476980336b234e2fc149c399fc548954ea
3
+ metadata.gz: dad0780e3615faf400bb040e77a053f95d7370ea
4
+ data.tar.gz: 332493673f1010d1958eea612c533b84bf0ec406
5
5
  SHA512:
6
- metadata.gz: e9d5fa22f98ad093032c23acca16d8cee3f9cbec7a1b974bf9afcb1fe228cacdc7b54727eda3d1e42e956aad6cdb51b4855a3aa08beed6ffca82990202fe1d16
7
- data.tar.gz: a188c8b6df32991672050e91c7d5a77c0ae0ccca6601a2668536c82c7b221b5edde337afb3f1f8de47406d40f49791a68110578879405a63ed98348dbcd91c8c
6
+ metadata.gz: 5432db3afa5357ff9cbc8bc8d22aeb0333e998c92910ac926e0ce283c5f08e982bcaa3213ac30b80c63b7d0434483c9b6fde949c3948ec57392d3d777b9b564b
7
+ data.tar.gz: 3cd23dcbd28df573c1e6c10c515d8897f4bb0962b740584682211808581b1f7e5c1aabfffa0c8428be599a284909e43d4ab7a50b02499ae87f31938aa71fd20b
data/babl.gemspec CHANGED
@@ -5,7 +5,7 @@ require 'babl'
5
5
 
6
6
  Gem::Specification.new do |spec|
7
7
  spec.name = "babl"
8
- spec.version = "0.2.1"
8
+ spec.version = "0.3.0"
9
9
  spec.authors = ["Lars Kluge"]
10
10
  spec.email = ["l@larskluge.com"]
11
11
 
data/lib/babl.rb CHANGED
@@ -3,6 +3,16 @@ require 'base64'
3
3
 
4
4
 
5
5
  module Babl
6
+ class ModuleError < StandardError
7
+ attr_reader :stdout, :stderr, :exitcode
8
+
9
+ def initialize opts = {}
10
+ @stdout = opts[:stdout]
11
+ @stderr = opts[:stderr]
12
+ @exitcode = opts[:exitcode]
13
+ end
14
+ end
15
+
6
16
  def self.bin_path
7
17
  system = `which babl-rpc`.strip
8
18
  if system.empty?
@@ -24,7 +34,7 @@ module Babl
24
34
  @client ||= Quartz::Client.new(bin_path: bin_path)
25
35
  end
26
36
 
27
- def self.module name, opts = {}
37
+ def self.module! name, opts = {}
28
38
  params = {'Name' => name}
29
39
  if opts[:in]
30
40
  params['Stdin'] = Base64.encode64(opts[:in]).strip
@@ -33,6 +43,12 @@ module Babl
33
43
  params['Env'] = opts[:env].inject({}) { |h, (k,v)| h[k.to_s] = v; h }
34
44
  end
35
45
  res = client[:babl].call('Module', params)
36
- Base64.decode64(res["Stdout"])
46
+ stdout = Base64.decode64(res["Stdout"]).strip
47
+ exitcode = res['Exitcode']
48
+ if exitcode != 0
49
+ stderr = Base64.decode64(res["Stderr"]).strip
50
+ raise ModuleError.new(stdout: stdout, stderr: stderr, exitcode: exitcode), "Module execution failed with exitcode #{exitcode}"
51
+ end
52
+ stdout
37
53
  end
38
54
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: babl
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.1
4
+ version: 0.3.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Lars Kluge