function _docker_with_platform() { local platform=$1 local extra_flags=$2 shift 2 local args=$@ local original="docker ${args}" local cmd="${original}" _substitutableCmds=(build pull run) if [[ ${args} != *"--platform"* ]]; then for command in ${_substitutableCmds[@]}; do if [[ ${args} =~ (^|[[:space:]])${command}([[:space:]]|$) ]]; then cmd=${cmd/${command}/${command} --platform=${platform}${extra_flags:+ ${extra_flags}}} fi done fi if [[ "${cmd}" != "${original}" ]]; then echo -e "\e[34m-> ${cmd}\e[0m" fi eval "command ${cmd}" } function docker() { _docker_with_platform "linux/arm64/v8" "" $@ } function docker-amd64() { _docker_with_platform "linux/amd64" "--device=lima-vm.io/rosetta=cached" $@ }