overmind 0.1.1-x86_64-darwin → 2.5.0-x86_64-darwin

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
  SHA256:
3
- metadata.gz: 9f16d3c98db83ca526f25cecde1eb27fae167058a259746d729b6124efc28f7f
4
- data.tar.gz: c2ca147126ae55c2a42565db69f96e91e43af9e873e00ff3aee44b01f8407b71
3
+ metadata.gz: 522ca017e645ed86eff717a8801f0af9d9d0edcbecf7e1800a9ada8c8ce6a00a
4
+ data.tar.gz: 5ff6f7d1719fa283b8d002a6056598ac4c2964732a8155f82756b7046b882fd9
5
5
  SHA512:
6
- metadata.gz: 79c2f2cd2a28bf6c690780a61e3ddbbaacd7cc5833994de9bd67ec536e9b9a9c309b18b9ff8c1c7c195374846c56a7522b8f5cebbef9a799c95525cf820f7eab
7
- data.tar.gz: ed63fc3f82d71a31c4ec7d38a1d7ecc55f298a052c4f3473771dd49873cd969b6fe2cd97d23b20127343d38a223cdf0a930e7df00e39bd76a94d0c143cf0aac0
6
+ metadata.gz: 5833331f3d0d3a77f591dd5ac4e2d2ff761a5952f32cba12580bde1b260e7690ab96f1845d0b9f59465be2516d417c43405f7a60e67eab507397cff7c2e602a3
7
+ data.tar.gz: 572d9f81e19a6468478beb92d5c1835f86610334f5afc1a258296b049316754a7cb249733d7b6fe13af5f44365b9c71be7cdaf4b1369de93ac6c2232cca429fc
@@ -0,0 +1,93 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Overmind
4
+ # Command-line interface for running golang library Overmind
5
+ # It ensures that the necessary dependencies, such as tmux, are present
6
+ # and runs Overmind with any provided arguments.
7
+ class CLI
8
+ SUPPORTED_OS_REGEX = /darwin|linux|bsd/i
9
+ # Path to the library's executable files
10
+ LIBRARY_PATH = File.expand_path("#{File.dirname(__FILE__)}/../../libexec")
11
+ OVERMIND_PATH = "#{LIBRARY_PATH}/overmind"
12
+ TMUX_FOLDER_PATH = "#{LIBRARY_PATH}/prebuilt-tmux/bin"
13
+ TMUX_PATH = "#{TMUX_FOLDER_PATH}/tmux"
14
+
15
+ def run(args = [])
16
+ os_validate!
17
+ validate_tmux_present!
18
+ validate_overmind_present!
19
+
20
+ # Ensures arguments are properly quoted if they contain spaces
21
+ args = args.map { |x| x.include?(" ") ? "'#{x}'" : x }
22
+
23
+ # Use prebuild tmux if found
24
+ path_with_tmux = File.exist?(TMUX_PATH) ? "#{TMUX_FOLDER_PATH}:#{ENV["PATH"]}" : ENV["PATH"]
25
+
26
+ # Spawns the Overmind process with modified PATH if necessary
27
+ pid = spawn({"PATH" => path_with_tmux}, "#{OVERMIND_PATH} #{args.join(" ")}")
28
+
29
+ Process.wait(pid)
30
+
31
+ $?.exitstatus
32
+ end
33
+
34
+ private
35
+
36
+ # Checks if the current OS is supported based on a regex match
37
+ def os_supported?
38
+ RUBY_PLATFORM.match?(SUPPORTED_OS_REGEX)
39
+ end
40
+
41
+ # Checks if tmux is installed either globally or as a prebuilt binary
42
+ def tmux_installed?
43
+ system("which tmux") || File.exist?(TMUX_PATH)
44
+ end
45
+
46
+ # Checks if the Overmind executable is present
47
+ def overmind_installed?
48
+ File.exist?(OVERMIND_PATH)
49
+ end
50
+
51
+ # Validates the operating system and aborts with an error message if unsupported
52
+ def os_validate!
53
+ return if os_supported?
54
+
55
+ abort_with_message("Error: This gem supports Linux, *BSD, and macOS only.")
56
+ end
57
+
58
+ # Validates the presence of tmux and aborts with an error message if not found
59
+ def validate_tmux_present!
60
+ return if tmux_installed?
61
+
62
+ abort_with_message(<<~MSG)
63
+ Error: tmux not found. Please ensure tmux is installed and available in PATH.
64
+ If tmux is not installed, you can usually install it using your package manager. For example:
65
+
66
+ # For Ubuntu/Debian
67
+ sudo apt-get install tmux
68
+ #{" "}
69
+ # For macOS
70
+ brew install tmux
71
+ #{" "}
72
+ # For FreeBSD
73
+ sudo pkg install tmux
74
+
75
+ Installation commands might vary based on your operating system and its version.#{" "}
76
+ Please consult your system's package management documentation for the most accurate instructions.
77
+ MSG
78
+ end
79
+
80
+ # Validates the presence of Overmind and aborts with an error message if not found
81
+ def validate_overmind_present!
82
+ return if overmind_installed?
83
+
84
+ abort_with_message("Error: Invalid platform. Overmind wasn't built for #{RUBY_PLATFORM}")
85
+ end
86
+
87
+ # Aborts execution with a given error message
88
+ def abort_with_message(message)
89
+ warn "\e[31m#{message}\e[0m"
90
+ exit 1
91
+ end
92
+ end
93
+ end
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Overmind
4
- VERSION = "0.1.1"
4
+ VERSION = "2.5.0"
5
5
  end
data/libexec/overmind CHANGED
Binary file
Binary file
@@ -1 +1 @@
1
- libevent-2.1.7.dylib
1
+ libexec/prebuilt-tmux/lib/libevent-2.1.7.dylib
@@ -1 +1 @@
1
- libevent_core-2.1.7.dylib
1
+ libexec/prebuilt-tmux/lib/libevent_core-2.1.7.dylib
@@ -1 +1 @@
1
- libevent_extra-2.1.7.dylib
1
+ libexec/prebuilt-tmux/lib/libevent_extra-2.1.7.dylib
@@ -1 +1 @@
1
- libevent_openssl-2.1.7.dylib
1
+ libexec/prebuilt-tmux/lib/libevent_openssl-2.1.7.dylib
@@ -1 +1 @@
1
- libevent_pthreads-2.1.7.dylib
1
+ libexec/prebuilt-tmux/lib/libevent_pthreads-2.1.7.dylib
@@ -1 +1 @@
1
- libutf8proc.3.dylib
1
+ libexec/prebuilt-tmux/lib/libutf8proc.3.dylib
data/overmind.gemspec CHANGED
@@ -12,7 +12,7 @@ Gem::Specification.new do |spec|
12
12
  spec.description = "Overmind is a process manager for Procfile-based applications and tmux."
13
13
  spec.homepage = "https://github.com/DarthSim/overmind"
14
14
  spec.license = "MIT"
15
- spec.required_ruby_version = ">= 0"
15
+ spec.required_ruby_version = ">= 2.3"
16
16
 
17
17
  spec.metadata["homepage_uri"] = spec.homepage
18
18
  spec.metadata["source_code_uri"] = "https://github.com/DarthSim/overmind"
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: overmind
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.1
4
+ version: 2.5.0
5
5
  platform: x86_64-darwin
6
6
  authors:
7
7
  - prog-supdex
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2024-03-11 00:00:00.000000000 Z
11
+ date: 2024-03-25 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -63,6 +63,7 @@ files:
63
63
  - LICENSE.txt
64
64
  - bin/overmind
65
65
  - lib/overmind.rb
66
+ - lib/overmind/cli.rb
66
67
  - lib/overmind/version.rb
67
68
  - libexec/overmind
68
69
  - libexec/prebuilt-tmux/bin/event_rpcgen.py
@@ -145,14 +146,14 @@ required_ruby_version: !ruby/object:Gem::Requirement
145
146
  requirements:
146
147
  - - ">="
147
148
  - !ruby/object:Gem::Version
148
- version: '0'
149
+ version: '2.3'
149
150
  required_rubygems_version: !ruby/object:Gem::Requirement
150
151
  requirements:
151
152
  - - ">="
152
153
  - !ruby/object:Gem::Version
153
154
  version: '0'
154
155
  requirements: []
155
- rubygems_version: 3.4.21
156
+ rubygems_version: 3.2.3
156
157
  signing_key:
157
158
  specification_version: 4
158
159
  summary: Overmind is a process manager for Procfile-based applications and tmux.