fiveman 0.1.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.
Files changed (136) hide show
  1. checksums.yaml +7 -0
  2. data/README.md +11 -0
  3. data/bin/fiveman +7 -0
  4. data/bin/fiveman-runner +41 -0
  5. data/data/example/Procfile +4 -0
  6. data/data/example/Procfile.without_colon +2 -0
  7. data/data/example/error +7 -0
  8. data/data/example/log/neverdie.log +4 -0
  9. data/data/example/spawnee +14 -0
  10. data/data/example/spawner +7 -0
  11. data/data/example/ticker +14 -0
  12. data/data/example/utf8 +11 -0
  13. data/data/export/bluepill/master.pill.erb +28 -0
  14. data/data/export/daemon/master.conf.erb +14 -0
  15. data/data/export/daemon/process.conf.erb +8 -0
  16. data/data/export/daemon/process_master.conf.erb +2 -0
  17. data/data/export/launchd/launchd.plist.erb +33 -0
  18. data/data/export/runit/log/run.erb +7 -0
  19. data/data/export/runit/run.erb +4 -0
  20. data/data/export/supervisord/app.conf.erb +31 -0
  21. data/data/export/systemd/master.target.erb +5 -0
  22. data/data/export/systemd/process.service.erb +21 -0
  23. data/data/export/upstart/master.conf.erb +2 -0
  24. data/data/export/upstart/process.conf.erb +15 -0
  25. data/data/export/upstart/process_master.conf.erb +2 -0
  26. data/lib/fiveman/cli.rb +162 -0
  27. data/lib/fiveman/distribution.rb +9 -0
  28. data/lib/fiveman/engine/cli.rb +101 -0
  29. data/lib/fiveman/engine.rb +494 -0
  30. data/lib/fiveman/env.rb +29 -0
  31. data/lib/fiveman/export/base.rb +171 -0
  32. data/lib/fiveman/export/bluepill.rb +12 -0
  33. data/lib/fiveman/export/daemon.rb +28 -0
  34. data/lib/fiveman/export/inittab.rb +42 -0
  35. data/lib/fiveman/export/launchd.rb +22 -0
  36. data/lib/fiveman/export/runit.rb +34 -0
  37. data/lib/fiveman/export/supervisord.rb +16 -0
  38. data/lib/fiveman/export/systemd.rb +34 -0
  39. data/lib/fiveman/export/upstart.rb +46 -0
  40. data/lib/fiveman/export.rb +36 -0
  41. data/lib/fiveman/helpers.rb +45 -0
  42. data/lib/fiveman/process.rb +80 -0
  43. data/lib/fiveman/procfile.rb +94 -0
  44. data/lib/fiveman/vendor/thor/lib/thor/actions/create_file.rb +103 -0
  45. data/lib/fiveman/vendor/thor/lib/thor/actions/create_link.rb +59 -0
  46. data/lib/fiveman/vendor/thor/lib/thor/actions/directory.rb +118 -0
  47. data/lib/fiveman/vendor/thor/lib/thor/actions/empty_directory.rb +135 -0
  48. data/lib/fiveman/vendor/thor/lib/thor/actions/file_manipulation.rb +327 -0
  49. data/lib/fiveman/vendor/thor/lib/thor/actions/inject_into_file.rb +103 -0
  50. data/lib/fiveman/vendor/thor/lib/thor/actions.rb +318 -0
  51. data/lib/fiveman/vendor/thor/lib/thor/base.rb +656 -0
  52. data/lib/fiveman/vendor/thor/lib/thor/command.rb +133 -0
  53. data/lib/fiveman/vendor/thor/lib/thor/core_ext/hash_with_indifferent_access.rb +85 -0
  54. data/lib/fiveman/vendor/thor/lib/thor/core_ext/io_binary_read.rb +12 -0
  55. data/lib/fiveman/vendor/thor/lib/thor/core_ext/ordered_hash.rb +129 -0
  56. data/lib/fiveman/vendor/thor/lib/thor/error.rb +32 -0
  57. data/lib/fiveman/vendor/thor/lib/thor/group.rb +281 -0
  58. data/lib/fiveman/vendor/thor/lib/thor/invocation.rb +177 -0
  59. data/lib/fiveman/vendor/thor/lib/thor/line_editor/basic.rb +35 -0
  60. data/lib/fiveman/vendor/thor/lib/thor/line_editor/readline.rb +88 -0
  61. data/lib/fiveman/vendor/thor/lib/thor/line_editor.rb +17 -0
  62. data/lib/fiveman/vendor/thor/lib/thor/parser/argument.rb +70 -0
  63. data/lib/fiveman/vendor/thor/lib/thor/parser/arguments.rb +175 -0
  64. data/lib/fiveman/vendor/thor/lib/thor/parser/option.rb +146 -0
  65. data/lib/fiveman/vendor/thor/lib/thor/parser/options.rb +220 -0
  66. data/lib/fiveman/vendor/thor/lib/thor/parser.rb +4 -0
  67. data/lib/fiveman/vendor/thor/lib/thor/rake_compat.rb +71 -0
  68. data/lib/fiveman/vendor/thor/lib/thor/runner.rb +322 -0
  69. data/lib/fiveman/vendor/thor/lib/thor/shell/basic.rb +436 -0
  70. data/lib/fiveman/vendor/thor/lib/thor/shell/color.rb +149 -0
  71. data/lib/fiveman/vendor/thor/lib/thor/shell/html.rb +126 -0
  72. data/lib/fiveman/vendor/thor/lib/thor/shell.rb +81 -0
  73. data/lib/fiveman/vendor/thor/lib/thor/util.rb +268 -0
  74. data/lib/fiveman/vendor/thor/lib/thor/version.rb +3 -0
  75. data/lib/fiveman/vendor/thor/lib/thor.rb +492 -0
  76. data/lib/fiveman/version.rb +5 -0
  77. data/lib/fiveman.rb +17 -0
  78. data/man/fiveman.1 +284 -0
  79. data/spec/fiveman/cli_spec.rb +111 -0
  80. data/spec/fiveman/engine_spec.rb +114 -0
  81. data/spec/fiveman/export/base_spec.rb +19 -0
  82. data/spec/fiveman/export/bluepill_spec.rb +37 -0
  83. data/spec/fiveman/export/daemon_spec.rb +97 -0
  84. data/spec/fiveman/export/inittab_spec.rb +40 -0
  85. data/spec/fiveman/export/launchd_spec.rb +31 -0
  86. data/spec/fiveman/export/runit_spec.rb +36 -0
  87. data/spec/fiveman/export/supervisord_spec.rb +38 -0
  88. data/spec/fiveman/export/systemd_spec.rb +155 -0
  89. data/spec/fiveman/export/upstart_spec.rb +118 -0
  90. data/spec/fiveman/export_spec.rb +24 -0
  91. data/spec/fiveman/helpers_spec.rb +26 -0
  92. data/spec/fiveman/process_spec.rb +71 -0
  93. data/spec/fiveman/procfile_spec.rb +57 -0
  94. data/spec/fiveman_spec.rb +16 -0
  95. data/spec/helper_spec.rb +19 -0
  96. data/spec/resources/Procfile +5 -0
  97. data/spec/resources/Procfile.bad +2 -0
  98. data/spec/resources/bin/echo +2 -0
  99. data/spec/resources/bin/env +2 -0
  100. data/spec/resources/bin/test +2 -0
  101. data/spec/resources/bin/utf8 +2 -0
  102. data/spec/resources/export/bluepill/app-concurrency.pill +49 -0
  103. data/spec/resources/export/bluepill/app.pill +81 -0
  104. data/spec/resources/export/daemon/app-alpha-1.conf +7 -0
  105. data/spec/resources/export/daemon/app-alpha-2.conf +7 -0
  106. data/spec/resources/export/daemon/app-alpha.conf +2 -0
  107. data/spec/resources/export/daemon/app-bravo-1.conf +7 -0
  108. data/spec/resources/export/daemon/app-bravo.conf +2 -0
  109. data/spec/resources/export/daemon/app.conf +14 -0
  110. data/spec/resources/export/inittab/inittab.concurrency +4 -0
  111. data/spec/resources/export/inittab/inittab.default +6 -0
  112. data/spec/resources/export/launchd/launchd-a.default +29 -0
  113. data/spec/resources/export/launchd/launchd-b.default +29 -0
  114. data/spec/resources/export/launchd/launchd-c.default +30 -0
  115. data/spec/resources/export/runit/app-alpha-1/log/run +7 -0
  116. data/spec/resources/export/runit/app-alpha-1/run +4 -0
  117. data/spec/resources/export/runit/app-alpha-2/log/run +7 -0
  118. data/spec/resources/export/runit/app-alpha-2/run +4 -0
  119. data/spec/resources/export/runit/app-bravo-1/log/run +7 -0
  120. data/spec/resources/export/runit/app-bravo-1/run +4 -0
  121. data/spec/resources/export/supervisord/app-alpha-1.conf +42 -0
  122. data/spec/resources/export/supervisord/app-alpha-2.conf +22 -0
  123. data/spec/resources/export/systemd/app-alpha.1.service +18 -0
  124. data/spec/resources/export/systemd/app-alpha.2.service +18 -0
  125. data/spec/resources/export/systemd/app-alpha.target +2 -0
  126. data/spec/resources/export/systemd/app-bravo.1.service +18 -0
  127. data/spec/resources/export/systemd/app-bravo.target +2 -0
  128. data/spec/resources/export/systemd/app.target +5 -0
  129. data/spec/resources/export/upstart/app-alpha-1.conf +11 -0
  130. data/spec/resources/export/upstart/app-alpha-2.conf +11 -0
  131. data/spec/resources/export/upstart/app-alpha.conf +2 -0
  132. data/spec/resources/export/upstart/app-bravo-1.conf +11 -0
  133. data/spec/resources/export/upstart/app-bravo.conf +2 -0
  134. data/spec/resources/export/upstart/app.conf +2 -0
  135. data/spec/spec_helper.rb +177 -0
  136. metadata +177 -0
@@ -0,0 +1,177 @@
1
+ require "simplecov"
2
+ SimpleCov.start do
3
+ add_filter "/spec/"
4
+ end
5
+
6
+ require "rspec"
7
+ require "timecop"
8
+ require "pp"
9
+ require "fakefs/safe"
10
+ require "fakefs/spec_helpers"
11
+
12
+ $:.unshift File.expand_path("../../lib", __FILE__)
13
+
14
+ def mock_export_error(message)
15
+ expect { yield }.to raise_error(Fiveman::Export::Exception, message)
16
+ end
17
+
18
+ def mock_error(subject, message)
19
+ mock_exit do
20
+ expect(subject).to receive(:puts).with("ERROR: #{message}")
21
+ yield
22
+ end
23
+ end
24
+
25
+ def make_pipe
26
+ IO.method(:pipe).arity.zero? ? IO.pipe : IO.pipe("BINARY")
27
+ end
28
+
29
+ def fiveman(args)
30
+ capture_stdout do
31
+ begin
32
+ Fiveman::CLI.start(args.split(" "))
33
+ rescue SystemExit
34
+ end
35
+ end
36
+ end
37
+
38
+ def forked_fiveman(args)
39
+ rd, wr = make_pipe
40
+ Process.spawn("bundle exec bin/fiveman #{args}", :out => wr, :err => wr)
41
+ wr.close
42
+ rd.read
43
+ end
44
+
45
+ def fork_and_capture(&blk)
46
+ rd, wr = make_pipe
47
+ pid = fork do
48
+ rd.close
49
+ wr.sync = true
50
+ $stdout.reopen wr
51
+ $stderr.reopen wr
52
+ blk.call
53
+ $stdout.flush
54
+ $stdout.close
55
+ end
56
+ wr.close
57
+ Process.wait pid
58
+ buffer = ""
59
+ until rd.eof?
60
+ buffer += rd.gets
61
+ end
62
+ end
63
+
64
+ def fork_and_get_exitstatus(args)
65
+ pid = Process.spawn("bundle exec bin/fiveman #{args}", :out => "/dev/null", :err => "/dev/null")
66
+ Process.wait(pid)
67
+ $?.exitstatus
68
+ end
69
+
70
+ def mock_exit(&block)
71
+ expect { block.call }.to raise_error(SystemExit)
72
+ end
73
+
74
+ def write_fiveman_config(app)
75
+ File.open("/etc/fiveman/#{app}.conf", "w") do |file|
76
+ file.puts %{#{app}_processes="alpha bravo"}
77
+ file.puts %{#{app}_alpha="1"}
78
+ file.puts %{#{app}_bravo="2"}
79
+ end
80
+ end
81
+
82
+ def write_procfile(procfile="Procfile", alpha_env="")
83
+ FileUtils.mkdir_p(File.dirname(procfile))
84
+ File.open(procfile, "w") do |file|
85
+ file.puts "alpha: ./alpha" + " #{alpha_env}".rstrip
86
+ file.puts "\n"
87
+ file.puts "bravo:\t./bravo"
88
+ file.puts "foo_bar:\t./foo_bar"
89
+ file.puts "foo-bar:\t./foo-bar"
90
+ file.puts "# baz:\t./baz"
91
+ end
92
+ File.expand_path(procfile)
93
+ end
94
+
95
+ def write_file(file)
96
+ FileUtils.mkdir_p(File.dirname(file))
97
+ File.open(file, 'w') do |f|
98
+ yield(f) if block_given?
99
+ end
100
+ end
101
+
102
+ def write_env(env=".env", options={"FOO"=>"bar"})
103
+ File.open(env, "w") do |file|
104
+ options.each do |key, val|
105
+ file.puts "#{key}=#{val}"
106
+ end
107
+ end
108
+ end
109
+
110
+ def without_fakefs
111
+ FakeFS.deactivate!
112
+ ret = yield
113
+ FakeFS.activate!
114
+ ret
115
+ end
116
+
117
+ def load_export_templates_into_fakefs(type)
118
+ without_fakefs do
119
+ Dir[File.expand_path("../../data/export/#{type}/**/*", __FILE__)].inject({}) do |hash, file|
120
+ next(hash) if File.directory?(file)
121
+ hash.update(file => File.read(file))
122
+ end
123
+ end.each do |filename, contents|
124
+ FileUtils.mkdir_p File.dirname(filename)
125
+ File.open(filename, "w") do |f|
126
+ f.puts contents
127
+ end
128
+ end
129
+ end
130
+
131
+ def resource_path(filename)
132
+ File.expand_path("../resources/#{filename}", __FILE__)
133
+ end
134
+
135
+ def example_export_file(filename)
136
+ FakeFS.deactivate!
137
+ data = File.read(File.expand_path(resource_path("export/#{filename}"), __FILE__))
138
+ FakeFS.activate!
139
+ data
140
+ end
141
+
142
+ def preserving_env
143
+ old_env = ENV.to_hash
144
+ begin
145
+ yield
146
+ ensure
147
+ ENV.clear
148
+ ENV.update(old_env)
149
+ end
150
+ end
151
+
152
+ def normalize_space(s)
153
+ s.gsub(/\n[\n\s]*/, "\n")
154
+ end
155
+
156
+ def capture_stdout
157
+ old_stdout = $stdout.dup
158
+ rd, wr = make_pipe
159
+ $stdout = wr
160
+ yield
161
+ wr.close
162
+ rd.read
163
+ ensure
164
+ $stdout = old_stdout
165
+ end
166
+
167
+ RSpec.configure do |config|
168
+ config.color = true
169
+ config.order = 'rand'
170
+ config.include FakeFS::SpecHelpers, :fakefs
171
+ config.before(:each) do
172
+ FileUtils.mkdir_p('/tmp')
173
+ end
174
+ config.after(:each) do
175
+ FileUtils.rm_rf('/tmp')
176
+ end
177
+ end
metadata ADDED
@@ -0,0 +1,177 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: fiveman
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.1.0
5
+ platform: ruby
6
+ authors:
7
+ - David Dollar
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2023-07-30 00:00:00.000000000 Z
12
+ dependencies: []
13
+ description: Process manager for applications with multiple components
14
+ email: ddollar@gmail.com
15
+ executables:
16
+ - fiveman
17
+ extensions: []
18
+ extra_rdoc_files: []
19
+ files:
20
+ - README.md
21
+ - bin/fiveman
22
+ - bin/fiveman-runner
23
+ - data/example/Procfile
24
+ - data/example/Procfile.without_colon
25
+ - data/example/error
26
+ - data/example/log/neverdie.log
27
+ - data/example/spawnee
28
+ - data/example/spawner
29
+ - data/example/ticker
30
+ - data/example/utf8
31
+ - data/export/bluepill/master.pill.erb
32
+ - data/export/daemon/master.conf.erb
33
+ - data/export/daemon/process.conf.erb
34
+ - data/export/daemon/process_master.conf.erb
35
+ - data/export/launchd/launchd.plist.erb
36
+ - data/export/runit/log/run.erb
37
+ - data/export/runit/run.erb
38
+ - data/export/supervisord/app.conf.erb
39
+ - data/export/systemd/master.target.erb
40
+ - data/export/systemd/process.service.erb
41
+ - data/export/upstart/master.conf.erb
42
+ - data/export/upstart/process.conf.erb
43
+ - data/export/upstart/process_master.conf.erb
44
+ - lib/fiveman.rb
45
+ - lib/fiveman/cli.rb
46
+ - lib/fiveman/distribution.rb
47
+ - lib/fiveman/engine.rb
48
+ - lib/fiveman/engine/cli.rb
49
+ - lib/fiveman/env.rb
50
+ - lib/fiveman/export.rb
51
+ - lib/fiveman/export/base.rb
52
+ - lib/fiveman/export/bluepill.rb
53
+ - lib/fiveman/export/daemon.rb
54
+ - lib/fiveman/export/inittab.rb
55
+ - lib/fiveman/export/launchd.rb
56
+ - lib/fiveman/export/runit.rb
57
+ - lib/fiveman/export/supervisord.rb
58
+ - lib/fiveman/export/systemd.rb
59
+ - lib/fiveman/export/upstart.rb
60
+ - lib/fiveman/helpers.rb
61
+ - lib/fiveman/process.rb
62
+ - lib/fiveman/procfile.rb
63
+ - lib/fiveman/vendor/thor/lib/thor.rb
64
+ - lib/fiveman/vendor/thor/lib/thor/actions.rb
65
+ - lib/fiveman/vendor/thor/lib/thor/actions/create_file.rb
66
+ - lib/fiveman/vendor/thor/lib/thor/actions/create_link.rb
67
+ - lib/fiveman/vendor/thor/lib/thor/actions/directory.rb
68
+ - lib/fiveman/vendor/thor/lib/thor/actions/empty_directory.rb
69
+ - lib/fiveman/vendor/thor/lib/thor/actions/file_manipulation.rb
70
+ - lib/fiveman/vendor/thor/lib/thor/actions/inject_into_file.rb
71
+ - lib/fiveman/vendor/thor/lib/thor/base.rb
72
+ - lib/fiveman/vendor/thor/lib/thor/command.rb
73
+ - lib/fiveman/vendor/thor/lib/thor/core_ext/hash_with_indifferent_access.rb
74
+ - lib/fiveman/vendor/thor/lib/thor/core_ext/io_binary_read.rb
75
+ - lib/fiveman/vendor/thor/lib/thor/core_ext/ordered_hash.rb
76
+ - lib/fiveman/vendor/thor/lib/thor/error.rb
77
+ - lib/fiveman/vendor/thor/lib/thor/group.rb
78
+ - lib/fiveman/vendor/thor/lib/thor/invocation.rb
79
+ - lib/fiveman/vendor/thor/lib/thor/line_editor.rb
80
+ - lib/fiveman/vendor/thor/lib/thor/line_editor/basic.rb
81
+ - lib/fiveman/vendor/thor/lib/thor/line_editor/readline.rb
82
+ - lib/fiveman/vendor/thor/lib/thor/parser.rb
83
+ - lib/fiveman/vendor/thor/lib/thor/parser/argument.rb
84
+ - lib/fiveman/vendor/thor/lib/thor/parser/arguments.rb
85
+ - lib/fiveman/vendor/thor/lib/thor/parser/option.rb
86
+ - lib/fiveman/vendor/thor/lib/thor/parser/options.rb
87
+ - lib/fiveman/vendor/thor/lib/thor/rake_compat.rb
88
+ - lib/fiveman/vendor/thor/lib/thor/runner.rb
89
+ - lib/fiveman/vendor/thor/lib/thor/shell.rb
90
+ - lib/fiveman/vendor/thor/lib/thor/shell/basic.rb
91
+ - lib/fiveman/vendor/thor/lib/thor/shell/color.rb
92
+ - lib/fiveman/vendor/thor/lib/thor/shell/html.rb
93
+ - lib/fiveman/vendor/thor/lib/thor/util.rb
94
+ - lib/fiveman/vendor/thor/lib/thor/version.rb
95
+ - lib/fiveman/version.rb
96
+ - man/fiveman.1
97
+ - spec/fiveman/cli_spec.rb
98
+ - spec/fiveman/engine_spec.rb
99
+ - spec/fiveman/export/base_spec.rb
100
+ - spec/fiveman/export/bluepill_spec.rb
101
+ - spec/fiveman/export/daemon_spec.rb
102
+ - spec/fiveman/export/inittab_spec.rb
103
+ - spec/fiveman/export/launchd_spec.rb
104
+ - spec/fiveman/export/runit_spec.rb
105
+ - spec/fiveman/export/supervisord_spec.rb
106
+ - spec/fiveman/export/systemd_spec.rb
107
+ - spec/fiveman/export/upstart_spec.rb
108
+ - spec/fiveman/export_spec.rb
109
+ - spec/fiveman/helpers_spec.rb
110
+ - spec/fiveman/process_spec.rb
111
+ - spec/fiveman/procfile_spec.rb
112
+ - spec/fiveman_spec.rb
113
+ - spec/helper_spec.rb
114
+ - spec/resources/Procfile
115
+ - spec/resources/Procfile.bad
116
+ - spec/resources/bin/echo
117
+ - spec/resources/bin/env
118
+ - spec/resources/bin/test
119
+ - spec/resources/bin/utf8
120
+ - spec/resources/export/bluepill/app-concurrency.pill
121
+ - spec/resources/export/bluepill/app.pill
122
+ - spec/resources/export/daemon/app-alpha-1.conf
123
+ - spec/resources/export/daemon/app-alpha-2.conf
124
+ - spec/resources/export/daemon/app-alpha.conf
125
+ - spec/resources/export/daemon/app-bravo-1.conf
126
+ - spec/resources/export/daemon/app-bravo.conf
127
+ - spec/resources/export/daemon/app.conf
128
+ - spec/resources/export/inittab/inittab.concurrency
129
+ - spec/resources/export/inittab/inittab.default
130
+ - spec/resources/export/launchd/launchd-a.default
131
+ - spec/resources/export/launchd/launchd-b.default
132
+ - spec/resources/export/launchd/launchd-c.default
133
+ - spec/resources/export/runit/app-alpha-1/log/run
134
+ - spec/resources/export/runit/app-alpha-1/run
135
+ - spec/resources/export/runit/app-alpha-2/log/run
136
+ - spec/resources/export/runit/app-alpha-2/run
137
+ - spec/resources/export/runit/app-bravo-1/log/run
138
+ - spec/resources/export/runit/app-bravo-1/run
139
+ - spec/resources/export/supervisord/app-alpha-1.conf
140
+ - spec/resources/export/supervisord/app-alpha-2.conf
141
+ - spec/resources/export/systemd/app-alpha.1.service
142
+ - spec/resources/export/systemd/app-alpha.2.service
143
+ - spec/resources/export/systemd/app-alpha.target
144
+ - spec/resources/export/systemd/app-bravo.1.service
145
+ - spec/resources/export/systemd/app-bravo.target
146
+ - spec/resources/export/systemd/app.target
147
+ - spec/resources/export/upstart/app-alpha-1.conf
148
+ - spec/resources/export/upstart/app-alpha-2.conf
149
+ - spec/resources/export/upstart/app-alpha.conf
150
+ - spec/resources/export/upstart/app-bravo-1.conf
151
+ - spec/resources/export/upstart/app-bravo.conf
152
+ - spec/resources/export/upstart/app.conf
153
+ - spec/spec_helper.rb
154
+ homepage: https://github.com/ddollar/fiveman
155
+ licenses:
156
+ - MIT
157
+ metadata: {}
158
+ post_install_message:
159
+ rdoc_options: []
160
+ require_paths:
161
+ - lib
162
+ required_ruby_version: !ruby/object:Gem::Requirement
163
+ requirements:
164
+ - - ">="
165
+ - !ruby/object:Gem::Version
166
+ version: '0'
167
+ required_rubygems_version: !ruby/object:Gem::Requirement
168
+ requirements:
169
+ - - ">="
170
+ - !ruby/object:Gem::Version
171
+ version: '0'
172
+ requirements: []
173
+ rubygems_version: 3.4.10
174
+ signing_key:
175
+ specification_version: 4
176
+ summary: Process manager for applications with multiple components
177
+ test_files: []