Uhm. Pulling names now.
Dieser Commit ist enthalten in:
Ursprung
8b29523643
Commit
e8ef1e0b11
|
@ -0,0 +1,72 @@
|
|||
|
||||
|
||||
import logging
|
||||
import pprint
|
||||
import sys
|
||||
import yaml
|
||||
|
||||
|
||||
class MikesServoMapper:
|
||||
|
||||
def __init__(self, config_file: str, names):
|
||||
|
||||
# noinspection PyTypeChecker
|
||||
self.__logger: logging.Logger = None
|
||||
self.__logger_formatter = None
|
||||
self.init_logging()
|
||||
|
||||
self.__names = list(names)
|
||||
self.__names.sort()
|
||||
|
||||
self.__config = None
|
||||
self.load_config(config_file)
|
||||
self.pull_config_names()
|
||||
|
||||
self.__logger.info("Names: %s" % (pprint.pformat(self.__names)))
|
||||
|
||||
def init_logging(self):
|
||||
|
||||
self.__logger = logging.Logger("Mikes Servo Mapper")
|
||||
self.__logger_formatter = logging.Formatter(fmt="Hi poop")
|
||||
|
||||
stream_handler = logging.StreamHandler(sys.stdout)
|
||||
|
||||
self.__logger.addHandler(stream_handler)
|
||||
|
||||
self.__logger.info("Logging initialized")
|
||||
|
||||
def load_config(self, config_file):
|
||||
|
||||
if config_file is None:
|
||||
return
|
||||
|
||||
with open(config_file) as f:
|
||||
|
||||
config = yaml.safe_load(f)
|
||||
|
||||
self.__logger.info("Loaded config: %s" % (pprint.pformat(config),))
|
||||
|
||||
self.__config = config
|
||||
|
||||
def pull_config_names(self):
|
||||
|
||||
if self.__config is None:
|
||||
self.__logger.info("No config specified; Won't pull names")
|
||||
return
|
||||
self.__logger.info("Pulling names from config")
|
||||
|
||||
if "names" not in self.__config:
|
||||
self.__logger.warning("Key \"names\" is not in config; Cannot pull names")
|
||||
return
|
||||
|
||||
config_names = self.__config["names"]
|
||||
if not isinstance(config_names, list):
|
||||
self.__logger.warning("Config had key \"names\" but it wasn't a list; Won't pull names")
|
||||
return
|
||||
|
||||
self.__logger.info("Names before pulling from config: %s" % (self.__names,))
|
||||
for name in config_names:
|
||||
self.__names.append(name)
|
||||
self.__names.sort()
|
||||
self.__logger.info("Names after pulling from config: %s" % (self.__names,))
|
||||
|
1
Pipfile
1
Pipfile
|
@ -4,6 +4,7 @@ verify_ssl = true
|
|||
name = "pypi"
|
||||
|
||||
[packages]
|
||||
pyaml = "*"
|
||||
|
||||
[dev-packages]
|
||||
|
||||
|
|
|
@ -0,0 +1,45 @@
|
|||
{
|
||||
"_meta": {
|
||||
"hash": {
|
||||
"sha256": "1f84f63565324f6ff4b4071af61c776885d170eed424917d7adb74b2b97517e3"
|
||||
},
|
||||
"pipfile-spec": 6,
|
||||
"requires": {
|
||||
"python_version": "3.7"
|
||||
},
|
||||
"sources": [
|
||||
{
|
||||
"name": "pypi",
|
||||
"url": "https://pypi.python.org/simple",
|
||||
"verify_ssl": true
|
||||
}
|
||||
]
|
||||
},
|
||||
"default": {
|
||||
"pyaml": {
|
||||
"hashes": [
|
||||
"sha256:29a5c2a68660a799103d6949167bd6c7953d031449d08802386372de1db6ad71",
|
||||
"sha256:67081749a82b72c45e5f7f812ee3a14a03b3f5c25ff36ec3b290514f8c4c4b99"
|
||||
],
|
||||
"index": "pypi",
|
||||
"version": "==20.4.0"
|
||||
},
|
||||
"pyyaml": {
|
||||
"hashes": [
|
||||
"sha256:06a0d7ba600ce0b2d2fe2e78453a470b5a6e000a985dd4a4e54e436cc36b0e97",
|
||||
"sha256:240097ff019d7c70a4922b6869d8a86407758333f02203e0fc6ff79c5dcede76",
|
||||
"sha256:4f4b913ca1a7319b33cfb1369e91e50354d6f07a135f3b901aca02aa95940bd2",
|
||||
"sha256:69f00dca373f240f842b2931fb2c7e14ddbacd1397d57157a9b005a6a9942648",
|
||||
"sha256:73f099454b799e05e5ab51423c7bcf361c58d3206fa7b0d555426b1f4d9a3eaf",
|
||||
"sha256:74809a57b329d6cc0fdccee6318f44b9b8649961fa73144a98735b0aaf029f1f",
|
||||
"sha256:7739fc0fa8205b3ee8808aea45e968bc90082c10aef6ea95e855e10abf4a37b2",
|
||||
"sha256:95f71d2af0ff4227885f7a6605c37fd53d3a106fcab511b8860ecca9fcf400ee",
|
||||
"sha256:b8eac752c5e14d3eca0e6dd9199cd627518cb5ec06add0de9d32baeee6fe645d",
|
||||
"sha256:cc8955cfbfc7a115fa81d85284ee61147059a753344bc51098f3ccd69b0d7e0c",
|
||||
"sha256:d13155f591e6fcc1ec3b30685d50bf0711574e2c0dfffd7644babf8b5102ca1a"
|
||||
],
|
||||
"version": "==5.3.1"
|
||||
}
|
||||
},
|
||||
"develop": {}
|
||||
}
|
|
@ -0,0 +1,28 @@
|
|||
|
||||
# Mike's Servo Mapper
|
||||
|
||||
A simple command line utility to map servos to
|
||||
|
||||
Written and tested using the Adafruit I2C servo driver board: [PCA9685](https://www.adafruit.com/product/815)
|
||||
|
||||
## Requiremments
|
||||
|
||||
* ```pipenv```
|
||||
|
||||
## Installation
|
||||
|
||||
cd to this repo's directory and install pip dependencies with:
|
||||
|
||||
```pipenv install```
|
||||
|
||||
## Execution
|
||||
|
||||
cd to this repo's directory and execute using:
|
||||
|
||||
```pipenv run python3 main.py```
|
||||
|
||||
## Command Line Arguments
|
||||
|
||||
TODO
|
||||
|
||||
|
|
@ -0,0 +1,5 @@
|
|||
|
||||
# Ignore any configs placed here
|
||||
*.yaml
|
||||
|
||||
|
|
@ -0,0 +1,41 @@
|
|||
|
||||
|
||||
from MikesServoMapper import MikesServoMapper
|
||||
|
||||
|
||||
import argparse
|
||||
|
||||
|
||||
def main():
|
||||
|
||||
parser = argparse.ArgumentParser(
|
||||
prog="Mike's Servo Mapper (for adafruit driver board)"
|
||||
)
|
||||
parser.add_argument(
|
||||
"--config", "--config-file",
|
||||
help="Path to a yaml file describing some configuration stuffs",
|
||||
required=False,
|
||||
default=None,
|
||||
dest="config_file"
|
||||
)
|
||||
parser.add_argument(
|
||||
"--name",
|
||||
help="Specify a target name (can be used multiple times)",
|
||||
required=False,
|
||||
default=[],
|
||||
action="append",
|
||||
dest="names"
|
||||
)
|
||||
|
||||
args = parser.parse_args()
|
||||
|
||||
mapper = MikesServoMapper(
|
||||
config_file=args.config_file,
|
||||
names=args.names
|
||||
)
|
||||
mapper.run()
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
main()
|
||||
|
Laden…
In neuem Issue referenzieren