Module: ShellHelpers::SudoLoop

Extended by:
SudoLoop
Included in:
SudoLoop
Defined in:
lib/shell_helpers/sh.rb

Overview

SudoLoop {{{ extend SudoLoop.configure to run a sudo loop SH.sh("ls /", sudo: "sudo".extend(SH::SudoLoop.configure(**opts))

Instance Method Summary collapse

Instance Method Details

#configure(**opts) ⇒ Object



66
67
68
69
70
71
72
73
74
75
# File 'lib/shell_helpers/sh.rb', line 66

def configure(**opts)
	return Module.new do |m|
		m.define_method(:sudo_loop) do
			SudoLoop.instance_method(:run_sudo_loop).bind(self).call(**opts)
		end
		m.define_method(:stop_sudo_loop) do
			SudoLoop.instance_method(:stop_sudo_loop).bind(self).call
		end
	end
end

#run_sudo_loop(command: "sudo -v", interval: 30, init_command: command) ⇒ Object



77
78
79
80
81
82
83
84
85
86
87
88
89
# File 'lib/shell_helpers/sh.rb', line 77

def run_sudo_loop(command: "sudo -v", interval: 30, init_command: command)
	if @sudo_loop_thread.nil? or !@sudo_loop_thread.alive?
		Sh.sh_or_proc(init_command, log: false)
		#require 'pry'; binding.pry
		@sudo_loop_thread = Thread.new do
			loop do
				Sh.sh_or_proc(command, log: false)
				sleep(interval)
			end
		end
		@sudo_loop_thread.run
	end
end

#stop_sudo_loopObject



91
92
93
# File 'lib/shell_helpers/sh.rb', line 91

def stop_sudo_loop
	@sudo_loop_thread&.kill
end