proclib 0.1.3 → 0.1.4

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: e719af71fc8132c7b9228853ed9e401fd65ad74c
4
- data.tar.gz: 7697458fae370ed2c8565f1b16005dd790ad29dd
3
+ metadata.gz: 6aa637a50487fd0311e29608e48813b41a7a9081
4
+ data.tar.gz: 89259efc574e1ba539de23f1f3ee7114b393ae72
5
5
  SHA512:
6
- metadata.gz: 467b31bf7fec23b24b1df957603543deb26daa4925233cc8d6dbda5d095573bc57967d86812333d197533eb559c0061179f2be3d47fd7e428f24f90fa04a915d
7
- data.tar.gz: 4526676fe3afe7690f5af5d05c461468dd2d83b71ff6d5f77f5a97ea9030e8304d1c682222d703d65f87761d3b5dad28aa009b49a570f190a89494adec5f0c2d
6
+ metadata.gz: 57c244222c681b1201f9596882daa27ddf59cff9fc2771bdc2d4304e6f04d7713b170ead9e976036276ec5c92a733383eb64f9b028ff7a6258572ccc546792ec
7
+ data.tar.gz: 82a4ef26e49c2ef1782bb2b1b74204e7c441d367f77956e9c1c6ac4697384e1220e98dabe5ec039b9abf9d6cbfdf62df9ac88fb4ffbedc510a830a82c295cfe8
data/.ackrc ADDED
@@ -0,0 +1 @@
1
+ --ignore-dir=vendor
@@ -15,14 +15,19 @@ module Proclib
15
15
  log_to_console: false,
16
16
  capture_output: true,
17
17
  env: {},
18
- on_output: nil)
18
+ on_output: nil,
19
+ cwd: nil
20
+ )
19
21
 
20
22
  raise(ArgumentError, "env must be a Hash") unless env.kind_of?(Hash)
21
23
 
22
24
  runnable = if cmd.kind_of? String
23
- Process.new(cmd, tag: tag || cmd[0..20], env: env)
25
+ Process.new(cmd, tag: tag || cmd[0..20], env: env, run_dir: cwd)
24
26
  elsif cmd.kind_of?(Hash)
25
- processes = cmd.map {|(k,v)| Process.new(v, tag: k || v[0..20], env: env) }
27
+ processes = cmd.map do |(k,v)|
28
+ Process.new(v, tag: k || v[0..20], env: env, run_dir: cwd)
29
+ end
30
+
26
31
  ProcessGroup.new(processes)
27
32
  else
28
33
  raise ArgumentError, "Unexpected type for `cmd`: #{cmd.class}. \n"\
@@ -8,23 +8,33 @@ module Proclib
8
8
  class Process
9
9
  include EventEmitter::Producer
10
10
 
11
- attr_reader :cmdline, :tag, :env
11
+ attr_reader :cmdline, :tag, :env, :run_dir
12
12
 
13
13
  Error = Class.new(StandardError)
14
14
 
15
- def initialize(cmdline, tag:, env: {})
15
+ def initialize(cmdline, tag:, env: {}, run_dir: nil)
16
16
  @cmdline = cmdline
17
17
  @tag = tag
18
18
  @env = env.map {|k,v| [k.to_s, v.to_s]}.to_h
19
19
  @state = :ready
20
20
  @io_handlers = OpenStruct.new
21
21
  @pipes = OpenStruct.new
22
+ @run_dir = run_dir
22
23
  end
23
24
 
24
25
  def spawn
25
26
  raise(Error, "Already started process") unless @wait_thread.nil?
26
27
 
27
- pipes.stdin, pipes.stdout, pipes.stderr, @wait_thread = Open3.popen3(env, cmdline)
28
+ spawn = -> do
29
+ pipes.stdin, pipes.stdout, pipes.stderr, @wait_thread = Open3.popen3(env, cmdline)
30
+ end
31
+
32
+ if run_dir
33
+ Dir.chdir(run_dir) { spawn.call }
34
+ else
35
+ spawn.call
36
+ end
37
+
28
38
  @state = :running?
29
39
  start_output_emitters
30
40
  start_watch_thread
@@ -1,3 +1,3 @@
1
1
  module Proclib
2
- VERSION = "0.1.3"
2
+ VERSION = "0.1.4"
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: proclib
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.3
4
+ version: 0.1.4
5
5
  platform: ruby
6
6
  authors:
7
7
  - Jack Forrest
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2017-11-25 00:00:00.000000000 Z
11
+ date: 2017-12-02 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -75,6 +75,7 @@ executables: []
75
75
  extensions: []
76
76
  extra_rdoc_files: []
77
77
  files:
78
+ - ".ackrc"
78
79
  - ".gitignore"
79
80
  - ".rspec"
80
81
  - ".travis.yml"