diff --git a/SYS/config.py b/SYS/config.py index d6204bc..c5c33cc 100644 --- a/SYS/config.py +++ b/SYS/config.py @@ -467,7 +467,7 @@ def get_local_storage_path(config: Dict[str, Any]) -> Optional[Path]: """Get local storage path from config. Supports multiple formats: - - New: config["store"]["folder"]["*"]["path"] (picks first folder store if 'default' is missing) + - New: config["store"]["folder"]["any_name"]["path"] - Old: config["storage"]["local"]["path"] - Old: config["Local"]["path"] @@ -477,19 +477,11 @@ def get_local_storage_path(config: Dict[str, Any]) -> Optional[Path]: Returns: Path object if found, None otherwise """ - # Try new format first: store.folder.default.path + # Try new format: iterate all folder stores and use the first valid path found. store = config.get("store", {}) if isinstance(store, dict): folder_config = store.get("folder", {}) if isinstance(folder_config, dict): - # 1. Try "default" specifically - default_config = folder_config.get("default", {}) - if isinstance(default_config, dict): - path_str = default_config.get("path") - if path_str: - return expand_path(path_str) - - # 2. If no "default", pick the first one that has a path for name, inst_cfg in folder_config.items(): if isinstance(inst_cfg, dict): p = inst_cfg.get("path") or inst_cfg.get("PATH") diff --git a/cmdlet/provider_table.py b/cmdlet/provider_table.py index ba4ee1c..69d9db3 100644 --- a/cmdlet/provider_table.py +++ b/cmdlet/provider_table.py @@ -28,7 +28,7 @@ CMDLET = Cmdlet( detail=[ "Use a registered provider to build a table and optionally run another cmdlet with selection args.", "Emits pipeline-friendly dicts enriched with `_selection_args` so you can pipe into `select` and other cmdlets.", - "Example: provider-table -provider example -sample | select -select 1 | add-file -store default", + "Example: provider-table -provider example -sample | select -select 1 | add-file -store my_store", ], ) diff --git a/cmdlet/search_file.py b/cmdlet/search_file.py index 31413e9..b494329 100644 --- a/cmdlet/search_file.py +++ b/cmdlet/search_file.py @@ -573,15 +573,26 @@ class search_file(Cmdlet): library_root = get_local_storage_path(config or {}) if not library_root: - # Fallback for search-file: if no global "default" path is found, + # Fallback for search-file: if no global folder path is found, # try to use the specific backend mentioned in -store or the first available folder backend. - backend_name = storage_backend or "default" - try: - backend = storage_registry[backend_name] - if backend and type(backend).__name__ == "Folder": - library_root = expand_path(getattr(backend, "_location", None)) - except Exception: - pass + if storage_backend: + try: + backend = storage_registry[storage_backend] + if backend and type(backend).__name__ == "Folder": + library_root = expand_path(getattr(backend, "_location", None)) + except Exception: + pass + else: + # Try all backends until we find a Folder one + for name in storage_registry.list_backends(): + try: + backend = storage_registry[name] + if type(backend).__name__ == "Folder": + library_root = expand_path(getattr(backend, "_location", None)) + if library_root: + break + except Exception: + continue if not library_root: log("No library root configured. Use the .config command to set up storage.", file=sys.stderr)