Class: IStats::Command

Inherits:
Object
  • Object
show all
Extended by:
Color
Defined in:
lib/iStats/command.rb

Overview

Main point of entry for istats command-line tool

Constant Summary

Constants included from Color

IStats::Color::CODES

Class Method Summary collapse

Methods included from Color

colorize, included

Class Method Details

.allObject

Execute all the stats methodes for all modules



63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
# File 'lib/iStats/command.rb', line 63

def all
  puts "--- CPU Stats ---\n"
  Cpu.all
  puts "\n--- Fan Stats ---\n"
  Fan.all
  puts "\n--- Battery Stats ---\n"
  Battery.all

  sensors = $config.params
  if sensors.keys.any? {|key| sensors[key]['enabled'] == "1"}
    puts "\n--- Extra Stats ---\n"
    Extra.all
  else
    puts "\nFor more stats run `istats extra` and follow the instructions."
  end
end

.delegate(category, stat, options) ⇒ Object

Delegate command to proper class

category - Hardware we are targeting (CPU, fan, etc.) stat - The stat we want



36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
# File 'lib/iStats/command.rb', line 36

def delegate(category, stat, options)
  case category
  when 'all'
    all
  when 'cpu'
    Cpu.delegate stat
  when 'fan'
    Fan.delegate stat
  when 'battery'
    Battery.delegate stat
  when 'extra'
    Extra.delegate stat
  when 'scan'
    SMC.delegate stat
  when 'enable'
    Settings.delegate ['enable',stat]
  when 'disable'
    Settings.delegate ['disable',stat]
  when 'list'
    Settings.list
  else
    help("Unknown category: #{category}")
  end
end

.executeObject

Executes a command



9
10
11
12
13
14
15
16
17
18
19
20
21
# File 'lib/iStats/command.rb', line 9

def execute
  Settings.load

  options = parse_options

  # Default command is 'all'
  category = ARGV.empty? ? 'all' : ARGV.shift
  stat     = ARGV.empty? ? 'all' : ARGV.shift

  setup options

  delegate(category, stat, options)
end

.help(error = nil) ⇒ Object

Public: Prints help.

Returns nothing.



117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
# File 'lib/iStats/command.rb', line 117

def help(error = nil)
  text =
  " #{error.nil? ? '' : red("\n[Error] #{error}\n")}
    - iStats: help ---------------------------------------------------

    istats --help                        This help text
    istats --version                     Print current version

    # Commands
    istats all                           Print all stats
    istats cpu                           Print all CPU stats
    istats cpu [temp | temperature]      Print CPU temperature
    istats fan                           Print all fan stats
    istats fan [speed]                   Print fan speed
    istats battery                       Print all battery stats
    istats battery [health]              Print battery health
    istats battery [time | remain]       Print battery time remaining
    istats battery [cycle_count | cc]    Print battery cycle count info
    istats battery [temp | temperature]  Print battery temperature
    istats battery [charge]              Print battery charge
    istats battery [capacity]            Print battery capacity info

    istats scan                          Scans and print temperatures
    istats scan [key]                    Print single SMC temperature key
    istats enable [key | all]            Enables key
    istats disable [key | all]           Disable key
    istats list                          List available keys

    # Arguments
    --no-graphs                          Don't display sparklines graphs

    for more help see: https://github.com/Chris911/iStats
  ".gsub(/^ {8}/, '') # strip the first eight spaces of every line

  puts text
end

.parse_optionsObject

Public: Parse extra options

returns nothing



83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
# File 'lib/iStats/command.rb', line 83

def parse_options
  options = {:display_graphs => true}

  opt_parser = OptionParser.new do |opts|
    opts.on('-v', '--version', 'Print Version') do
      puts "iStats v#{IStats::VERSION}"
      quit
    end

    opts.on('-h', '--help', 'Print Help') do
      help
      quit
    end

    opts.on('--no-graphs', 'Don\'t display graphs') do
      options[:display_graphs] = false
    end
  end

  begin
    opt_parser.parse!
    options
  rescue OptionParser::MissingArgument => e
    help e.message
    quit
  rescue OptionParser::InvalidOption => e
    help e.message
    quit
  end
end

.quitObject

Public: Quit / Exit program

Returns nothing



157
158
159
# File 'lib/iStats/command.rb', line 157

def quit
  exit(1)
end

.setup(options) ⇒ Object

Setup execution by applying global settings

options - command line options



27
28
29
# File 'lib/iStats/command.rb', line 27

def setup(options)
  Printer.disable_graphs unless options[:display_graphs]
end