Better balance between production and debug information given to the user
To put less strain on the user, we should keep most of the unnecessary information for ourselves in case of a production deployment.
Let's take Worker for example.
Checking and installing module requirements..OK
Starting Worker Worker..
To exit press CTRL+C
Couldn't connect to MSF RPC server.
Connection does not exist. Retrying..
Connection to RabbitMQ server established.
[*] Waiting for messages.
We will take inspiration from the Poetry installation and show a progress bar with one piece of information at a time. This means lines with @
will be shown separately on the same line.
@ Starting..
@ Installing modules' requirements..
@ Checking connection to MSF..
@ Checking connection to Empire..
@ Establishing connection with Rabbit..
@ Checking connection to MSF..
@ Other possible checks..
@ Running!
Once the Worker is running a summary will be displayed:
List of existing modules and relative path to them
Information about the connections to MSF, Empire
Instructions to register the Worker
Other information (app directory path, etc.)
If an error occurs during startup (rabbit connection is not present) just stop the startup and write a red line that says more information.
Also, do not show information about the messages being processed, that should go into logs. The only thing that we could show is a current status (again with the one-line progress bar).
@ waiting for messages/idle
@ processing/busy
The same goes for other components.