Class: Soba::Services::SessionResolver
- Inherits:
-
Object
- Object
- Soba::Services::SessionResolver
- Defined in:
- lib/soba/services/session_resolver.rb
Instance Method Summary collapse
- #cleanup_stale_sessions(repository) ⇒ Object
- #find_all_repository_sessions(repository) ⇒ Object
- #generate_session_name(repository, pid) ⇒ Object
-
#initialize(pid_manager: nil, tmux_manager: nil) ⇒ SessionResolver
constructor
A new instance of SessionResolver.
- #resolve_active_session(repository) ⇒ Object
Constructor Details
#initialize(pid_manager: nil, tmux_manager: nil) ⇒ SessionResolver
Returns a new instance of SessionResolver.
6 7 8 9 |
# File 'lib/soba/services/session_resolver.rb', line 6 def initialize(pid_manager: nil, tmux_manager: nil) @pid_manager = pid_manager || PidManager.new @tmux_manager = tmux_manager || TmuxSessionManager.new end |
Instance Method Details
#cleanup_stale_sessions(repository) ⇒ Object
54 55 56 57 58 59 60 61 62 63 64 65 |
# File 'lib/soba/services/session_resolver.rb', line 54 def cleanup_stale_sessions(repository) pid = @pid_manager.read return [] unless pid session_name = generate_session_name(repository, pid) if @tmux_manager.session_exists?(session_name) [] else @pid_manager.delete [pid] end end |
#find_all_repository_sessions(repository) ⇒ Object
27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 |
# File 'lib/soba/services/session_resolver.rb', line 27 def find_all_repository_sessions(repository) pid = @pid_manager.read return [] unless pid session_name = generate_session_name(repository, pid) active = @tmux_manager.session_exists?(session_name) unless active @pid_manager.delete end [ { name: session_name, pid: pid, active: active, }, ] end |
#generate_session_name(repository, pid) ⇒ Object
47 48 49 50 51 52 |
# File 'lib/soba/services/session_resolver.rb', line 47 def generate_session_name(repository, pid) raise ArgumentError, "PID cannot be nil" if pid.nil? sanitized_repo = repository.to_s.gsub(/[^a-zA-Z0-9-]/, "-") "soba-#{sanitized_repo}-#{pid}" end |
#resolve_active_session(repository) ⇒ Object
11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 |
# File 'lib/soba/services/session_resolver.rb', line 11 def resolve_active_session(repository) pid = @pid_manager.read return nil unless pid session_name = generate_session_name(repository, pid) if @tmux_manager.session_exists?(session_name) session_name else @pid_manager.delete nil end rescue Errno::ENOENT nil end |