pyinvoke / invoke

Pythonic task management & command execution.
http://pyinvoke.org
BSD 2-Clause "Simplified" License
4.31k stars 365 forks source link

Displaying output that is re-written on the same lines #907

Open shodhansave opened 1 year ago

shodhansave commented 1 year ago

I'm trying to execute docker compose up -d --force-recreate --remove-orphans command via pyinvoke. The command outputs such that it updates on the same lines using control characters. But when executing via pyinvoke, it prints all the lines on separate lines.

Is it possible to have the output printed exactly as by the command?

Example:

docker-compose output (it does print logs for creating containers, but it is over-written by newer logs on the same line):

docker compose up -d --force-recreate --remove-orphans
[+] Running 3/3
 ⠿ Network test_app_default    Created                                                          0.1s
 ⠿ Container test_app-redis-1  Started                                                          1.3s
 ⠿ Container test_app-web-1    Started                                                          1.2s

same using pyinvoke:

docker compose up -d --force-recreate --remove-orphans
Network test_app_default  Creating
Network test_app_default  Created
Container test_app-redis-1  Creating
Container test_app-web-1  Creating
Container test_app-redis-1  Created
Container test_app-web-1  Created
Container test_app-redis-1  Starting
Container test_app-web-1  Starting
Container test_app-web-1  Started
Container test_app-redis-1  Started

Of course I could add the --no-ansi flag to docker-compose, but I was wondering if we can achieve this effect via pyinvoke as well.

Thanks!