Auto install:
- Move finding libraries from auto-file into command utils (libraries_from_auto_file)
- Find the first possible code.py alternative in order (like main.py)
- Replace libraries_from_code_py using the ast module instead of findimports
- Get all imports to find local python imports
- Find all dependencies from user code recursively
Update backends:
- Add get_file_content in Backends subclasses
- Remove no longer used get_auto_file_path()
- Add list_dir() to DiskBackend
Update tests
- Add non-bundle imports
- Add submodule import
- Add another mock device to test finding code.py
* Add local bundle commands
- the local bundles take precedence over the built-in ones
- bundle-show lists the bundles
--modules lists the modules in each bundle
- bundle-add adds a bundle from the user/repo github string
it does some level of checking that the repo's and zips URLs exist
- bundle-remove removes a bundle from the local list
* allow overwritting the built-in modules manually
* remove show_bundles_info
* filter github URLs into github repo string
* avoid duplicates if adding built-ins as local, but allow it (to override priority order)
* put bundle-remove --reset back
* small change in bundle-show, local first
* message on built-in in bundle-remove
* move bundle config to JSON format
* correct docstring, change print back to logging
* remove make reference from contributing
* change layout and install for config file
* Display the URL to update circuitpython
- Display the URL to circuitpython.org, using the board's ID if available.
- Fix a crash if boot_out.txt contains more than 1 ";" (if boot.py prints some).
- Display a clean error if `boot_out.txt` is missing (can easily happen with --path).
* change internal Bundle.url to the base URL of the bundle
* "install --requirement" allows any path and checks it exists with click.
* "show <match>" forces lower case matching (install already does).
* add module names completion for install
* sort completion suggestions
* add instructions in the readme
* switch to click 8
* update setup.py to click 8
* fix from rebase (missing bundle list)
* try not to update bundles for shell completion