summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDaniel Weipert <git@mail.dweipert.de>2026-04-10 14:33:26 +0200
committerDaniel Weipert <git@mail.dweipert.de>2026-04-10 14:33:26 +0200
commitef2c62fa93ba9bf0d8bd0c0d497708bcd8a8173a (patch)
treeaa6969e0beddfbc898c3d2ceecd241833bdc59fe
parente42e24281c3714d864a6f0965c4d8e6476fa0ee0 (diff)
add rclone exclude flags
-rwxr-xr-xrclone-ide32
1 files changed, 30 insertions, 2 deletions
diff --git a/rclone-ide b/rclone-ide
index de29cea..b35020c 100755
--- a/rclone-ide
+++ b/rclone-ide
@@ -125,10 +125,36 @@ def build_cmd_config() -> str:
return f"--config={config_file}"
-def build_cmd_exclude() -> List[str]:
+def build_cmd_exclude(config: Mapping[str, Any]) -> List[str]:
"""Build the various exclude option parts for the rclone command."""
+
+ cmd = []
+ local_path = build_cmd_local_path(config)
+
+ # add default exclude patterns
+ default_exclude_patterns = config.get("rclone_ide_default_exclude_patterns", "").split(",")
+ if default_exclude_patterns == [""]:
+ default_exclude_patterns = [".git/", ".gitignore", ".rcloneignore"]
+
+ for pattern in default_exclude_patterns:
+ cmd.append(f"--exclude={pattern}")
+
+ # add .gitignore patterns
+ gitignore = os.path.join(local_path, ".gitignore")
+ if os.path.exists(gitignore):
+ cmd.append(f"--exclude-from={gitignore}")
+
+ process = subprocess.run(["git", "config", "--get", "core.excludesfile"], capture_output=True, text=True)
+ gitignore_global = os.path.expanduser(process.stdout.strip())
+ if gitignore_global and os.path.exists(gitignore_global):
+ cmd.append(f"--exclude-from={gitignore_global}")
+
+ # add .rcloneignore patterns
+ rcloneignore = os.path.join(local_path, ".rcloneignore")
+ if os.path.exists(rcloneignore):
+ cmd.append(f"--exclude-from={rcloneignore}")
- return ""
+ return cmd
def build_cmd_logging(log_level: str = "INFO") -> List[str]:
@@ -224,6 +250,7 @@ def command_copy(options: Mapping[str, Any]) -> None:
local_directory_path,
).rstrip("/"),
build_cmd_config(),
+ *build_cmd_exclude(remote_config["config"]),
*build_cmd_logging(),
]
@@ -254,6 +281,7 @@ def command_copy_file(options: Mapping[str, Any]) -> None:
os.path.dirname(local_file_path),
),
build_cmd_config(),
+ *build_cmd_exclude(remote_config["config"]),
*build_cmd_logging(),
]