+#!/usr/bin/env python
+
+import itertools
+import subprocess
+import re
+import sys
+
+# Run ioreg to get the battery status line
+classes = ["AppleSmartBattery", "IOBatteryInfo"]
+cmd = ["ioreg", "-w0", "-r", "-c"]
+iterables = []
+for klass in classes:
+ p = subprocess.Popen(args=cmd + [klass], stdout=subprocess.PIPE)
+ iterables.append(p.stdout)
+
+lines = []
+for line in itertools.chain(*iterables):
+ if line.startswith("+"):
+ continue
+ line = line.strip()
+ if line.find("=") >= 0:
+ line = line.replace("Yes", "True").replace("No", "False")
+ line = line.replace("=", ":")
+ if line.find("<") >= 0:
+ line = line.replace("<", "'<").replace(">", ">'")
+ line += ","
+ lines.append(line)
+exec "data = " + "\n".join(lines)
+
+
+fields = [
+ "Current",
+ "Capacity",
+ "Capacity%",
+ "Cycle Count",
+
+ "CurrentCapacity",
+ "MaxCapacity",
+ "DesignCapacity",
+ "CycleCount",
+ "DesignCycleCount",
+]
+for field in fields:
+ if data.has_key(field):
+ print (field+":").ljust(3+max(map(len, fields))),
+ print data[field]
+
+