Sha256: 9a3c03b140559eff887917d0f7b1a9e195232c9c1acaab03eb6bd0ed3ecb42a1

Contents?: true

Size: 939 Bytes

Versions: 1

Compression:

Stored size: 939 Bytes

Contents

require 'open3'

module LearnOpen
  module Adapters
    class SystemAdapter
      def self.open_editor(editor, path:)
        system("#{editor} .")
      end

      def self.open_login_shell(shell)
        exec("#{shell} -l")
      end

      def self.watch_dir(dir, action)
        spawn("while inotifywait -qre create,delete,move,close_write --exclude \"#{excluded_dirs}\" #{dir}; do #{action}; done")
      end

      def self.spawn(command, block: false)
        pid = Process.spawn(command, [:out, :err] => File::NULL)
        Process.waitpid(pid) if block
      end

      def self.run_command(command)
        system(command)
      end

      def self.run_command_with_capture(command)
        Open3.capture3(command)
      end

      def self.change_context_directory(dir)
        Dir.chdir(dir)
      end

      private

      def self.excluded_dirs
        "(node_modules/|\.git/|\.swp?x?$|~$|4913$)"
      end
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
learn-open-1.2.26 lib/learn_open/adapters/system_adapter.rb