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



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

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



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

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.



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
153
154
155
156
157
158
# File 'lib/iStats/command.rb', line 122

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
    -f, --fahrenheit                     Display temperatures in fahrenheit

    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



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
113
114
115
116
117
# File 'lib/iStats/command.rb', line 84

def parse_options
  options = {:display_graphs => true, :temperature_scale => 'celcius'}

  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

    opts.on('-f', '--fahrenheit', 'Display temperatures in fahrenheit') do
      options[:temperature_scale] = 'fahrenheit'
    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



163
164
165
# File 'lib/iStats/command.rb', line 163

def quit
  exit(1)
end

.setup(options) ⇒ Object

Setup execution by applying global settings

options - command line options



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

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