From 9f0abc77ca3a7153e4e5285b4b0b29d8a69ccb21 Mon Sep 17 00:00:00 2001 From: jay Date: Sat, 20 Jun 2026 15:09:49 +0800 Subject: [PATCH] Added support for config file - Add --config CLI option to specify a custom JSON config file path - Support config path in both console and GTK modes - Add cmd_config field and config path resolution in Main.vala - Add IDE/build directory patterns to .gitignore - Add uninstall and debian package build instructions to docs --- .gitignore | 6 ++++++ docs/development.md | 13 +++++++++++++ src/AppConsole.vala | 5 +++++ src/AppGtk.vala | 3 +++ src/Core/Main.vala | 9 +++++++++ 5 files changed, 36 insertions(+) diff --git a/.gitignore b/.gitignore index c9768646..66f79fa8 100644 --- a/.gitignore +++ b/.gitignore @@ -16,6 +16,11 @@ release/*.run .bzr .git *~ +.pc +.idea +build +builddir +rust po-lp/ parts/ stage/ @@ -30,3 +35,4 @@ debian/timeshift.debhelper.log debian/timeshift.substvars debian/.debhelper/ +.vscode/ diff --git a/docs/development.md b/docs/development.md index a6649420..9181b326 100644 --- a/docs/development.md +++ b/docs/development.md @@ -50,6 +50,19 @@ meson compile -C build ### Step 4. Install Timeshift +Install ```bash sudo meson install -C build ``` +Uninstall +``` +cd build +sudo ninja uninstall +``` + +### Step 5. Build the debian package +#### Package +```bash +sudo apt install debhelper-compat=10 +dpkg-buildpackage -us -uc +``` diff --git a/src/AppConsole.vala b/src/AppConsole.vala index e0983ccc..d4ccc2fc 100644 --- a/src/AppConsole.vala +++ b/src/AppConsole.vala @@ -214,6 +214,10 @@ public class AppConsole : GLib.Object { App.validate_cmd_tags(); break; + case "--config": + App.cmd_config = args[++k]; + break; + case "--debug": LOG_COMMANDS = true; LOG_DEBUG = true; @@ -371,6 +375,7 @@ public class AppConsole : GLib.Object { msg += _("Backup") + ":\n"; msg += " --check " + _("Create snapshot if scheduled") + "\n"; msg += " --create " + _("Create snapshot (even if not scheduled)") + "\n"; + msg += " --config " + _("Specify the config json") + "\n"; msg += " --comments " + _("Set snapshot description") + "\n"; msg += " --tags {O,B,H,D,W,M} " + _("Add tags to snapshot (default: O)") + "\n";; msg += "\n"; diff --git a/src/AppGtk.vala b/src/AppGtk.vala index fc2fbb38..3317cb67 100644 --- a/src/AppGtk.vala +++ b/src/AppGtk.vala @@ -104,6 +104,9 @@ public class AppGtk : GLib.Object { case "--debug": LOG_DEBUG = true; break; + case "--config": + App.cmd_config = args[++k]; + break; default: //unknown option - show help and exit log_error(_("Unknown option") + ": %s".printf(args[k])); diff --git a/src/Core/Main.vala b/src/Core/Main.vala index 52c4650e..abc1a5d6 100644 --- a/src/Core/Main.vala +++ b/src/Core/Main.vala @@ -151,6 +151,7 @@ public class Main : GLib.Object{ public string cmd_target_device = ""; public string cmd_backup_device = ""; public string cmd_snapshot = ""; + public string cmd_config = ""; public bool cmd_confirm = false; public bool cmd_verbose = true; public bool cmd_scripted = false; @@ -300,6 +301,7 @@ public class Main : GLib.Object{ string local_exec = args[0]; string local_conf = app_path + "/timeshift.json"; string local_share = app_path + "/share"; + log_debug("cmd_config" + ": " + cmd_config); var f_local_exec = File.new_for_path(local_exec); if (f_local_exec.query_exists()){ @@ -318,6 +320,10 @@ public class Main : GLib.Object{ //timeshift is running from system directory - update app_path this.app_path = Environment.find_program_in_path("timeshift"); } + var f_config_path = File.new_for_path(cmd_config); + if (f_config_path.query_exists()){ + this.app_conf_path = cmd_config; + } // initialize lists ----------------- @@ -598,6 +604,9 @@ public class Main : GLib.Object{ case "--list-devices": app_mode = "list-devices"; break; + case "--config": + cmd_config = args[++k]; + break; } } }