inventree / InvenTree

Open Source Inventory Management System
https://docs.inventree.org
MIT License
4.32k stars 780 forks source link

[FR] Add interactive options to installer #3785

Open matmair opened 2 years ago

matmair commented 2 years ago

Please verify that this feature request has NOT been suggested before.

Problem statement

The installer currently is non-interactive. It can be modified with environment variables but it would be cool to have an interactive guide to pick a database backend and maybe set up Redis ... there are options.

Suggested solution

Create an interactive installer:

Describe alternatives you've considered

The new installer in #3743 is a great improvement (IMO, I wrote it) but could be more interactive.

Examples of other systems

The installer for Coolify is great, something like it could be used as a blueprint.

Do you want to develop this?

ScaredyCat commented 1 year ago

I agree, particularly on the backend selection. At the moment sqllite is NOT recommended and yet it's the default with no option to select another. If you've used the script installer you can't "invoke update" to define the schema even if you've changed the engine.

matmair commented 1 year ago

You can absolutely run invoke update

ScaredyCat commented 1 year ago

Sorry, I meant "invoke migrate", to generate the db schema.

Well, you can run the command. It will fail, but you can run it.

The "builds and installs everything for you" script doesn't install mysqlclient

I would proffer that 90% of those using it don't know enough to fix the issue which is why they're using a script to do it for them. Quick fix is to install it regardless (same for pqsql lib too I suppose) but it'd be much better to just ask which backend the user wanted.

matmair commented 1 year ago

@ScaredyCat You are welcome to submit a PR that works across all supported OS, database and shell variants dynamically and without input; here is the installer code: https://github.com/inventree/InvenTree/blob/master/contrib/installer/src/root_command.sh

matmair commented 1 year ago

Added 2 more requrements. I imagine a system with main commands and then interactive requests or flags for automation commands: