#!/opt/dosis2/bin/python3-venv
import re


def patch_grub_cmdline_linux(key, current_value, updates):
    values = dict([v.partition('=')[0:3:2] for v in [v for v in re.split('\s+', current_value) if bool(v)]])
    values.update(updates)
    return '%s="%s"' % (key, ' '.join(['='.join(v) for v in list(values.items())]))


def main():
    with open('/etc/default/grub', 'r') as f:
        data = f.read().split('\n')
    
    newlines = []
    for line in data:
        m = re.match('(GRUB_CMDLINE_LINUX)="(.*)"', line)
        if m:
            newlines.append(patch_grub_cmdline_linux(
                key=m.group(1), 
                current_value=m.group(2),
                updates={
                    'i915.mode': '1',
                    'video': '800x600@60'}))
        else:
            newlines.append(line)
    
    with open('/etc/default/grub', 'w') as f:
        f.write('\n'.join(newlines))

main()
