#!/usr/bin/env python3

# convert ioreg output to json
import subprocess
import json


def parse_line(line):
	key, value = line.split('=', 1)
	key = key.strip().strip('"')
	value = value.strip().replace('Yes', 'true').replace('No', 'false')
	if value.endswith(','):
		value = value[:-1]
	return f'"{key}": {value}'


def convert_ioreg_to_json():
	command = ['ioreg', '-w', '0', '-f', '-r', '-c', 'AppleSmartBattery']
	output = subprocess.run(command, stdout=subprocess.PIPE, text=True).stdout.strip().split('\n')

	json_lines = [parse_line(line) for line in output if '=' in line]
	json_data = '{\n' + ',\n'.join(json_lines) + '\n}'
	try:
		output = json.loads(json_data)
	except json.decoder.JSONDecodeError as e:
		print('Error decoding json')
		print('json_data:\n')
		print(json_data)

	return output


data_dict = convert_ioreg_to_json()
json_data_formatted = json.dumps(data_dict, indent=2)
print(json_data_formatted)
