iStats 0.0.4 → 0.0.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/Gemfile.lock +1 -1
- data/README.md +21 -12
- data/ext/osx_stats/extconf.rb +1 -1
- data/ext/osx_stats/smc.c +131 -32
- data/ext/osx_stats/smc.h +8 -1
- data/lib/iStats.rb +1 -0
- data/lib/iStats/battery.rb +79 -0
- data/lib/iStats/command.rb +17 -1
- data/lib/iStats/cpu.rb +10 -2
- data/lib/iStats/fan.rb +21 -4
- data/lib/iStats/version.rb +1 -1
- metadata +3 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: e4b51e404e967587290c2dffb093f7703ab1440f
|
4
|
+
data.tar.gz: d4c35add73857760cbcd18a1f3bd6c23f53f3373
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 7d2a747930f420134915c961db00568d8bb17bc3b64bdad0ba7a371e7f4fc27460572c69a0a602202eb063d21caeb043375cdb48f89ebba3d0fd2f9feb1a9c4c
|
7
|
+
data.tar.gz: bcb29f420afbd849737bc859772a332df2e6d796c8f89184716ccb3be3a793035d19cd0011e577d4e902f62caf3d28ab48703de7d6ccf1b612fa726559b4cba6
|
data/Gemfile.lock
CHANGED
data/README.md
CHANGED
@@ -1,33 +1,42 @@
|
|
1
|
-
iStats
|
1
|
+
iStats [](http://badge.fury.io/rb/iStats)
|
2
2
|
======
|
3
3
|
|
4
|
-
Quick attempt at writing a Ruby wrapper for a small C library that interacts with the IOKit library (apple) to get the CPU temperature. Will expand to more hardware data and stats in the future.
|
4
|
+
Quick attempt at writing a Ruby wrapper for a small C library that interacts with the IOKit library (apple) to get the CPU temperature and fan speed. Will expand to more hardware data and stats in the future.
|
5
|
+
|
6
|
+
#### Warning
|
7
|
+
A [bug in Ruby](https://bugs.ruby-lang.org/issues/9624) and Apple XCode 5.1 onwards (new CLANG version) might make it impossible to install this gem if you are using Ruby from the Xcode command-line tools package. If you are using RVM or homebrew to manage your Ruby installation you should be fine.
|
5
8
|
|
6
9
|
#### Tested on
|
7
10
|
MacBook Pro 2012<br>
|
8
11
|
OS X 10.9.2<br>
|
9
12
|
Ruby: 1.9.3, 2.0.0, 2.1.1<br>
|
10
13
|
|
11
|
-
## Screenshot
|
12
|
-

|
13
|
-
|
14
14
|
## Installation
|
15
15
|
|
16
16
|
$ gem install iStats
|
17
17
|
|
18
|
+
## Screenshot
|
19
|
+
#### All Stats
|
20
|
+

|
21
|
+
|
22
|
+
#### Sparkline levels
|
23
|
+

|
24
|
+
|
18
25
|
## Usage
|
19
26
|
|
20
27
|
```
|
21
|
-
|
28
|
+
- iStats: help ---------------------------------------------------
|
22
29
|
|
23
|
-
|
24
|
-
|
30
|
+
istats --help This help text
|
31
|
+
istats --version Print current version
|
25
32
|
|
26
|
-
|
27
|
-
|
28
|
-
|
33
|
+
istats all Print all stats
|
34
|
+
istats cpu Print all CPU stats
|
35
|
+
istats cpu [temp | temperature] Print CPU temperature
|
36
|
+
istats fan Print all fan stats
|
37
|
+
istats fan [speed] Print fan speed
|
29
38
|
|
30
|
-
|
39
|
+
for more help see: https://github.com/Chris911/iStats
|
31
40
|
```
|
32
41
|
|
33
42
|
## Contributing
|
data/ext/osx_stats/extconf.rb
CHANGED
data/ext/osx_stats/smc.c
CHANGED
@@ -205,53 +205,152 @@ int SMCGetFanNumber(char *key)
|
|
205
205
|
return _strtoul((char *)val.bytes, val.dataSize, 10);
|
206
206
|
}
|
207
207
|
|
208
|
-
|
209
|
-
|
210
|
-
|
211
|
-
|
212
|
-
|
213
|
-
|
214
|
-
//
|
215
|
-
|
216
|
-
|
217
|
-
|
218
|
-
// }
|
208
|
+
/* Battery info
|
209
|
+
* Ref: http://www.newosxbook.com/src.jl?tree=listings&file=bat.c
|
210
|
+
* https://developer.apple.com/library/mac/documentation/IOKit/Reference/IOPowerSources_header_reference/Reference/reference.html
|
211
|
+
*/
|
212
|
+
void dumpDict (CFDictionaryRef Dict)
|
213
|
+
{
|
214
|
+
// Helper function to just dump a CFDictioary as XML
|
215
|
+
CFDataRef xml = CFPropertyListCreateXMLData(kCFAllocatorDefault, (CFPropertyListRef)Dict);
|
216
|
+
if (xml) { write(1, CFDataGetBytePtr(xml), CFDataGetLength(xml)); CFRelease(xml); }
|
217
|
+
}
|
219
218
|
|
220
|
-
|
221
|
-
|
222
|
-
|
219
|
+
CFDictionaryRef powerSourceInfo(int Debug)
|
220
|
+
{
|
221
|
+
CFTypeRef powerInfo;
|
222
|
+
CFArrayRef powerSourcesList;
|
223
|
+
CFDictionaryRef powerSourceInformation;
|
224
|
+
|
225
|
+
powerInfo = IOPSCopyPowerSourcesInfo();
|
226
|
+
|
227
|
+
if(! powerInfo) return NULL;
|
228
|
+
|
229
|
+
powerSourcesList = IOPSCopyPowerSourcesList(powerInfo);
|
230
|
+
if(!powerSourcesList) {
|
231
|
+
CFRelease(powerInfo);
|
232
|
+
return NULL;
|
233
|
+
}
|
234
|
+
|
235
|
+
// Should only get one source. But in practice, check for > 0 sources
|
236
|
+
if (CFArrayGetCount(powerSourcesList))
|
237
|
+
{
|
238
|
+
powerSourceInformation = IOPSGetPowerSourceDescription(powerInfo, CFArrayGetValueAtIndex(powerSourcesList, 0));
|
239
|
+
|
240
|
+
if (Debug) dumpDict (powerSourceInformation);
|
241
|
+
|
242
|
+
//CFRelease(powerInfo);
|
243
|
+
//CFRelease(powerSourcesList);
|
244
|
+
return powerSourceInformation;
|
245
|
+
}
|
246
|
+
|
247
|
+
CFRelease(powerInfo);
|
248
|
+
CFRelease(powerSourcesList);
|
249
|
+
return NULL;
|
250
|
+
}
|
251
|
+
|
252
|
+
int getDesignCycleCount() {
|
253
|
+
CFDictionaryRef powerSourceInformation = powerSourceInfo(0);
|
254
|
+
|
255
|
+
if(powerSourceInformation == NULL)
|
256
|
+
return 0;
|
257
|
+
|
258
|
+
CFNumberRef designCycleCountRef = (CFNumberRef) CFDictionaryGetValue(powerSourceInformation, CFSTR("DesignCycleCount"));
|
259
|
+
uint32_t designCycleCount;
|
260
|
+
if ( ! CFNumberGetValue(designCycleCountRef, // CFNumberRef number,
|
261
|
+
kCFNumberSInt32Type, // CFNumberType theType,
|
262
|
+
&designCycleCount)) // void *valuePtr);
|
263
|
+
return 0;
|
264
|
+
else
|
265
|
+
return designCycleCount;
|
266
|
+
}
|
267
|
+
|
268
|
+
const char* getBatteryHealth() {
|
269
|
+
CFDictionaryRef powerSourceInformation = powerSourceInfo(0);
|
270
|
+
|
271
|
+
if(powerSourceInformation == NULL)
|
272
|
+
return "Unknown";
|
273
|
+
|
274
|
+
CFStringRef batteryHealthRef = (CFStringRef) CFDictionaryGetValue(powerSourceInformation, CFSTR("BatteryHealth"));
|
275
|
+
|
276
|
+
const char *batteryHealth = CFStringGetCStringPtr(batteryHealthRef, // CFStringRef theString,
|
277
|
+
kCFStringEncodingMacRoman); //CFStringEncoding encoding);
|
278
|
+
return batteryHealth;
|
279
|
+
}
|
280
|
+
|
281
|
+
/*
|
282
|
+
RUBY MODULES
|
283
|
+
*/
|
223
284
|
VALUE CPU_STATS = Qnil;
|
224
285
|
VALUE FAN_STATS = Qnil;
|
286
|
+
VALUE BATTERY_STATS = Qnil;
|
287
|
+
/*
|
288
|
+
* Define Ruby modules and associated methods
|
289
|
+
* We never call this, Ruby does.
|
290
|
+
*/
|
225
291
|
void Init_osx_stats() {
|
226
|
-
|
227
|
-
|
292
|
+
CPU_STATS = rb_define_module("CPU_STATS");
|
293
|
+
rb_define_method(CPU_STATS, "get_cpu_temp", method_get_cpu_temp, 0);
|
294
|
+
|
295
|
+
FAN_STATS = rb_define_module("FAN_STATS");
|
296
|
+
rb_define_method(FAN_STATS, "get_fan_number", method_get_fan_number, 0);
|
297
|
+
rb_define_method(FAN_STATS, "get_fan_speed", method_get_fan_speed, 1);
|
228
298
|
|
229
|
-
|
230
|
-
|
231
|
-
|
299
|
+
BATTERY_STATS = rb_define_module("BATTERY_STATS");
|
300
|
+
rb_define_method(BATTERY_STATS, "get_battery_health", method_get_battery_health, 0);
|
301
|
+
rb_define_method(BATTERY_STATS, "get_battery_design_cycle_count", method_get_battery_design_cycle_count, 0);
|
232
302
|
}
|
233
303
|
|
234
304
|
VALUE method_get_cpu_temp(VALUE self) {
|
235
|
-
|
236
|
-
|
237
|
-
|
305
|
+
SMCOpen();
|
306
|
+
double temp = SMCGetTemperature(SMC_KEY_CPU_TEMP);
|
307
|
+
SMCClose();
|
238
308
|
|
239
|
-
|
309
|
+
return rb_float_new(temp);
|
240
310
|
}
|
241
311
|
|
242
312
|
VALUE method_get_fan_number(VALUE self) {
|
243
|
-
|
244
|
-
|
245
|
-
|
313
|
+
SMCOpen();
|
314
|
+
int num = SMCGetFanNumber(SMC_KEY_FAN_NUM);
|
315
|
+
SMCClose();
|
246
316
|
|
247
|
-
|
317
|
+
return INT2NUM(num);
|
248
318
|
}
|
249
319
|
|
250
320
|
VALUE method_get_fan_speed(VALUE self, VALUE num) {
|
251
|
-
|
252
|
-
|
253
|
-
|
254
|
-
|
321
|
+
uint fanNum = NUM2UINT(num);
|
322
|
+
SMCOpen();
|
323
|
+
float speed = SMCGetFanSpeed(fanNum);
|
324
|
+
SMCClose();
|
255
325
|
|
256
|
-
|
326
|
+
return rb_float_new(speed);
|
257
327
|
}
|
328
|
+
|
329
|
+
VALUE method_get_battery_health(VALUE self) {
|
330
|
+
const char* health = getBatteryHealth();
|
331
|
+
return rb_str_new2(health);
|
332
|
+
}
|
333
|
+
|
334
|
+
VALUE method_get_battery_design_cycle_count(VALUE self) {
|
335
|
+
int cc = getDesignCycleCount();
|
336
|
+
return INT2NUM(cc);
|
337
|
+
}
|
338
|
+
|
339
|
+
/* Main method used for test */
|
340
|
+
// int main(int argc, char *argv[])
|
341
|
+
// {
|
342
|
+
// //SMCOpen();
|
343
|
+
// //printf("%0.1f°C\n", SMCGetTemperature(SMC_KEY_CPU_TEMP));
|
344
|
+
// //printf("%0.1f\n", SMCGetFanSpeed(0));
|
345
|
+
// //printf("%0.1f\n", SMCGetFanSpeed(3));
|
346
|
+
// //printf("%i\n", SMCGetFanNumber(SMC_KEY_FAN_NUM));
|
347
|
+
// //SMCClose();
|
348
|
+
//
|
349
|
+
// int designCycleCount = getDesignCycleCount();
|
350
|
+
// const char* batteryHealth = getBatteryHealth();
|
351
|
+
//
|
352
|
+
// if (designCycleCount) printf ("%i\n", designCycleCount);
|
353
|
+
// if (batteryHealth) printf ("%s\n", batteryHealth);
|
354
|
+
//
|
355
|
+
// return 0;
|
356
|
+
// }
|
data/ext/osx_stats/smc.h
CHANGED
@@ -20,6 +20,7 @@
|
|
20
20
|
#ifndef __SMC_H__
|
21
21
|
#define __SMC_H__
|
22
22
|
#include "ruby.h"
|
23
|
+
#include <CoreFoundation/CoreFoundation.h>
|
23
24
|
#endif
|
24
25
|
|
25
26
|
#define VERSION "0.01"
|
@@ -90,14 +91,20 @@ typedef struct {
|
|
90
91
|
SMCBytes_t bytes;
|
91
92
|
} SMCVal_t;
|
92
93
|
|
93
|
-
|
94
94
|
// prototypes
|
95
95
|
float SMCGetFanSpeed(int fanNum);
|
96
96
|
int SMCGetFanNumber(char *key);
|
97
97
|
double SMCGetTemperature(char *key);
|
98
|
+
const char* getBatteryHealth();
|
99
|
+
int getDesignCycleCount();
|
100
|
+
CFTypeRef IOPSCopyPowerSourcesInfo(void);
|
101
|
+
CFArrayRef IOPSCopyPowerSourcesList(CFTypeRef blob);
|
102
|
+
CFDictionaryRef IOPSGetPowerSourceDescription(CFTypeRef blob, CFTypeRef ps);
|
98
103
|
|
99
104
|
// Ruby modules
|
100
105
|
void Init_osx_stats();
|
101
106
|
VALUE method_get_cpu_temp(VALUE self);
|
102
107
|
VALUE method_get_fan_speed(VALUE self, VALUE num);
|
103
108
|
VALUE method_get_fan_number(VALUE self);
|
109
|
+
VALUE method_get_battery_health(VALUE self);
|
110
|
+
VALUE method_get_battery_design_cycle_count(VALUE self);
|
data/lib/iStats.rb
CHANGED
@@ -0,0 +1,79 @@
|
|
1
|
+
# Fan Stats
|
2
|
+
# Extend BATTERY_STATS C module (ext/osx_stats/smc.c)
|
3
|
+
#
|
4
|
+
module IStats
|
5
|
+
class Battery
|
6
|
+
extend BATTERY_STATS
|
7
|
+
class << self
|
8
|
+
include IStats::Color
|
9
|
+
|
10
|
+
# Delegate CLI command to function
|
11
|
+
#
|
12
|
+
def delegate(stat)
|
13
|
+
case stat
|
14
|
+
when 'all'
|
15
|
+
all
|
16
|
+
when 'health'
|
17
|
+
battery_health
|
18
|
+
when 'cycle_count', 'cc'
|
19
|
+
cycle_count
|
20
|
+
else
|
21
|
+
Command.help "Unknown stat for Battery: #{stat}"
|
22
|
+
end
|
23
|
+
end
|
24
|
+
|
25
|
+
# Call all functions (stats)
|
26
|
+
#
|
27
|
+
def all
|
28
|
+
battery_health
|
29
|
+
cycle_count
|
30
|
+
end
|
31
|
+
|
32
|
+
# Prints the battery cycle count info
|
33
|
+
#
|
34
|
+
def cycle_count
|
35
|
+
data = %x( ioreg -l | grep Capacity )
|
36
|
+
cycle_count = data[/"Cycle Count"=([0-9]*)/, 1]
|
37
|
+
if cycle_count == nil
|
38
|
+
puts "Cycle count: unknown"
|
39
|
+
else
|
40
|
+
max_cycle_count = design_cycle_count
|
41
|
+
percentage = (cycle_count.to_f/max_cycle_count.to_f)*100
|
42
|
+
|
43
|
+
list = [0, 30, 55, 80, 100, 130]
|
44
|
+
sparkline = Sparkr.sparkline(list) do |tick, count, index|
|
45
|
+
if index.between?(0, 5) and percentage > 95
|
46
|
+
flash_red(tick)
|
47
|
+
elsif index.between?(0, 1)
|
48
|
+
green(tick)
|
49
|
+
elsif index.between?(2, 3) and percentage > 45
|
50
|
+
light_yellow(tick)
|
51
|
+
elsif index == 4 and percentage > 65
|
52
|
+
yellow(tick)
|
53
|
+
elsif index == 5 and percentage > 85
|
54
|
+
red(tick)
|
55
|
+
else
|
56
|
+
tick
|
57
|
+
end
|
58
|
+
end
|
59
|
+
puts "Cycle count: #{cycle_count} " + sparkline
|
60
|
+
puts "Max cycle count: #{max_cycle_count}"
|
61
|
+
end
|
62
|
+
end
|
63
|
+
|
64
|
+
# Get the battery health
|
65
|
+
# Calls a C method from BATTERY_STATS module
|
66
|
+
#
|
67
|
+
def battery_health
|
68
|
+
puts "Battery health: #{get_battery_health}"
|
69
|
+
end
|
70
|
+
|
71
|
+
# Get the battery design cycle count
|
72
|
+
# Calls a C method from BATTERY_STATS module
|
73
|
+
#
|
74
|
+
def design_cycle_count
|
75
|
+
get_battery_design_cycle_count
|
76
|
+
end
|
77
|
+
end
|
78
|
+
end
|
79
|
+
end
|
data/lib/iStats/command.rb
CHANGED
@@ -4,6 +4,10 @@ module IStats
|
|
4
4
|
class << self
|
5
5
|
include IStats::Color
|
6
6
|
|
7
|
+
# Executes a command
|
8
|
+
#
|
9
|
+
# args - Command line arguments
|
10
|
+
#
|
7
11
|
def execute(*args)
|
8
12
|
# Default command is 'all'
|
9
13
|
category = args.empty? ? 'all' : args.shift
|
@@ -13,6 +17,11 @@ module IStats
|
|
13
17
|
delegate(category, stat)
|
14
18
|
end
|
15
19
|
|
20
|
+
# Delegate command to proper class
|
21
|
+
#
|
22
|
+
# category - Hardware we are targeting (CPU, fan, etc.)
|
23
|
+
# stat - The stat we want
|
24
|
+
#
|
16
25
|
def delegate(category, stat)
|
17
26
|
case category
|
18
27
|
when 'all'
|
@@ -21,17 +30,22 @@ module IStats
|
|
21
30
|
Cpu.delegate stat
|
22
31
|
when 'fan'
|
23
32
|
Fan.delegate stat
|
33
|
+
when 'battery'
|
34
|
+
Battery.delegate stat
|
24
35
|
else
|
25
36
|
help("Unknown category: #{category}")
|
26
37
|
end
|
27
38
|
end
|
28
39
|
|
40
|
+
# Execute all the stats methodes for all modules
|
41
|
+
#
|
29
42
|
def all
|
30
|
-
# Exec all
|
31
43
|
puts "--- CPU Stats ---\n"
|
32
44
|
Cpu.all
|
33
45
|
puts "\n--- Fan Stats ---\n"
|
34
46
|
Fan.all
|
47
|
+
puts "\n--- Battery Stats ---\n"
|
48
|
+
Battery.all
|
35
49
|
end
|
36
50
|
|
37
51
|
# Public: Parse extra options
|
@@ -75,6 +89,8 @@ module IStats
|
|
75
89
|
istats cpu [temp | temperature] Print CPU temperature
|
76
90
|
istats fan Print all fan stats
|
77
91
|
istats fan [speed] Print fan speed
|
92
|
+
istats battery [health] Print battery health
|
93
|
+
istats battery [cycleCount | cc] Print battery cycle count info
|
78
94
|
|
79
95
|
for more help see: https://github.com/Chris911/iStats
|
80
96
|
".gsub(/^ {8}/, '') # strip the first eight spaces of every line
|
data/lib/iStats/cpu.rb
CHANGED
@@ -1,11 +1,14 @@
|
|
1
|
+
# CPU Stats
|
2
|
+
# Extend CPU_STATS C module (ext/osx_stats/smc.c)
|
3
|
+
#
|
1
4
|
module IStats
|
2
|
-
# CPU Stats
|
3
|
-
# Extend CPU_STATS C module (ext/osx_stats/smc.c)
|
4
5
|
class Cpu
|
5
6
|
extend CPU_STATS
|
6
7
|
class << self
|
7
8
|
include IStats::Color
|
8
9
|
|
10
|
+
# Delegate CLI command to function
|
11
|
+
#
|
9
12
|
def delegate(stat)
|
10
13
|
case stat
|
11
14
|
when 'all'
|
@@ -17,10 +20,15 @@ module IStats
|
|
17
20
|
end
|
18
21
|
end
|
19
22
|
|
23
|
+
# Call all functions (stats)
|
24
|
+
#
|
20
25
|
def all
|
21
26
|
cpu_temperature
|
22
27
|
end
|
23
28
|
|
29
|
+
# Print CPU temperature with sparkline
|
30
|
+
# TODO: Move sparkline function to printer class
|
31
|
+
#
|
24
32
|
def cpu_temperature
|
25
33
|
t = get_cpu_temp
|
26
34
|
message = "CPU temp: #{t}#{Symbols.degree}C "
|
data/lib/iStats/fan.rb
CHANGED
@@ -1,11 +1,14 @@
|
|
1
|
+
# Fan Stats
|
2
|
+
# Extend FAN_STATS C module (ext/osx_stats/smc.c)
|
3
|
+
#
|
1
4
|
module IStats
|
2
|
-
# Fan Stats
|
3
|
-
# Extend FAN_STATS C module (ext/osx_stats/smc.c)
|
4
5
|
class Fan
|
5
6
|
extend FAN_STATS
|
6
7
|
class << self
|
7
8
|
include IStats::Color
|
8
9
|
|
10
|
+
# Delegate CLI command to function
|
11
|
+
#
|
9
12
|
def delegate(stat)
|
10
13
|
case stat
|
11
14
|
when 'all'
|
@@ -19,20 +22,28 @@ module IStats
|
|
19
22
|
end
|
20
23
|
end
|
21
24
|
|
25
|
+
# Call all functions (stats)
|
26
|
+
#
|
22
27
|
def all
|
23
28
|
print_fan_number
|
24
29
|
fans_speed
|
25
30
|
end
|
26
31
|
|
32
|
+
# Get the number of fans on system
|
33
|
+
# Calls a C method from FAN_STATS module
|
34
|
+
#
|
27
35
|
def fan_number
|
28
|
-
# C method
|
29
36
|
get_fan_number
|
30
37
|
end
|
31
38
|
|
39
|
+
# Print number of fan(s)
|
40
|
+
#
|
32
41
|
def print_fan_number
|
33
|
-
puts "Total fans
|
42
|
+
puts "Total fans in system: #{fan_number}"
|
34
43
|
end
|
35
44
|
|
45
|
+
# Get and print the speed of each fan
|
46
|
+
#
|
36
47
|
def fans_speed
|
37
48
|
fanNum = fan_number
|
38
49
|
(0..(fanNum-1)).each do |n|
|
@@ -41,6 +52,12 @@ module IStats
|
|
41
52
|
end
|
42
53
|
end
|
43
54
|
|
55
|
+
# Actually print fan speed with Sparkline
|
56
|
+
# TODO: Move sparkline function to printer class
|
57
|
+
#
|
58
|
+
# fanNum - The fan number
|
59
|
+
# speed - Fan speed in RPM
|
60
|
+
#
|
44
61
|
def print_fan_speed(fanNum, speed)
|
45
62
|
message = "Fan #{fanNum} speed: #{speed} RPM "
|
46
63
|
list = [0, 30, 55, 80, 100, 130]
|
data/lib/iStats/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: iStats
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.5
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Chris911
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2014-04-
|
11
|
+
date: 2014-04-19 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: sparkr
|
@@ -87,6 +87,7 @@ files:
|
|
87
87
|
- ext/osx_stats/smc.h
|
88
88
|
- iStats.gemspec
|
89
89
|
- lib/iStats.rb
|
90
|
+
- lib/iStats/battery.rb
|
90
91
|
- lib/iStats/color.rb
|
91
92
|
- lib/iStats/command.rb
|
92
93
|
- lib/iStats/cpu.rb
|