extract_metadata.py unconditionally creates dev/registry/logos/ even
when no logos are found (e.g. incremental build for a provider without
logos). The workflow's `if [ -d ... ]` check passes for the empty
directory, then `cp -r logos/*` fails because the glob doesn't expand.
Fix both sides:
- Workflow: check directory is non-empty before glob-based cp
- extract_metadata.py: create logo directories lazily, only when a
logo is actually found