Class: Ace::Tmux::Molecules::RuntimeTargetResolver

Inherits:
Object
  • Object
show all
Defined in:
lib/ace/tmux/molecules/runtime_target_resolver.rb

Instance Method Summary collapse

Constructor Details

#initialize(executor: Ace::Tmux::Molecules::TmuxExecutor.new, tmux: "tmux", env: ENV) ⇒ RuntimeTargetResolver

Returns a new instance of RuntimeTargetResolver.



7
8
9
10
11
# File 'lib/ace/tmux/molecules/runtime_target_resolver.rb', line 7

def initialize(executor: Ace::Tmux::Molecules::TmuxExecutor.new, tmux: "tmux", env: ENV)
  @executor = executor
  @tmux = tmux
  @env = env
end

Instance Method Details

#resolve_pane(session: nil, window: nil, pane: nil) ⇒ Object



50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
# File 'lib/ace/tmux/molecules/runtime_target_resolver.rb', line 50

def resolve_pane(session: nil, window: nil, pane: nil)
  explicit = normalize(pane)
  return build_pane_target(explicit, session: session, window: window, source: "explicit") if explicit

  env_pane = normalize(env["ACE_TMUX_PANE"])
  return build_pane_target(env_pane, session: session, window: window, source: "env") if env_pane

  window_target = resolve_window(session: session, window: window)
  live_pane = resolve_live_pane(window_target.window_target)
  return Models::RuntimeTarget.new(
    session: window_target.session,
    window: window_target.window,
    pane: live_pane,
    raw_window_target: window_target.window_target,
    source: "live"
  ) if live_pane

  raise Ace::Tmux::TargetResolutionError, "Could not resolve tmux pane from flags, ACE_TMUX_PANE, or live tmux context."
end

#resolve_session(session: nil) ⇒ Object



13
14
15
16
17
18
19
20
21
22
23
24
# File 'lib/ace/tmux/molecules/runtime_target_resolver.rb', line 13

def resolve_session(session: nil)
  explicit = normalize(session)
  return Models::RuntimeTarget.new(session: explicit, source: "explicit") if explicit

  env_session = normalize(env["ACE_TMUX_SESSION"])
  return Models::RuntimeTarget.new(session: env_session, source: "env") if env_session

  live_session = resolve_live_session
  return Models::RuntimeTarget.new(session: live_session, source: "live") if live_session

  raise Ace::Tmux::TargetResolutionError, "Could not resolve tmux session from flags, ACE_TMUX_SESSION, or live tmux context."
end

#resolve_window(session: nil, window: nil) ⇒ Object



26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
# File 'lib/ace/tmux/molecules/runtime_target_resolver.rb', line 26

def resolve_window(session: nil, window: nil)
  session_target = resolve_session(session: session)

  explicit_window = normalize(window)
  if explicit_window
    return build_window_target(session: session_target.session, raw_window: explicit_window, source: "explicit")
  end

  env_window = normalize(env["ACE_TMUX_WINDOW"])
  if env_window
    return build_window_target(session: session_target.session, raw_window: env_window, source: "env")
  end

  live_window = resolve_live_window(session: session_target.session)
  return Models::RuntimeTarget.new(
    session: session_target.session,
    window: live_window[:name],
    raw_window_target: live_window[:id],
    source: "live"
  ) if live_window

  raise Ace::Tmux::TargetResolutionError, "Could not resolve tmux window from flags, ACE_TMUX_WINDOW, or live tmux context."
end