Allow user to override output file path

This commit is contained in:
Mike 2020-07-26 08:15:21 +01:00
parent 3e2a357b77
commit 9c3a3fb6ec
3 changed files with 27 additions and 10 deletions

View File

@ -25,13 +25,16 @@ class MikesServoMapper:
__DEFAULT_OUTPUT_FILE_NAME = "servo-mappings.yml" __DEFAULT_OUTPUT_FILE_NAME = "servo-mappings.yml"
def __init__(self, config_file: str, names): def __init__(self, config_file: str = None, names=None, output_file: str = None):
# noinspection PyTypeChecker # noinspection PyTypeChecker
self.__logger: logging.Logger = None self.__logger: logging.Logger = None
self.__logger_formatter = None self.__logger_formatter = None
self.init_logging() self.init_logging()
if names is None:
self.__names = list()
else:
self.__names = list(names) self.__names = list(names)
self.__names.sort() self.__names.sort()
@ -40,6 +43,10 @@ class MikesServoMapper:
self.pull_config_names() self.pull_config_names()
self.__logger.info("Names: %s" % (pprint.pformat(self.__names))) self.__logger.info("Names: %s" % (pprint.pformat(self.__names)))
self.__output_file_path = output_file
if self.__output_file_path is None:
self.__output_file_path = self.make_default_mappings_output_file_path()
self.__mappings = {} self.__mappings = {}
def init_logging(self): def init_logging(self):
@ -112,7 +119,7 @@ class MikesServoMapper:
self.__logger.info("") self.__logger.info("")
self.__logger.info("Please choose a mode: ") self.__logger.info("Please choose a mode: ")
self.__logger.info("1. Create mappings") self.__logger.info("1. Edit mappings")
self.__logger.info("2. Test current mappings") self.__logger.info("2. Test current mappings")
self.__logger.info("3. Write mappings to file") self.__logger.info("3. Write mappings to file")
self.__logger.info("4. Load previously saved mappings") self.__logger.info("4. Load previously saved mappings")
@ -124,7 +131,7 @@ class MikesServoMapper:
break break
if user_choice == "1": if user_choice == "1":
self.do_mappings() self.edit_mappings()
elif user_choice == "2": elif user_choice == "2":
self.test_mappings() self.test_mappings()
elif user_choice == "3": elif user_choice == "3":
@ -134,7 +141,7 @@ class MikesServoMapper:
else: else:
self.__logger.warning("Invalid choice: %s" % user_choice) self.__logger.warning("Invalid choice: %s" % user_choice)
def do_mappings(self): def edit_mappings(self):
self.__logger.info("Begin mapping mode !") self.__logger.info("Begin mapping mode !")
@ -250,7 +257,7 @@ class MikesServoMapper:
# Center # Center
servo.angle = 90 servo.angle = 90
def make_mappings_output_file_path(self): def make_default_mappings_output_file_path(self):
output_file_path = os.path.join( output_file_path = os.path.join(
"output", "output",
@ -261,7 +268,9 @@ class MikesServoMapper:
def write_mappings(self): def write_mappings(self):
output_file_path = self.make_mappings_output_file_path() output_file_path = self.__output_file_path
self.__logger.info("Writing mappings to output file: %s" % (output_file_path,))
data = { data = {
"servo-mappings": self.__mappings "servo-mappings": self.__mappings
@ -273,7 +282,7 @@ class MikesServoMapper:
def load_mappings(self, file_path=None): def load_mappings(self, file_path=None):
if file_path is None: if file_path is None:
file_path = self.make_mappings_output_file_path() file_path = self.__output_file_path
self.__logger.info("Attempting to load mappings from: %s" % (file_path,)) self.__logger.info("Attempting to load mappings from: %s" % (file_path,))

10
main.py
View File

@ -26,12 +26,20 @@ def main():
action="append", action="append",
dest="names" dest="names"
) )
parser.add_argument(
"--output", "--output-path",
help="Override the default mapping output path",
required=False,
default=None,
dest="output_file"
)
args = parser.parse_args() args = parser.parse_args()
mapper = MikesServoMapper( mapper = MikesServoMapper(
config_file=args.config_file, config_file=args.config_file,
names=args.names names=args.names,
output_file=args.output_file
) )
mapper.run() mapper.run()

2
output/.gitignore vendored
View File

@ -1,6 +1,6 @@
# #
*.yml *.*