#!/usr/bin/env python3
from pathlib import Path
import sys
root = Path(__file__).resolve().parents[1]

def read(rel):
    return (root / rel).read_text(encoding='utf-8')

manifest = read('java/com/android/dialer/app/manifests/activities/AndroidManifest.xml')
styles = read('java/com/android/dialer/app/res/values/styles.xml')
colors = read('java/com/android/dialer/app/res/values/lemenzo_settings_colors.xml')
settings = read('java/com/android/dialer/app/settings/DialerSettingsActivity.java')
about_xml = read('java/com/android/dialer/about/res/xml/about_phone_fragment.xml')
about_java = read('java/com/android/dialer/about/AboutPhoneFragment.java')
about_strings = read('java/com/android/dialer/about/res/values/strings.xml')

checks = {
    'dedicated Lemenzo settings theme': '@style/LemenzoPhoneSettingsStyle' in manifest,
    'dark settings background': '#08090C' in colors,
    'raised navy settings surface': '#121C29' in colors,
    'Lemenzo blue accent': '#3F7CFF' in colors,
    'blue-tinted secondary text': '#B9D5FF' in colors,
    'shared premium header adapter': 'LemenzoHeaderAdapter' in settings and 'lemenzo_settings_blue_outline' in settings,
    'settings actionbar branded': 'LemenzoPhoneSettingsActionBarStyle' in styles,
    'retention dialog branded': 'LemenzoPhoneSettingsDialogStyle' in styles,
    'About branded hero': '@layout/lemenzo_about_header' in about_xml,
    'About public version 1.0': 'lemenzo_phone_public_version' in about_java and '>1.0<' in about_strings,
    'About LemenzoOS platform': 'lemenzo_phone_platform' in about_xml,
    'Google policy URLs removed': 'google.com/policies' not in '\n'.join(p.read_text(errors='ignore') for p in (root/'java/com/android/dialer/about').rglob('*') if p.is_file()),
    'About title brand-stable': 'lemenzo_about_phone_label' in settings,
    'settings text selector names do not collide with scalar colors': not (root/'java/com/android/dialer/app/res/color/lemenzo_settings_text_primary.xml').exists() and not (root/'java/com/android/dialer/app/res/color/lemenzo_settings_text_secondary.xml').exists(),
}
failed = [k for k,v in checks.items() if not v]
if failed:
    print('LEMENZO PHONE SETTINGS DESIGN VALIDATION: FAIL')
    for k in failed: print(' -', k)
    sys.exit(1)
print('LEMENZO PHONE SETTINGS DESIGN VALIDATION: PASS')
for k in checks: print(' -', k)
