Packaging and CLI tool

This commit is contained in:
Andrea Mistrali 2023-05-02 13:12:47 +02:00
parent e9fefee6f0
commit 5d1aed44b9
No known key found for this signature in database
GPG Key ID: 6FB0A77F6D5DA9B2
7 changed files with 100 additions and 10 deletions

16
.vscode/launch.json vendored Normal file
View File

@ -0,0 +1,16 @@
{
// Use IntelliSense to learn about possible attributes.
// Hover to view descriptions of existing attributes.
// For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387
"version": "0.2.0",
"configurations": [
{
"name": "Python: Current File",
"type": "python",
"request": "launch",
"program": "${file}",
"console": "integratedTerminal",
"justMyCode": true
}
]
}

View File

@ -1,3 +1,3 @@
# Pulses
Pulses is a python module to drive LEDs on RPi using PWM (Pulse Width Modulation)
Pulses is a python module to drive LEDs on RPi using PWM (Pulse Width Modulation)

View File

@ -0,0 +1,2 @@
from .pulses import ledPulse
VERSION = "0.90"

74
pulses/cli.py Normal file
View File

@ -0,0 +1,74 @@
"""
Usage:
pulses [--gpio <gpio>] [--initial <initialMethod>] [--loop <loopMethod>]
[--final <finalMethod>] [--delay <delayMethod>]
[--min <min>] [--max <max>] [--delay-val <delay>]
[--verbose]
Options:
-g --gpio=<gpio> GPIO to use [default: 12]
-i --initial=<method> Initial method
-l --loop=<method> Loop method [default: sin]
-f --final=<method> Final method
-d --delay=<method> Delay method [default: constant]
-m --min=<min> Minimum value [default: 2]
-M --max=<max> Maximum value [default: 50]
-D --delay-val=<delay> Base delay value [default: 0.01]
-V --verbose Verbose mode [default: True]
-h --help Show help.
-v --version Show version.
""" # NOQA
import sys
import time
import logging
import signal
from docopt import docopt
from pulses import VERSION, ledPulse
logging.basicConfig(format="%(name)s %(msg)s", stream=sys.stdout)
def signal_handler(sig, frame):
print('pulse-cli: bailing out...')
sys.exit(0)
def main():
args = docopt(__doc__, version=f'pulses {VERSION}')
signal.signal(signal.SIGINT, signal_handler)
log = logging.getLogger()
log.setLevel('WARNING')
if args.get('--verbose'):
log.setLevel('DEBUG')
log.info('setting verbose mode')
params = {}
for method in ['initial', 'loop', 'final', 'delay']:
params[f"{method}Method"] = args.get(f"--{method}")
params['min'] = int(args.get('--min'))
params['max'] = int(args.get('--max'))
params['delay'] = float(args.get('--delay-val'))
print("-" * 20)
print("pulses CLI test tool")
print("-" * 20)
print("\n> loop parameters")
for param, value in params.items():
print(f" {param}: {value}")
led = ledPulse(args.get('--gpio'))
led.set(**params)
print('\nstarting loop, press Ctrl-C to stop...')
led.start()
while True:
time.sleep(4)
if __name__ == "__main__":
main()

View File

@ -6,9 +6,6 @@ import threading
from queue import Queue
from .methods import * # NOQA
# if sys.platform == "linux":
# import RPi.GPIO as GPIO
class ledPulse(threading.Thread):
@ -92,7 +89,7 @@ class ledPulse(threading.Thread):
else:
# Platform not supported, set
# a dummy setValue function
if self.log.level == logging.DEBUG:
if self.log.root.level == logging.DEBUG:
self.setValue = print
else:
self.setValue = lambda x: x

1
requirements.txt Normal file
View File

@ -0,0 +1 @@
docopt

View File

@ -13,9 +13,9 @@ license = BSD 3-Clause License
packages = pulses
python_requires = >=3
include_package_data = True
# install_requires =
# PyYAML
install_requires =
docopt
# [options.package_data]
# * =
# config.yaml.example
[options.entry_points]
console_scripts =
pulses = pulses.cli:main