Specify device name in file to autodownload
Uses the cache from previous commits
This commit is contained in:
		
							parent
							
								
									dfb285d239
								
							
						
					
					
						commit
						6038953471
					
				
							
								
								
									
										8
									
								
								cache.py
								
								
								
								
							
							
						
						
									
										8
									
								
								cache.py
								
								
								
								
							| 
						 | 
					@ -2,7 +2,7 @@ from os import listdir, mkdir, path
 | 
				
			||||||
import re
 | 
					import re
 | 
				
			||||||
import fetch
 | 
					import fetch
 | 
				
			||||||
 | 
					
 | 
				
			||||||
NAME_REGEX = r'(.*\..*)(_)'
 | 
					NAME_REGEX = r'(.+\..+?)(_)'
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
class Cache:
 | 
					class Cache:
 | 
				
			||||||
| 
						 | 
					@ -11,9 +11,9 @@ class Cache:
 | 
				
			||||||
        self._cache = dict()
 | 
					        self._cache = dict()
 | 
				
			||||||
        self._scan_cache()
 | 
					        self._scan_cache()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    def get(self, name: str):
 | 
					    def get(self, name: str) -> str:
 | 
				
			||||||
        if name in self._cache:
 | 
					        if name in self._cache:
 | 
				
			||||||
            return path.abspath(self.dir + self._cache[name])
 | 
					            return path.abspath(path.join(self.dir, self._cache[name]))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        try:
 | 
					        try:
 | 
				
			||||||
            driver = fetch.get_driver_by_exact_name(name)
 | 
					            driver = fetch.get_driver_by_exact_name(name)
 | 
				
			||||||
| 
						 | 
					@ -22,7 +22,7 @@ class Cache:
 | 
				
			||||||
            raise Exception("Could not fetch driver", e)
 | 
					            raise Exception("Could not fetch driver", e)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        self._cache[name] = file
 | 
					        self._cache[name] = file
 | 
				
			||||||
        return path.abspath(self.dir + self._cache[name])
 | 
					        return path.abspath(path.join(self.dir, self._cache[name]))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    def _scan_cache(self):
 | 
					    def _scan_cache(self):
 | 
				
			||||||
        try:
 | 
					        try:
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
							
								
								
									
										9
									
								
								fetch.py
								
								
								
								
							
							
						
						
									
										9
									
								
								fetch.py
								
								
								
								
							| 
						 | 
					@ -1,4 +1,5 @@
 | 
				
			||||||
import requests
 | 
					import requests
 | 
				
			||||||
 | 
					from os import path
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
class DriverUrl:
 | 
					class DriverUrl:
 | 
				
			||||||
| 
						 | 
					@ -78,7 +79,7 @@ def get_hrb_artifact_url(master_url: str) -> str:
 | 
				
			||||||
    return master_url + "/lastSuccessfulBuild/artifact/" + hrb_url
 | 
					    return master_url + "/lastSuccessfulBuild/artifact/" + hrb_url
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
def download_driver(driver: DriverUrl, output: str):
 | 
					def download_driver(driver: DriverUrl, dir: str):
 | 
				
			||||||
    user, token = read_credentials()
 | 
					    user, token = read_credentials()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    master_branch_url = find_master_branch(driver)
 | 
					    master_branch_url = find_master_branch(driver)
 | 
				
			||||||
| 
						 | 
					@ -89,7 +90,11 @@ def download_driver(driver: DriverUrl, output: str):
 | 
				
			||||||
    if res.status_code != 200:
 | 
					    if res.status_code != 200:
 | 
				
			||||||
        raise Exception("Failed to download file", res.status_code)
 | 
					        raise Exception("Failed to download file", res.status_code)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    with open(output, 'xb') as file:
 | 
					    file_name = hrb_url.strip().split('/')[-1]
 | 
				
			||||||
 | 
					    output_location = path.join(dir, file_name)
 | 
				
			||||||
 | 
					    print("trying to save to: ", output_location)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    with open(output_location, 'xb') as file:
 | 
				
			||||||
        for chunk in res.iter_content(chunk_size=128):
 | 
					        for chunk in res.iter_content(chunk_size=128):
 | 
				
			||||||
            file.write(chunk)
 | 
					            file.write(chunk)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
							
								
								
									
										8
									
								
								main.py
								
								
								
								
							
							
						
						
									
										8
									
								
								main.py
								
								
								
								
							| 
						 | 
					@ -1,19 +1,21 @@
 | 
				
			||||||
from adg_control import AdgClient, ADG_EXE, ADG_DIR
 | 
					from adg_control import AdgClient, ADG_EXE, ADG_DIR
 | 
				
			||||||
from parser import Parser
 | 
					from parser import Parser
 | 
				
			||||||
 | 
					from cache import Cache
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
def main():
 | 
					def main():
 | 
				
			||||||
    parser = Parser("./test")
 | 
					    parser = Parser("./test")
 | 
				
			||||||
    client = AdgClient(ADG_EXE, ADG_DIR)
 | 
					    client = AdgClient(ADG_EXE, ADG_DIR)
 | 
				
			||||||
 | 
					    cache = Cache()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    c1 = parser.commands[0]
 | 
					    c1 = parser.commands[0]
 | 
				
			||||||
    c1.execute(client)
 | 
					    c1.execute(client, cache)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    c2 = parser.commands[1]
 | 
					    c2 = parser.commands[1]
 | 
				
			||||||
    c2.execute(client)
 | 
					    c2.execute(client, cache)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    c3 = parser.commands[2]
 | 
					    c3 = parser.commands[2]
 | 
				
			||||||
    c3.execute(client)
 | 
					    c3.execute(client, cache)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
if __name__ == "__main__":
 | 
					if __name__ == "__main__":
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
							
								
								
									
										16
									
								
								parser.py
								
								
								
								
							
							
						
						
									
										16
									
								
								parser.py
								
								
								
								
							| 
						 | 
					@ -1,5 +1,8 @@
 | 
				
			||||||
from enum import StrEnum, auto
 | 
					from enum import StrEnum, auto
 | 
				
			||||||
from adg_control import AdgClient
 | 
					from adg_control import AdgClient
 | 
				
			||||||
 | 
					from cache import Cache
 | 
				
			||||||
 | 
					import ntpath
 | 
				
			||||||
 | 
					from adg_control import ADG_DIR
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
class CommandType(StrEnum):
 | 
					class CommandType(StrEnum):
 | 
				
			||||||
| 
						 | 
					@ -25,19 +28,25 @@ class Command():
 | 
				
			||||||
        except KeyError as e:
 | 
					        except KeyError as e:
 | 
				
			||||||
            raise Exception("Required argument not found!", e)
 | 
					            raise Exception("Required argument not found!", e)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    def execute(self, client: AdgClient):
 | 
					    def execute(self, client: AdgClient, cache: Cache):
 | 
				
			||||||
        match self.type:
 | 
					        match self.type:
 | 
				
			||||||
            case CommandType.NEWDB:
 | 
					            case CommandType.NEWDB:
 | 
				
			||||||
                client.create_database(self.name)
 | 
					                client.create_database(self.name)
 | 
				
			||||||
            case CommandType.NORMAL:
 | 
					            case CommandType.NORMAL:
 | 
				
			||||||
 | 
					                if hasattr(self, "package_path"):
 | 
				
			||||||
 | 
					                    package_path = self.package_path
 | 
				
			||||||
 | 
					                else:
 | 
				
			||||||
 | 
					                    abs_path = cache.get(self.device)
 | 
				
			||||||
 | 
					                    package_path = ntpath.relpath(abs_path, start=ADG_DIR)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
                client.create_normal_resource(
 | 
					                client.create_normal_resource(
 | 
				
			||||||
                    self.name,
 | 
					                    self.name,
 | 
				
			||||||
                    self.location,
 | 
					                    self.location,
 | 
				
			||||||
                    self.envelope,
 | 
					                    self.envelope,
 | 
				
			||||||
                    driver_path=self.driver_path
 | 
					                    driver_path=self.driver_path
 | 
				
			||||||
                    if hasattr(self, "driver_path") else "",
 | 
					                    if hasattr(self, "driver_path") else "",
 | 
				
			||||||
                    package_path=self.package_path
 | 
					                    package_path=package_path
 | 
				
			||||||
                    if hasattr(self, "package_path") else "",
 | 
					                    if not hasattr(self, "driver_description") else "",
 | 
				
			||||||
                    driver_description=self.driver_description
 | 
					                    driver_description=self.driver_description
 | 
				
			||||||
                    if hasattr(self, "driver_description") else "",
 | 
					                    if hasattr(self, "driver_description") else "",
 | 
				
			||||||
                    connection_parameters=self.connection_parameters
 | 
					                    connection_parameters=self.connection_parameters
 | 
				
			||||||
| 
						 | 
					@ -60,6 +69,7 @@ class Command():
 | 
				
			||||||
        self.name = kwargs["name"]
 | 
					        self.name = kwargs["name"]
 | 
				
			||||||
        self.location = kwargs["location"]
 | 
					        self.location = kwargs["location"]
 | 
				
			||||||
        self.envelope = kwargs["envelope"]
 | 
					        self.envelope = kwargs["envelope"]
 | 
				
			||||||
 | 
					        self.device = kwargs["device"]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        if "driver_path" in kwargs:
 | 
					        if "driver_path" in kwargs:
 | 
				
			||||||
            self.driver_path = kwargs["driver_path"]
 | 
					            self.driver_path = kwargs["driver_path"]
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
		Reference in New Issue