foreman 0.49.0 → 0.50.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.
@@ -99,7 +99,20 @@ class Foreman::Engine
99
99
  # @param [String] signal The signal to send to each process
100
100
  #
101
101
  def killall(signal="SIGTERM")
102
- Process.kill "-#{signal}", Process.pid
102
+ if Foreman.windows?
103
+ @running.each do |pid, (process, index)|
104
+ system "sending #{signal} to #{name_for(pid)} at pid #{pid}"
105
+ begin
106
+ Process.kill(signal, pid)
107
+ rescue Errno::ESRCH, Errno::EPERM
108
+ end
109
+ end
110
+ else
111
+ begin
112
+ Process.kill "-#{signal}", Process.pid
113
+ rescue Errno::ESRCH, Errno::EPERM
114
+ end
115
+ end
103
116
  end
104
117
 
105
118
  # Get the process formation
@@ -282,8 +295,13 @@ private
282
295
  def terminate_gracefully
283
296
  return if @terminating
284
297
  @terminating = true
285
- system "sending SIGTERM to all processes"
286
- killall "SIGTERM"
298
+ if Foreman.windows?
299
+ system "sending SIGKILL to all processes"
300
+ killall "SIGKILL"
301
+ else
302
+ system "sending SIGTERM to all processes"
303
+ killall "SIGTERM"
304
+ end
287
305
  Timeout.timeout(5) do
288
306
  watch_for_termination while @running.length > 0
289
307
  end
@@ -31,6 +31,7 @@ class Foreman::Engine::CLI < Foreman::Engine
31
31
 
32
32
  def color?
33
33
  return true if @@color_force
34
+ return true if Foreman.windows?
34
35
  return false unless self.respond_to?(:isatty)
35
36
  self.isatty && ENV["TERM"]
36
37
  end
@@ -49,11 +50,12 @@ class Foreman::Engine::CLI < Foreman::Engine
49
50
  def startup
50
51
  @colors = map_colors
51
52
  proctitle "foreman: master"
53
+ require "win32console" if Foreman.windows?
54
+ Color.enable($stdout, options[:color]) unless $stdout.respond_to?(:color?)
52
55
  end
53
56
 
54
57
  def output(name, data)
55
58
  data.to_s.chomp.split("\n").each do |message|
56
- Color.enable($stdout, options[:color]) unless $stdout.respond_to?(:color?)
57
59
  output = ""
58
60
  output += $stdout.color(@colors[name.split(".").first].to_sym)
59
61
  output += "#{Time.now.strftime("%H:%M:%S")} #{pad_process_name(name)} | "
@@ -36,7 +36,11 @@ class Foreman::Process
36
36
 
37
37
  if Foreman.windows?
38
38
  Dir.chdir(cwd) do
39
- Process.spawn env, command, :out => output, :err => output
39
+ expanded_command = command.dup
40
+ env.each do |key, val|
41
+ expanded_command.gsub!("$#{key}", val)
42
+ end
43
+ Process.spawn env, expanded_command, :out => output, :err => output
40
44
  end
41
45
  elsif Foreman.jruby?
42
46
  Dir.chdir(cwd) do
@@ -64,7 +68,11 @@ class Foreman::Process
64
68
  # @param [String] signal The signal to send
65
69
  #
66
70
  def kill(signal)
67
- pid && Process.kill("-#{signal}", pid)
71
+ if Foreman.windows?
72
+ pid && Process.kill(signal, pid)
73
+ else
74
+ pid && Process.kill("-#{signal}", pid)
75
+ end
68
76
  rescue Errno::ESRCH
69
77
  false
70
78
  end
@@ -1,5 +1,5 @@
1
1
  module Foreman
2
2
 
3
- VERSION = "0.49.0"
3
+ VERSION = "0.50.0"
4
4
 
5
5
  end
@@ -1,7 +1,7 @@
1
1
  .\" generated with Ronn/v0.7.3
2
2
  .\" http://github.com/rtomayko/ronn/tree/0.7.3
3
3
  .
4
- .TH "FOREMAN" "1" "April 2012" "Foreman 0.46.0" "Foreman Manual"
4
+ .TH "FOREMAN" "1" "July 2012" "Foreman 0.50.0" "Foreman Manual"
5
5
  .
6
6
  .SH "NAME"
7
7
  \fBforeman\fR \- manage Procfile\-based applications
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: foreman
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.49.0
4
+ version: 0.50.0
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -13,7 +13,7 @@ date: 2012-07-11 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: thor
16
- requirement: &70206504724140 !ruby/object:Gem::Requirement
16
+ requirement: &70273928866960 !ruby/object:Gem::Requirement
17
17
  none: false
18
18
  requirements:
19
19
  - - ! '>='
@@ -21,7 +21,7 @@ dependencies:
21
21
  version: 0.13.6
22
22
  type: :runtime
23
23
  prerelease: false
24
- version_requirements: *70206504724140
24
+ version_requirements: *70273928866960
25
25
  description: Process manager for applications with multiple components
26
26
  email: ddollar@gmail.com
27
27
  executables:
@@ -121,12 +121,18 @@ required_ruby_version: !ruby/object:Gem::Requirement
121
121
  - - ! '>='
122
122
  - !ruby/object:Gem::Version
123
123
  version: '0'
124
+ segments:
125
+ - 0
126
+ hash: 2988122177042669007
124
127
  required_rubygems_version: !ruby/object:Gem::Requirement
125
128
  none: false
126
129
  requirements:
127
130
  - - ! '>='
128
131
  - !ruby/object:Gem::Version
129
132
  version: '0'
133
+ segments:
134
+ - 0
135
+ hash: 2988122177042669007
130
136
  requirements: []
131
137
  rubyforge_project:
132
138
  rubygems_version: 1.8.11
@@ -134,3 +140,4 @@ signing_key:
134
140
  specification_version: 3
135
141
  summary: Process manager for applications with multiple components
136
142
  test_files: []
143
+ has_rdoc: