64 lines
2.5 KiB
Python
64 lines
2.5 KiB
Python
#!/usr/bin/env python3
|
|
'''One-shot sweep: replace custom ui helpers with gpui-kit tokens.'''
|
|
|
|
import pathlib
|
|
|
|
CRATES = pathlib.Path('crates')
|
|
|
|
REPLACEMENTS = [
|
|
# Text ladder -> gpui text classes (Caption2 before Caption)
|
|
('.text_style(TextStyle::Headline)', '.text_sm().font_semibold()'),
|
|
('.text_style(TextStyle::Body)', '.text_sm()'),
|
|
('.text_style(TextStyle::Caption2)', '.text_xs().font_medium()'),
|
|
('.text_style(TextStyle::Caption)', '.text_xs()'),
|
|
('.text_style(TextStyle::Callout)', '.text_xs()'),
|
|
('.text_style(TextStyle::Subheadline)', '.text_xs()'),
|
|
# Radius ladder -> theme tokens
|
|
('px(ui::bubble_radius())', 'cx.theme().radius_lg'),
|
|
('px(ui::surface_radius())', 'cx.theme().radius_lg'),
|
|
('px(ui::panel_radius())', 'cx.theme().radius_lg'),
|
|
('px(ui::control_radius())', 'cx.theme().radius'),
|
|
('px(ui::button_radius())', 'cx.theme().radius'),
|
|
('px(bubble_radius())', 'cx.theme().radius_lg'),
|
|
('px(surface_radius())', 'cx.theme().radius_lg'),
|
|
('px(panel_radius())', 'cx.theme().radius_lg'),
|
|
('px(control_radius())', 'cx.theme().radius'),
|
|
('px(button_radius())', 'cx.theme().radius'),
|
|
# Spacing -> Tailwind gap
|
|
('gap(px(ui::SPACE))', 'gap_2()'),
|
|
# Custom divider -> kit Separator
|
|
('divider(cx)', 'Separator::horizontal()'),
|
|
# Avatar import swap
|
|
('use gpui_kit::component::avatar::Avatar;', 'use ui::Avatar;'),
|
|
# Import lines that are now unused (whole line, with newline)
|
|
('use ui::{TextStyle, Typeset as _, bubble_radius, control_radius};\n', ''),
|
|
('use ui::{TextStyle, Typeset as _, button_radius, control_radius};\n', ''),
|
|
('use ui::{TextStyle, Typeset as _, button_radius, panel_radius};\n', ''),
|
|
('use ui::{TextStyle, Typeset as _, control_radius};\n', ''),
|
|
('use ui::{TextStyle, Typeset as _, button_radius};\n', ''),
|
|
('use ui::{TextStyle, Typeset as _, surface_radius};\n', ''),
|
|
('use ui::{TextStyle, Typeset as _};\n', ''),
|
|
('use ui::divider;\n', ''),
|
|
('use ui::button_radius;\n', ''),
|
|
]
|
|
|
|
|
|
def main() -> None:
|
|
changed = []
|
|
for path in CRATES.rglob('*.rs'):
|
|
if str(path).startswith('crates/ui/'):
|
|
continue
|
|
text = path.read_text()
|
|
original = text
|
|
for old, new in REPLACEMENTS:
|
|
text = text.replace(old, new)
|
|
if text != original:
|
|
path.write_text(text)
|
|
changed.append(str(path))
|
|
print('\n'.join(changed))
|
|
print(f'{len(changed)} files changed')
|
|
|
|
|
|
if __name__ == '__main__':
|
|
main()
|