Repository navigation
Make install.sh (optionally) interactive #4752
Description
User Story
As a person using the advertised method to install OpenShell, I want it to ask me how it should do the configuration that it presently does via auto-detection, so that I can make sure it is configured appropriately for me.
Problem Statement
Presently, when installing OpenShell via install.sh, it uses auto-detection of the installation target to figure out how to install OpenShell. This includes:
- Which package manager to use (e.g.
brew,apt-get,snap) - Which compute driver to set up for the gateway (e.g. Docker, Podman)
- Whether even to install the gateway service at all
This becomes problematic when the user:
- Has Docker and Podman installed, and wants to use a specific one
- Has neither Docker nor Podman installed and wants to use the VM driver (auto-detection does not support the VM driver)
- Has a machine with
apt-getandsnap, and wants to use a specific one - Only wants to install the CLI, not the gateway at all, because they're only planning to use a remote gateway
Impact
The current auto-detection-based installation mechanism does setup for a user that they may not want, choosing the wrong driver or installation method, or installing things they don't want, like the gateway service. This is challenging for package authors who are adding their packaging to install.sh, because it's not clear how install.sh should rank each packaging mechanism, or driver selection, and that has been shown to relate to or depend on the packaging mechanism.
Additionally, it does work that is hidden from the user (configuring the auto-detected driver, writing a gateway.toml), making it harder for that user to even know how to change it.
Acceptance Criteria
- The install script should present to the user a list of compute drivers that were auto-detected, giving the user the option to choose one, or use whichever was auto-selected for them arbitrarily
- The install script should give the user the option to install the gateway service or not
- The install script should give the user the option of which package manager to use when multiple were detected, noting any caveats that may exist with each package driver (some packaging mechanisms may not work with drivers not also installed by that packaging mechanism)
- The install script should retain a non-interactive method for invoking it, preserving the existing behavior or taking predefined answers to its prompts
Activity
[-]Make install.sh dynamic[/-][+]Make install.sh (optionally) interactive[/+]