Skip to content

Add update, install and uninstall commands #211

Description

@apolopena

Problem this feature will solve

Updating a project built with gitpod-laravel-starter is quite a pain. Without knowledge of the of some of the inner workings of the system, a user could break their project just trying to install or update to the latest release.

Background

gitpod-laravel-starter is essentially a codebase within a codebase, a project within a project if you will. gitpod-laravel-starter has quite a few files that a project might need to make changes to such as starter.ini, .gitignore, and gitattributes to name a few. This creates a set of challenges to making the update process as seamless as possible.

Proposed Solution

Add a set of three tools: install, update and uninstall . Although a language like Go would be probably be better suilted for building out command line tools like this, to reduce development time and increase transparency, these tools will be bash scripts that the user can invoke using curl, wget or fetch. Alternatively gitpod-laravel-starter will provide a bash script in /usr/bin that wraps these scripts to provide a convenient and terse way to install, update and uninstall gitpod-laravel-starter.

Constraints and Assumptions

  • The development cycle for these scripts will independent of gitpod-laravel-starter itself, so the tools: update.sh, install.sh and uninstall.sh will exist in their own dedicated repository: https://github.com/apolopena/gls-tools
  • As mentioned in the Background section, the scripts will be interactive but will all be built in a way that allows them to be run with the least amount of interactivity possible when yes is piped into them.
  • The scripts will share a lot of common functionality but we do not want copious amounts of redundant code. To handle this challenge, the tools will share some common files. Given that bash scripts as executables in /usr/bin need to be a single file, shared dependencies will be sourced into each script every time the script is invoked. This is not ideal but should suffice for the forseeable future.

Alternatives or Workarounds

Manual installs, updates and uninstalls can be done and is left up to the user as to how this should be done.

Additional context

This is the main feature request however a feature request for each script/tool/command will be created and linked to this one.

The main shared functionality for the scripts will be:

  • Utility functions
  • Spinner
  • Color support
  • Fancy header
  • Directive processing

Metadata

Metadata

Assignees

Labels

enhancementNew feature or request

Projects

No projects

Relationships

None yet

Development

No branches or pull requests

Issue actions