Allow user to override output file path
This commit is contained in:
		@@ -25,14 +25,17 @@ 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()
 | 
				
			||||||
		
 | 
							
 | 
				
			||||||
		self.__names = list(names)
 | 
							if names is None:
 | 
				
			||||||
 | 
								self.__names = list()
 | 
				
			||||||
 | 
							else:
 | 
				
			||||||
 | 
								self.__names = list(names)
 | 
				
			||||||
		self.__names.sort()
 | 
							self.__names.sort()
 | 
				
			||||||
		
 | 
							
 | 
				
			||||||
		self.__config = None
 | 
							self.__config = None
 | 
				
			||||||
@@ -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
									
									
									
									
									
								
							
							
						
						
									
										10
									
								
								main.py
									
									
									
									
									
								
							@@ -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
									
									
								
							
							
						
						
									
										2
									
								
								output/.gitignore
									
									
									
									
										vendored
									
									
								
							@@ -1,6 +1,6 @@
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
#
 | 
					#
 | 
				
			||||||
*.yml
 | 
					*.*
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user