Class: Utils::ConfigFile::SshTunnel

Inherits:
BlockConfig show all
Defined in:
lib/utils/config_file.rb

Overview

SSH tunnel configuration manager

Provides functionality for configuring and managing SSH tunnels with support for different terminal multiplexers like tmux and screen. Allows setting up tunnel specifications with local and remote address/port combinations, handling environment variables, and managing copy/paste functionality for tunnel sessions.

Defined Under Namespace

Classes: CopyPaste

Instance Method Summary collapse

Methods inherited from BlockConfig

config, inherited, #to_ruby

Constructor Details

#initializeSshTunnel

The initialize method sets up the instance by calling the superclass constructor and assigning the terminal multiplexer configuration.



537
538
539
540
# File 'lib/utils/config_file.rb', line 537

def initialize
  super
  self.terminal_multiplexer = terminal_multiplexer
end

Instance Method Details

#copy_paste(enable = false) {|block| ... } ⇒ CopyPaste?

The copy_paste method manages the copy-paste functionality by returning an existing instance or creating a new one.

This method checks if a copy-paste instance already exists and returns it if available. If no instance exists, it creates a new one based on whether a block is provided or the enable flag is set to true.

instance, or nil if not enabled

Parameters:

  • enable (TrueClass, FalseClass) (defaults to: false)

    flag to enable copy-paste functionality

Yields:

  • (block)

    optional block to initialize the copy-paste instance

Returns:

  • (CopyPaste, nil)

    the existing or newly created copy-paste



669
670
671
672
673
674
675
676
677
678
679
# File 'lib/utils/config_file.rb', line 669

def copy_paste(enable = false, &block)
  if @copy_paste
    @copy_paste
  else
    if block
      @copy_paste = CopyPaste.new(&block)
    elsif enable
      @copy_paste = CopyPaste.new {}
    end
  end
end

#multiplexer_attach(session) ⇒ String

The multiplexer_attach method generates a command string for attaching to a session using either screen or tmux multiplexer.

Parameters:

  • session (String)

    the name or identifier of the session to attach to

Returns:

  • (String)

    a formatted command string ready for execution



594
595
596
597
598
599
600
601
# File 'lib/utils/config_file.rb', line 594

def multiplexer_attach(session)
  case @multiplexer
  when 'screen'
    'screen -DUR "%s"' % session
  when 'tmux'
    'tmux -u attach -d -t "%s"' % session
  end
end

#multiplexer_listString?

The multiplexer_list method returns the appropriate command string for listing sessions based on the current multiplexer type.

Returns:

  • (String, nil)

    the command string to list sessions for the configured multiplexer (‘screen -ls’ or ‘tmux ls’), or nil if no multiplexer is set



563
564
565
566
567
568
569
570
# File 'lib/utils/config_file.rb', line 563

def multiplexer_list
  case @multiplexer
  when 'screen'
    'screen -ls'
  when 'tmux'
    'tmux ls'
  end
end

#multiplexer_new(session) ⇒ String?

The multiplexer_new method generates a command string for creating a new session in the specified terminal multiplexer.

Parameters:

  • session (String)

    the name of the session to be created

Returns:

  • (String, nil)

    a command string for creating a new session in screen or tmux, or nil if the multiplexer type is not supported



579
580
581
582
583
584
585
586
# File 'lib/utils/config_file.rb', line 579

def multiplexer_new(session)
  case @multiplexer
  when 'screen'
    'false'
  when 'tmux'
    'tmux -u new -s "%s"' % session
  end
end

#terminal_multiplexer=(terminal_multiplexer) ⇒ Object

The terminal_multiplexer= method sets the terminal multiplexer type for the editor.

This method assigns the specified terminal multiplexer to the editor configuration, validating that it is either ‘screen’ or ‘tmux’. It converts the input to a string and ensures it matches one of the supported multiplexer types.

be configured

Parameters:

  • terminal_multiplexer (Symbol)

    the terminal multiplexer type to



552
553
554
555
556
# File 'lib/utils/config_file.rb', line 552

def terminal_multiplexer=(terminal_multiplexer)
  @multiplexer = terminal_multiplexer.to_s
  @multiplexer =~ /\A(screen|tmux)\z/ or
    fail "invalid terminal_multiplexer #{terminal_multiplexer.inspect} was configured"
end