kopia lustrzana https://github.com/peterhinch/micropython-samples
Add notes on rshell macros.
rodzic
761df2c73a
commit
c87587d426
|
@ -423,7 +423,9 @@ of required frequency response to a filter implementation.
|
||||||
|
|
||||||
[rshell](https://github.com/peterhinch/rshell) is a fork of Dave Hylands'
|
[rshell](https://github.com/peterhinch/rshell) is a fork of Dave Hylands'
|
||||||
excellent utility. My fork adds text macros to improve its power and
|
excellent utility. My fork adds text macros to improve its power and
|
||||||
usability, notably when maintaining complex Python packages.
|
usability, notably when maintaining complex Python packages. The fork includes
|
||||||
|
documentation, but [these notes](./RSHELL_MACROS.md) provide a usage example
|
||||||
|
where each project has its own set of automatically loaded macros.__
|
||||||
|
|
||||||
## 5.10 Hard to categorise
|
## 5.10 Hard to categorise
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,65 @@
|
||||||
|
# The rshell macro fork
|
||||||
|
|
||||||
|
These notes describe one of a number of possible ways to use the macro
|
||||||
|
facility.
|
||||||
|
|
||||||
|
The aim was to provide a set of generic macros, along with a project specific
|
||||||
|
set. The starting point is an alias, run before work is started on a given
|
||||||
|
project. The aliases are created in `~/.bashrc`. The example below is for two
|
||||||
|
projects, `mqtt` and `asyn`.
|
||||||
|
```bash
|
||||||
|
alias asyn='export PROJECT=ASYN;cd /MicroPython/micropython-async/'
|
||||||
|
alias mqtt='export PROJECT=MQTT; cd /MicroPython/micropython-mqtt'
|
||||||
|
```
|
||||||
|
The `PROJECT` environment variable is examined by the file `rshell_macros.py`
|
||||||
|
located in the `rshell` directory. An example is presented here:
|
||||||
|
```python
|
||||||
|
import os
|
||||||
|
proj = None
|
||||||
|
try:
|
||||||
|
proj = os.environ['PROJECT']
|
||||||
|
except KeyError:
|
||||||
|
print('Environment var PROJECT not found: only generic macros loaded.')
|
||||||
|
|
||||||
|
macros = {}
|
||||||
|
macros['..'] = 'cd ..'
|
||||||
|
macros['...'] = 'cd ../..'
|
||||||
|
macros['ll'] = 'ls -al {}', 'List any directory'
|
||||||
|
macros['lf'] = 'ls -al /flash/{}'
|
||||||
|
macros['lsd'] = 'ls -al /sd/{}'
|
||||||
|
macros['lpb'] = 'ls -al /pyboard/{}'
|
||||||
|
macros['mv'] = 'cp {0} {1}; rm {0}', 'Move/rename'
|
||||||
|
macros['repl'] = 'repl ~ import machine ~ machine.soft_reset()', 'Clean REPL'
|
||||||
|
macros['up'] = 'cd /MicroPython'
|
||||||
|
macros['asyn'] = 'cd /MicroPython/micropython-async'
|
||||||
|
macros['primitives'] = 'cd /MicroPython/micropython-async/v3; rsync primitives/ {}/primitives; cd -', 'Copy V3 primitives to dest'
|
||||||
|
|
||||||
|
if proj == 'MQTT':
|
||||||
|
print('Importing macros for MQTT')
|
||||||
|
macros['home'] = 'cd /MicroPython/micropython-mqtt/mqtt_as'
|
||||||
|
elif proj == 'ASYN':
|
||||||
|
print('Importing macros for ASYN')
|
||||||
|
macros['home'] = 'cd /MicroPython/micropython-async'
|
||||||
|
macros['v3'] = 'cd /MicroPython/micropython-async/v3'
|
||||||
|
macros['off'] = 'cd /MicroPython/micropython-async/official', 'official uasyncio'
|
||||||
|
macros['sync'] = 'cd /MicroPython/micropython-async/v3; rsync primitives/ {}/primitives', 'Copy V3 primitives to dest'
|
||||||
|
macros['demos'] = 'cd /MicroPython/micropython-async/v3; rsync as_demos/ {}/as_demos', 'Copy V3 demos to dest'
|
||||||
|
macros['drivers'] = 'cd /MicroPython/micropython-async/v3; rsync as_drivers/ {}/as_drivers', 'Copy V3 drivers to dest'
|
||||||
|
```
|
||||||
|
The first part of the script defines generic macros such as `ll` and `lsd`
|
||||||
|
available to any project, and if no project is defined.
|
||||||
|
|
||||||
|
Project specific macros are added in response to the environment variable.
|
||||||
|
Note the way args are passed: to update the SD card on a Pyboard the macro
|
||||||
|
`primitives` would be called with:
|
||||||
|
```
|
||||||
|
MicroPython > m primitives /sd
|
||||||
|
```
|
||||||
|
The `mv` macro, called with
|
||||||
|
```
|
||||||
|
MicroPython > m mv source_path dest_path
|
||||||
|
```
|
||||||
|
expands to
|
||||||
|
```
|
||||||
|
cp source_path dest_path; rm source_path
|
||||||
|
```
|
Ładowanie…
Reference in New Issue