* Instead of sys.exit, raise ValidationError
* Let's not handle BaseException, just Exception
* Use ValidationError instead of invalid syntax raise str
Using the `-m` flag, we can use any process manager instead of the
standard honcho. For instance, you've installed overmind on your machine
and are married to it, just run `bench start -m overmind` :P
Rename --frappe-branch flag to --version, both are allowed though. Cause
of rename: Makes more sense as version rather than frappe_branch. This
is because you can pass any git reference instead of just branches, including
version tags.
New methods added in Bench class:
* excluded_apps property
* shallow_clone property
* apps property - check if frappe app & sort
* sync: Sync the apps.txt file from the installed set of Frappe apps
* build: Build bench assets
* reload: Reload the Frappe processes - supervisor restart
New methods added in BenchApps class:
* add/append: Adding an App object to this, installs the app on the
Bench
* remove: Removing an App from here, uninstalls and archives the app
Methods available in the App class:
* get: Clone remote/local repos into set bench
* remove: Uninstall from env & move app into `archived/apps` folder.
Changed location from `archived_apps`
* install: Install app's Frappe, Python & Node dependencies on set bench
* uninstall: Uninstall Python package of the Frappe App. Does nothing
else...just a `pip uninstall`
* Although the utils refactor was done in such a way that there was no
need of changing import paths, a cleanup was due.
* Got rid of duplicated utils
* Remove unused imports
* Cleaner APIs - got rid of redundant and repeated checks
* Easier understanding on what's called where? ;) hopefully
* Separation of utils to avoid confusion
* Remove redundant utils
* Use newer standard library APIs
A year (longer) ago, I added color to bench manually. I hadn't explored
much of click back then. Had to figure out when we had to and we didnt
have to colour stuff. At times the chars would just be ignored and
rather printed to the terminal which was awkward...anyway, here,
goodbyetoallthat :cheers: (hopefully)
This was long time due. Removing software that won't be compatible with
this version of Bench is a no-brainer. Sorry for not posting this in
advance but the world has been moving too fast.
Use `pip install frappe-bench --only-binary='all'` to install the latest
supported version for your machine :D
Goals:
- Commonify bench operations in a way that intuitive
- Get rid of the multiple duplicate functions because it's so hard to
understand flow in the codebase ;)
- Eliminate the need to guess, re-guess and pass bench info in each
function that needs to do literally anything
- Increase my happiness index because I just realised that I'm the top
contributor of this project and I'd like to make it my own.
- Adopt the principles of Least Surprise & The Principle of The Bigger Smile (of DHH) [inspired by ruby & ror]
Changes:
- The bench module has Bench and the action classes that can be accessed
through the bench object
- Used the Bench class to access properties like sites, apps & run (to execute commands in context) to reduce effort and clutter
- Style improvements & minor changes included
* Added app dependencies resolving using `required_apps`
* Simplified workflow + docstring to explain what's goin on xD
* Get rid of redundant restart_bench kwarg from get_app
Why bother creating a bench well in advance? If someone wants to install
your app, they should be able to with a single command.
For instance, you can run simply `bench get healthcare` in any directory and bench will be setup automatically
* Less messier way of setting up and managing pre-fetched app meta
* Added support to fetch apps using the GitHub org/repo pattern
* Can be used to get apps and easily handle dependencies through version
identifiers
* Replaced one of the = with ~ to allow any patch releases to be
compatible
* Removed pinning from requests, honcho & Click since we're using the
more basic APIs
* Made these changes so that it's easier to install bench globally :')
* chore: typo
* chore: update project description
* feat: command to install dev-requirements.txt
Often applications have development or test specific requirements which
are not required in production.
- Add new command `bench setup dev-requirements`
- installs all `dev-requirements.txt` in app's root folder.
* refactor: remove duplicate function
* refactor: use `log` instead of print
* refactor: merge dev-requirement command
* feat: install dev-dependencies in get-app if dev
When developer mode is enabled install all dev dependencies too while
doing `get-app`
* fix: warn about --dev not supporting node