pointfichiers/sync

50 lines
1.5 KiB
Python
Executable file

#!venv/bin/python
import os
import argparse
parser = argparse.ArgumentParser(
prog='Dotfiles sync',
description='Saves and restores my dotfiles',
)
parser.add_argument('action', choices=['save', 'restore'])
synced_files = [
('editor/helix/', '~/.config/helix/'),
('de/i3/', '~/.config/i3/'),
('de/hypr/', '~/.config/hypr/'),
('shell/bash/.bashrc', '~/.bashrc'),
('shell/bash/.bash_aliases', '~/.bash_aliases'),
('shell/bash/.bash_env', '~/.bash_env'),
('shell/bash/.bash_exec', '~/.bash_exec'),
('shell/nu/.nu_aliases', '~/.nu_aliases'),
('term/rio/', '~/.config/rio/'),
('term/alacritty/', '~/.config/alacritty/'),
('bar/waybar/', '~/.config/waybar/'),
('bin/swaylock-hyprland', '~/.local/bin/swaylock-hyprland'),
('bin/Hyprland', '~/.local/bin/Hyprland'),
('bin/jaaj', '~/.local/bin/jaaj'),
('bin/toggle-touchpad', '~/.local/bin/toggle-touchpad'),
('bin/togglescreen', '~/.local/bin/togglescreen'),
('bin/mc-key-fix', '~/.local/bin/mc-key-fix'),
]
def save():
for p in synced_files:
folder = "/".join(p[0].split("/")[0:-1])
if not os.path.exists(folder):
os.mkdir(folder)
os.system(f"rsync -r {p[1]} {p[0]}")
def restore():
for p in synced_files:
os.system(f"rsync -r {p[0]} {p[1]}")
if __name__ == '__main__':
args = parser.parse_args()
if args.action == 'save':
save()
elif args.action == 'restore':
restore()