pid-watcher 0.0.1 → 0.0.2
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/README.md +17 -5
- data/bin/pid-watcher +5 -1
- data/lib/pid_watcher.rb +18 -7
- data/screenshot.png +0 -0
- metadata +13 -14
- data/lib/pid_watcher/version.rb +0 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 587fbb3588f3b811ebd155c86883dba3f9acfd2b
|
4
|
+
data.tar.gz: 5a0fa11317f7a1ad94fd90a0b6a45197efd08e1a
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: db8cd63fb4420751531688eb3dda3baf3ad3e1833f7580fa95ab7dc6a9068d9fdb21351a65051e5690dba8c1e69716d005bc3418d76cfa39b53d2c3fd6e42048
|
7
|
+
data.tar.gz: 5c9259be5b41437bb7d5a4c7d0217411b4455cf3ded07550eba024adc99acc7d70eba1053aa7e564606b0214b4fc040447f965ac8b4409e56fd502eae3618d74
|
data/README.md
CHANGED
@@ -1,13 +1,25 @@
|
|
1
|
-
# Pid
|
1
|
+
# Pid Watcher
|
2
2
|
|
3
3
|
This program will allow you to observe the process, and when the process is complete, you will be notified.
|
4
4
|
|
5
5
|
## Installation
|
6
6
|
gem install pid-watcher
|
7
7
|
|
8
|
+
## Supported platform
|
9
|
+
Only Mac OS version >= 10.8
|
10
|
+
|
8
11
|
## Usage
|
12
|
+
$ pid-watcher -h
|
13
|
+
Usage: pid-watcher PID [options]
|
14
|
+
-m, --message MESSAGE Message for Notification Center (default: Process %{pid} finished)
|
15
|
+
-t, --timeout TIMEOUT Timeout in seconds for process (default: 600)
|
16
|
+
-v Show version
|
17
|
+
|
18
|
+
## Example
|
19
|
+
$ cd /rails/app/ && bundle
|
20
|
+
$ ps ax | grep bundle
|
21
|
+
58537 s002 R+ 0:01.31 /Users/10525/.rbenv/versions/2.0.0-p353/bin/ruby /Users/10525/.rbenv/versions/2.0.0-p353/bin/bundle
|
22
|
+
$ pid-watcher 58537
|
23
|
+
On completion
|
9
24
|
|
10
|
-
|
11
|
-
-m, --message MESSAGE Message for Notification Center (default: Process %{pid} finished)
|
12
|
-
-t, --timeout TIMEOUT Timeout in seconds for process (default: 600)
|
13
|
-
-v Show version
|
25
|
+

|
data/bin/pid-watcher
CHANGED
@@ -19,6 +19,10 @@ option_parser = OptionParser.new do |opts|
|
|
19
19
|
options[:timeout] = v
|
20
20
|
end
|
21
21
|
|
22
|
+
opts.on("-c", "--command COMMAND", String, "Run something command after the completion ") do |v|
|
23
|
+
options[:command] = v
|
24
|
+
end
|
25
|
+
|
22
26
|
opts.on_tail("-v", "Show version") do
|
23
27
|
puts PidWatcher::VERSION
|
24
28
|
exit
|
@@ -33,5 +37,5 @@ unless ARGV.first.to_s.match(/^\d+$/)
|
|
33
37
|
end
|
34
38
|
|
35
39
|
pid = ARGV.first.to_i
|
36
|
-
pid_watcher = PidWatcher.new(pid, options
|
40
|
+
pid_watcher = PidWatcher.new(pid, options)
|
37
41
|
pid_watcher.watch
|
data/lib/pid_watcher.rb
CHANGED
@@ -2,25 +2,27 @@ require 'terminal-notifier'
|
|
2
2
|
require 'timeout'
|
3
3
|
|
4
4
|
class PidWatcher
|
5
|
-
VERSION = "0.0.
|
5
|
+
VERSION = "0.0.2"
|
6
6
|
DEFAULT_TIMEOUT = 10 * 60
|
7
7
|
DEFAULT_MESSAGE = "Process %{pid} finished"
|
8
8
|
TIMEOUT_MESSAGE = "Timeout for process %{pid}"
|
9
9
|
TITLE = 'Pid Watcher'
|
10
10
|
|
11
|
-
def initialize(pid,
|
11
|
+
def initialize(pid, options)
|
12
12
|
@pid = pid
|
13
|
-
@message = message || DEFAULT_MESSAGE
|
14
|
-
@timeout = timeout || DEFAULT_TIMEOUT
|
13
|
+
@message = options[:message] || DEFAULT_MESSAGE
|
14
|
+
@timeout = options[:timeout] || DEFAULT_TIMEOUT
|
15
|
+
@command = options[:command]
|
15
16
|
end
|
16
17
|
|
17
18
|
def watch
|
18
|
-
Process.daemon
|
19
|
+
Process.daemon
|
19
20
|
|
20
21
|
Timeout::timeout(timeout) do
|
21
22
|
while pid_exists?
|
22
23
|
sleep(1)
|
23
24
|
end
|
25
|
+
run_command unless command.nil?
|
24
26
|
finish_notify
|
25
27
|
end
|
26
28
|
rescue Timeout::Error
|
@@ -29,14 +31,23 @@ class PidWatcher
|
|
29
31
|
|
30
32
|
private
|
31
33
|
|
34
|
+
def run_command
|
35
|
+
Process.spawn(command)
|
36
|
+
rescue
|
37
|
+
true
|
38
|
+
end
|
39
|
+
|
32
40
|
def pid_exists?
|
33
41
|
status = Process.kill(0, pid) rescue false
|
34
42
|
!!status
|
35
43
|
end
|
36
44
|
|
37
45
|
def finish_notify
|
46
|
+
prepared_msg = message % { :pid => pid }
|
47
|
+
prepared_msg += " and '#{command}' was running in background" unless command.nil?
|
48
|
+
|
38
49
|
TerminalNotifier.notify(
|
39
|
-
|
50
|
+
prepared_msg,
|
40
51
|
:title => TITLE,
|
41
52
|
:subtitle => 'Finished'
|
42
53
|
)
|
@@ -50,5 +61,5 @@ class PidWatcher
|
|
50
61
|
)
|
51
62
|
end
|
52
63
|
|
53
|
-
attr_reader :pid, :message, :timeout
|
64
|
+
attr_reader :pid, :message, :timeout, :command
|
54
65
|
end
|
data/screenshot.png
ADDED
Binary file
|
metadata
CHANGED
@@ -1,55 +1,55 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: pid-watcher
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- vad4msiu
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2014-03-
|
11
|
+
date: 2014-03-12 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
15
15
|
requirement: !ruby/object:Gem::Requirement
|
16
16
|
requirements:
|
17
|
-
- - ~>
|
17
|
+
- - "~>"
|
18
18
|
- !ruby/object:Gem::Version
|
19
19
|
version: '1.3'
|
20
20
|
type: :development
|
21
21
|
prerelease: false
|
22
22
|
version_requirements: !ruby/object:Gem::Requirement
|
23
23
|
requirements:
|
24
|
-
- - ~>
|
24
|
+
- - "~>"
|
25
25
|
- !ruby/object:Gem::Version
|
26
26
|
version: '1.3'
|
27
27
|
- !ruby/object:Gem::Dependency
|
28
28
|
name: rake
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
30
30
|
requirements:
|
31
|
-
- -
|
31
|
+
- - ">="
|
32
32
|
- !ruby/object:Gem::Version
|
33
33
|
version: '0'
|
34
34
|
type: :development
|
35
35
|
prerelease: false
|
36
36
|
version_requirements: !ruby/object:Gem::Requirement
|
37
37
|
requirements:
|
38
|
-
- -
|
38
|
+
- - ">="
|
39
39
|
- !ruby/object:Gem::Version
|
40
40
|
version: '0'
|
41
41
|
- !ruby/object:Gem::Dependency
|
42
42
|
name: terminal-notifier
|
43
43
|
requirement: !ruby/object:Gem::Requirement
|
44
44
|
requirements:
|
45
|
-
- -
|
45
|
+
- - ">="
|
46
46
|
- !ruby/object:Gem::Version
|
47
47
|
version: '0'
|
48
48
|
type: :runtime
|
49
49
|
prerelease: false
|
50
50
|
version_requirements: !ruby/object:Gem::Requirement
|
51
51
|
requirements:
|
52
|
-
- -
|
52
|
+
- - ">="
|
53
53
|
- !ruby/object:Gem::Version
|
54
54
|
version: '0'
|
55
55
|
description: Watcher for process
|
@@ -60,15 +60,15 @@ executables:
|
|
60
60
|
extensions: []
|
61
61
|
extra_rdoc_files: []
|
62
62
|
files:
|
63
|
-
- .gitignore
|
63
|
+
- ".gitignore"
|
64
64
|
- Gemfile
|
65
65
|
- LICENSE.txt
|
66
66
|
- README.md
|
67
67
|
- Rakefile
|
68
68
|
- bin/pid-watcher
|
69
69
|
- lib/pid_watcher.rb
|
70
|
-
- lib/pid_watcher/version.rb
|
71
70
|
- pid-watcher.gemspec
|
71
|
+
- screenshot.png
|
72
72
|
homepage: ''
|
73
73
|
licenses:
|
74
74
|
- MIT
|
@@ -79,19 +79,18 @@ require_paths:
|
|
79
79
|
- lib
|
80
80
|
required_ruby_version: !ruby/object:Gem::Requirement
|
81
81
|
requirements:
|
82
|
-
- -
|
82
|
+
- - ">="
|
83
83
|
- !ruby/object:Gem::Version
|
84
84
|
version: '0'
|
85
85
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
86
86
|
requirements:
|
87
|
-
- -
|
87
|
+
- - ">="
|
88
88
|
- !ruby/object:Gem::Version
|
89
89
|
version: '0'
|
90
90
|
requirements: []
|
91
91
|
rubyforge_project:
|
92
|
-
rubygems_version: 2.
|
92
|
+
rubygems_version: 2.2.2
|
93
93
|
signing_key:
|
94
94
|
specification_version: 4
|
95
95
|
summary: Watcher for process
|
96
96
|
test_files: []
|
97
|
-
has_rdoc:
|
data/lib/pid_watcher/version.rb
DELETED