class NewlineHw::GuiTrigger

Attributes

editor[R]

Public Class Methods

new(data, config) click to toggle source
# File lib/newline_hw/gui_trigger.rb, line 9
def initialize(data, config)
  @newline_submission_id = data["id"]
  @application = config.terminal
end

Public Instance Methods

application() click to toggle source
# File lib/newline_hw/gui_trigger.rb, line 14
def application
  return "Terminal".freeze unless %w(iTerm2 Terminal).include?(@application)
  @application
end
call() click to toggle source
# File lib/newline_hw/gui_trigger.rb, line 19
def call
  applescript = case application
                when "iTerm2"
                  applescript_for_iterm
                else
                  applescript_for_terminal
  end

  { terminal_output: `osascript -e '#{applescript}'` }
end

Private Instance Methods

applescript_for_iterm() click to toggle source
# File lib/newline_hw/gui_trigger.rb, line 41
            def applescript_for_iterm
      <<-APPLESCRIPT
        tell application \"#{application}\"
          set newWindow to (create window with default profile)

          tell current session of newWindow
            write text "#{command_to_run_in_tty}"
          end tell
        end tell
      APPLESCRIPT
    end
applescript_for_terminal() click to toggle source
# File lib/newline_hw/gui_trigger.rb, line 34
            def applescript_for_terminal
      <<-APPLESCRIPT
        tell application "#{application}" to do script "#{command_to_run_in_tty}"
        tell application "#{application}" to activate
      APPLESCRIPT
    end
command_to_run_in_tty() click to toggle source
# File lib/newline_hw/gui_trigger.rb, line 30
        def command_to_run_in_tty
  "hw #{@newline_submission_id}"
end