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
Problem this feature will solve
Updating a project built with
gitpod-laravel-starteris 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-starteris essentially a codebase within a codebase, a project within a project if you will.gitpod-laravel-starterhas quite a few files that a project might need to make changes to such asstarter.ini,.gitignore, andgitattributesto 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,updateanduninstall. 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 usingcurl,wgetorfetch. Alternativelygitpod-laravel-starterwill provide a bash script in/usr/binthat wraps these scripts to provide a convenient and terse way to install, update and uninstallgitpod-laravel-starter.Constraints and Assumptions
gitpod-laravel-starteritself, so the tools:update.sh,install.shanduninstall.shwill exist in their own dedicated repository: https://github.com/apolopena/gls-toolsyesis piped into them./usr/binneed 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: