`vpn.py` savait tout faire en ligne de commande, mais il fallait écrire le profil JSON à la main et déposer les secrets dans KeePassXC soi-même. Le menu pose les questions que le pilote choisi déclare, et lui seul : ajouter une technologie n'ajoute pas une ligne ici. Le coffre est manipulé EN PROCESSUS — le mot de passe maître est déjà en mémoire, le redemander à un sous-processus serait une saisie de plus à chaque geste. Montage, démontage et diagnostic passent au contraire par `vpn.py` en sous-processus : ils durent, ils parlent, et la sortie en direct est ce qui rend une montée de tunnel suivable. Vérifié : 37 tests sur le menu, aucune saisie réelle. --- EN --- `vpn.py` could already do everything from the command line, but the JSON profile had to be written by hand and the secrets filed into KeePassXC by hand. The menu asks the questions the chosen driver declares, and only those: adding a technology adds no line here. The vault is handled IN PROCESS — the master password is already in memory, and asking a subprocess for it again would be one more entry at every step. Raising, tearing down and diagnosing go through `vpn.py` as a subprocess instead: they last, they talk, and live output is what makes a tunnel coming up followable. Checked: 37 tests on the menu, no real input. Assisted-by: Claude Opus 5
72 lines
2.5 KiB
JSON
72 lines
2.5 KiB
JSON
{
|
|
"kdbx": {
|
|
"path": "",
|
|
"password": ""
|
|
},
|
|
"kdbx_config": {
|
|
"openai": {
|
|
"kdbx_key": "OpenAI api"
|
|
}
|
|
},
|
|
"instance": [
|
|
{
|
|
"prompt_description_key": "Test - Minimal base instance",
|
|
"makefile_cmd": "db_restore_erplibre_base_db_test",
|
|
"database": "test"
|
|
},
|
|
{
|
|
"prompt_description_key": "Open RobotLibre 🤖 minimal",
|
|
"makefile_cmd": "robot_libre",
|
|
"database": "robotlibre"
|
|
},
|
|
{
|
|
"prompt_description_key": "Open RobotLibre 🤖 with search enabled",
|
|
"makefile_cmd": "robot_libre_all",
|
|
"database": "robotlibre"
|
|
}
|
|
],
|
|
"function": [
|
|
{
|
|
"prompt_description_key": "Open ERPLibre with TODO 🤖",
|
|
"command": "./.venv.erplibre/bin/python ./script/selenium/web_login.py"
|
|
}
|
|
],
|
|
"update_from_makefile": [
|
|
{
|
|
"prompt_description_key": "Update all erplibre_base on database test",
|
|
"makefile_cmd": "db_erplibre_base_db_test_update_all",
|
|
"database": "test"
|
|
}
|
|
],
|
|
"code_from_makefile": [
|
|
{
|
|
"prompt_description_key": "Show code status",
|
|
"makefile_cmd": "repo_show_status"
|
|
},
|
|
{
|
|
"prompt_description_key": "Stash all code",
|
|
"makefile_cmd": "repo_do_stash"
|
|
},
|
|
{
|
|
"prompt_description_key": "Format modified code",
|
|
"makefile_cmd": "format"
|
|
}
|
|
],
|
|
"git_from_makefile": [
|
|
{
|
|
"prompt_description_key": "Configure git local editor to vim",
|
|
"bash_command": "git config --global core.editor \"vim\""
|
|
},
|
|
{
|
|
"prompt_description_key": "Generate git patch to /tmp",
|
|
"bash_command": "PATCH=\"/tmp/patch_$(date +%Y%m%d_%H%M%S).patch\"; git -C \"$(pwd)\" diff HEAD > \"$PATCH\" && printf \"\\n✓ Patch created: %s\\n\\n=== Guide to apply the patch ===\\n Check compatibility : git apply --check %s\\n Apply (git) : git apply %s\\n Apply (patch) : patch -p1 < %s\\n Revert (git) : git apply -R %s\\n\" \"$PATCH\" \"$PATCH\" \"$PATCH\" \"$PATCH\" \"$PATCH\""
|
|
}
|
|
],
|
|
"vpn": [],
|
|
"qemu_from_makefile": [
|
|
{
|
|
"prompt_description_key": "QEMU - Sample dry-run (demo-vm, Ubuntu 24.04)",
|
|
"bash_command": "./script/qemu/deploy_qemu.py --name demo-vm --version 24.04 --dry-run"
|
|
}
|
|
]
|
|
}
|