Consuming config and beginning to iterate over specified paths
This commit is contained in:
		@@ -1,15 +1,81 @@
 | 
				
			|||||||
#!/usr/env python3
 | 
					#!/usr/env python3
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import datetime
 | 
				
			||||||
 | 
					import sys
 | 
				
			||||||
 | 
					import yaml
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
class BackupRotator:
 | 
					class BackupRotator:
 | 
				
			||||||
	
 | 
						
 | 
				
			||||||
	def __init__(self):
 | 
						def __init__(self):
 | 
				
			||||||
		
 | 
							
 | 
				
			||||||
		pass
 | 
							self.__config = None
 | 
				
			||||||
 | 
							self.__config_path = None
 | 
				
			||||||
	
 | 
						
 | 
				
			||||||
	def run(self):
 | 
						def run(self):
 | 
				
			||||||
		
 | 
							
 | 
				
			||||||
		print("YAY")
 | 
							self.log("Begin")
 | 
				
			||||||
 | 
							self.consume_arguments()
 | 
				
			||||||
 | 
							self.consume_config(self.__config_path)
 | 
				
			||||||
 | 
							
 | 
				
			||||||
 | 
							self.rotate_paths()
 | 
				
			||||||
 | 
						
 | 
				
			||||||
 | 
						@staticmethod
 | 
				
			||||||
 | 
						def current_time():
 | 
				
			||||||
 | 
							
 | 
				
			||||||
 | 
							now = datetime.datetime.now()
 | 
				
			||||||
 | 
							now_s = now.strftime("%b-%d-%Y %I:%M%p")
 | 
				
			||||||
 | 
							return str(now_s)
 | 
				
			||||||
 | 
						
 | 
				
			||||||
 | 
						def log(self, s, o=None):
 | 
				
			||||||
 | 
							
 | 
				
			||||||
 | 
							now = self.current_time()
 | 
				
			||||||
 | 
							
 | 
				
			||||||
 | 
							to_log = "[" + now + "][Backup Rotator] " + str(s)
 | 
				
			||||||
 | 
							if o is not None:
 | 
				
			||||||
 | 
								to_log += " " + str(o)
 | 
				
			||||||
 | 
							
 | 
				
			||||||
 | 
							print(to_log)
 | 
				
			||||||
 | 
						
 | 
				
			||||||
 | 
						def consume_arguments(self):
 | 
				
			||||||
 | 
							
 | 
				
			||||||
 | 
							for i in range(1, len(sys.argv)):
 | 
				
			||||||
 | 
								
 | 
				
			||||||
 | 
								arg = sys.argv[i]
 | 
				
			||||||
 | 
								
 | 
				
			||||||
 | 
								if arg == "--config":
 | 
				
			||||||
 | 
									i, self.__config_path = self.consume_argument_companion(i)
 | 
				
			||||||
 | 
									print("Found config path:", self.__config_path)
 | 
				
			||||||
 | 
						
 | 
				
			||||||
 | 
						@staticmethod
 | 
				
			||||||
 | 
						def consume_argument_companion(arg_index):
 | 
				
			||||||
 | 
						
 | 
				
			||||||
 | 
							companion_index = arg_index + 1
 | 
				
			||||||
 | 
							if companion_index >= len(sys.argv):
 | 
				
			||||||
 | 
								raise Exception("Expected argument after", sys.argv[arg_index])
 | 
				
			||||||
 | 
							
 | 
				
			||||||
 | 
							return companion_index, sys.argv[companion_index]
 | 
				
			||||||
 | 
						
 | 
				
			||||||
 | 
						def consume_config(self, path=None):
 | 
				
			||||||
 | 
						
 | 
				
			||||||
 | 
							if path is None:
 | 
				
			||||||
 | 
								raise Exception("Auto-finding of config file not implemented")
 | 
				
			||||||
 | 
							
 | 
				
			||||||
 | 
							f = open(path)
 | 
				
			||||||
 | 
							self.__config = yaml.load(f)
 | 
				
			||||||
 | 
							
 | 
				
			||||||
 | 
							self.log("Consumed config from path: ", path)
 | 
				
			||||||
 | 
						
 | 
				
			||||||
 | 
						def rotate_paths(self):
 | 
				
			||||||
 | 
							
 | 
				
			||||||
 | 
							self.log("Begin rotating " + str(len(self.__config["paths"])) + " paths")
 | 
				
			||||||
 | 
							for path in self.__config["paths"]:
 | 
				
			||||||
 | 
								self.rotate_path(path)
 | 
				
			||||||
 | 
						
 | 
				
			||||||
 | 
						def rotate_path(self, path):
 | 
				
			||||||
 | 
							
 | 
				
			||||||
 | 
							self.log("Rotating path", path)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
def main():
 | 
					def main():
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user