Resolve a template name and return source attribution. Args: template_name: Template name (e.g., "spec-template") template_type: Template type ("template", "command", or "script") Returns: Dictionary with 'path' and 'source' keys, or None if not
(
self,
template_name: str,
template_type: str = "template",
)
| 2821 | return None |
| 2822 | |
| 2823 | def resolve_with_source( |
| 2824 | self, |
| 2825 | template_name: str, |
| 2826 | template_type: str = "template", |
| 2827 | ) -> Optional[Dict[str, str]]: |
| 2828 | """Resolve a template name and return source attribution. |
| 2829 | |
| 2830 | Args: |
| 2831 | template_name: Template name (e.g., "spec-template") |
| 2832 | template_type: Template type ("template", "command", or "script") |
| 2833 | |
| 2834 | Returns: |
| 2835 | Dictionary with 'path' and 'source' keys, or None if not found |
| 2836 | """ |
| 2837 | # Delegate to resolve() for the actual lookup, then determine source |
| 2838 | resolved = self.resolve(template_name, template_type) |
| 2839 | if resolved is None: |
| 2840 | return None |
| 2841 | |
| 2842 | resolved_str = str(resolved) |
| 2843 | |
| 2844 | # Determine source attribution |
| 2845 | if str(self.overrides_dir) in resolved_str: |
| 2846 | return {"path": resolved_str, "source": "project override"} |
| 2847 | |
| 2848 | if str(self.presets_dir) in resolved_str and self.presets_dir.exists(): |
| 2849 | registry = PresetRegistry(self.presets_dir) |
| 2850 | for pack_id, _metadata in registry.list_by_priority(): |
| 2851 | pack_dir = self.presets_dir / pack_id |
| 2852 | try: |
| 2853 | resolved.relative_to(pack_dir) |
| 2854 | meta = registry.get(pack_id) |
| 2855 | version = meta.get("version", "?") if meta else "?" |
| 2856 | return { |
| 2857 | "path": resolved_str, |
| 2858 | "source": f"{pack_id} v{version}", |
| 2859 | } |
| 2860 | except ValueError: |
| 2861 | continue |
| 2862 | |
| 2863 | for _priority, ext_id, ext_meta in self._get_all_extensions_by_priority(): |
| 2864 | ext_dir = self.extensions_dir / ext_id |
| 2865 | if not ext_dir.is_dir(): |
| 2866 | continue |
| 2867 | try: |
| 2868 | resolved.relative_to(ext_dir) |
| 2869 | if ext_meta: |
| 2870 | version = ext_meta.get("version", "?") |
| 2871 | return { |
| 2872 | "path": resolved_str, |
| 2873 | "source": f"extension:{ext_id} v{version}", |
| 2874 | } |
| 2875 | else: |
| 2876 | return { |
| 2877 | "path": resolved_str, |
| 2878 | "source": f"extension:{ext_id} (unregistered)", |
| 2879 | } |
| 2880 | except ValueError: |