Class: Rkill::CLI
- Inherits:
-
Object
- Object
- Rkill::CLI
- Defined in:
- lib/rkill/cli.rb
Class Method Summary collapse
Instance Method Summary collapse
- #detect_type ⇒ Object
- #get_processes ⇒ Object
-
#initialize(opts) ⇒ CLI
constructor
A new instance of CLI.
- #run! ⇒ Object
Constructor Details
#initialize(opts) ⇒ CLI
Returns a new instance of CLI.
6 7 8 9 |
# File 'lib/rkill/cli.rb', line 6 def initialize opts @opts = opts.dup.freeze detect_type end |
Class Method Details
.start ⇒ Object
62 63 64 |
# File 'lib/rkill/cli.rb', line 62 def start new(ARGV).run! end |
Instance Method Details
#detect_type ⇒ Object
11 12 13 14 15 16 17 18 |
# File 'lib/rkill/cli.rb', line 11 def detect_type indexes = [] indexes << @regex_index = @opts.find_index {|opt| opt =~ /^\/.+\/[imx]{0,3}$/} indexes << @pcpu_index = @opts.find_index {|opt| opt =~ /^pcpu$/i} indexes << @pmem_index = @opts.find_index {|opt| opt =~ /^pmem$/i} indexes << @mem_index = @opts.find_index {|opt| opt =~ /^mem$/i} @first_index = indexes.compact.min end |
#get_processes ⇒ Object
20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 |
# File 'lib/rkill/cli.rb', line 20 def get_processes return if @first_index.nil? pcpu = eval(@opts[@pcpu_index+1]) if @pcpu_index pmem = eval(@opts[@pmem_index+1]) if @pmem_index mem = eval(@opts[@mem_index+1]) if @mem_index regex = eval(@opts[@regex_index]) if @regex_index processes = regex.nil? ? PS.all : PS(regex) processes = processes.over :pcpu, pcpu if pcpu processes = processes.over :pmem, pmem if pmem processes = processes.over :mem, mem if mem processes end |
#run! ⇒ Object
39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 |
# File 'lib/rkill/cli.rb', line 39 def run! command = BIN.dup << ' ' if @first_index.nil? command << "'#{ARGV.join("' '")}'" else command << "'" << ARGV[0...@first_index].join("' '") << "' " procs = get_processes.choose("Select processes to kill or hit enter to select all:") pids = procs.collect {|proc| proc.pid if proc}.compact abort if pids.empty? command << pids.join(' ') end if Rkill.test puts command else system(command) end end |