--- name: docker_cp_file kind: function lang: bash domain: infra version: "1.0.0" purity: impure signature: "docker_cp_file(local_path: string, container_name: string, dest_path: string) -> string" description: "Copia un archivo local a un contenedor Docker y verifica que el tamaño coincide. Imprime JSON con local_size y remote_size a stdout. Sale con exit code 1 si docker cp falla o los tamaños difieren." tags: [docker, cp, copy, file, container, transfer, infra, bash] uses_functions: [] uses_types: [] returns: [] returns_optional: false error_type: "error_go_core" imports: [] params: - name: local_path desc: "ruta del archivo local a copiar" - name: container_name desc: "nombre del contenedor Docker destino" - name: dest_path desc: "ruta destino dentro del contenedor" output: "JSON con local_size y remote_size en bytes" tested: false tests: [] test_file_path: "" file_path: "bash/functions/infra/docker_cp_file.sh" --- ## Ejemplo ```bash source functions/infra/docker_cp_file.sh result=$(docker_cp_file $HOME/fn_registry/registry.db metabase /registry.db) echo "$result" # {"local_size":524288,"remote_size":524288} local_size=$(echo "$result" | grep -o '"local_size":[0-9]*' | cut -d: -f2) ``` ## Notas La verificación de tamaño usa `docker exec stat -c%s` sobre el contenedor destino. Si `stat` no está disponible en el contenedor, `remote_size` será -1 y la función fallará. Output a stdout: JSON minificado con campos `local_size` y `remote_size` (enteros, bytes). Usa `printf` en lugar de `echo` para garantizar que no haya newline extra en el JSON.