overmind 0.1.1-x86-linux → 2.5.0-x86-linux

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: d053bf9fced0c974a772e685208afa2c2e6cc52fc3ead1103642337fd5d3a0c1
4
- data.tar.gz: c333ef03245a4482b367304c4ce4408b0b22c5187292c5bdc213a2f52ff1e7d6
3
+ metadata.gz: 2df3a75ba5c204021950681d1f7d7028d641c3f36b7a5a48d4c1f8f559a750b5
4
+ data.tar.gz: 1a24d6da49cd8677c1801c1f0cfec1f6dd52836b5682979e8a02131c896300ce
5
5
  SHA512:
6
- metadata.gz: 294d9c6244f23b15470cd38886377844e4bd5d62bb53c07b77780c90dcbaf9f2ce276a49d197b3c3c5db2165ad96dba6b269a3689207e146735a485982c9908c
7
- data.tar.gz: aa56cb47daed252cb7c3eea3aea493738006c9c58fcc29f91ff67c39f507dd9cfc5aae6cc3a8410c472f268d79ee1dff835e1c8a583da29d4eeab7c140c2e9f5
6
+ metadata.gz: 88108e0374940fbad061f8087dc37326a6e529d97b600508e102182c1ceae14d10169ebcc37e9d1958a3f7f335bfdf4c8639f498504d82e647a7cbe35c739211
7
+ data.tar.gz: d052c43f707eba3b7b82143d7c858ddfd1456eabceac84b6e12a25488e190b42654677ffae4b9d3cab9a96319b5238051d002e0388bc8ba47fbeb2ef92404500
@@ -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
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-linux
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/tmux
@@ -82,14 +83,14 @@ required_ruby_version: !ruby/object:Gem::Requirement
82
83
  requirements:
83
84
  - - ">="
84
85
  - !ruby/object:Gem::Version
85
- version: '0'
86
+ version: '2.3'
86
87
  required_rubygems_version: !ruby/object:Gem::Requirement
87
88
  requirements:
88
89
  - - ">="
89
90
  - !ruby/object:Gem::Version
90
91
  version: '0'
91
92
  requirements: []
92
- rubygems_version: 3.4.21
93
+ rubygems_version: 3.2.3
93
94
  signing_key:
94
95
  specification_version: 4
95
96
  summary: Overmind is a process manager for Procfile-based applications and tmux.