X-Git-Url: https://osm.etsi.org/gitweb/?a=blobdiff_plain;f=rwlaunchpad%2Fplugins%2Frwlaunchpadtasklet%2Frift%2Fpackage%2Fscript.py;fp=rwlaunchpad%2Fplugins%2Frwlaunchpadtasklet%2Frift%2Fpackage%2Fscript.py;h=19992d56fda2bfacee9ea9a67df9cf2eb302ac26;hb=867ed1d01d7148493ff0ebc75a90ee295474f164;hp=01f66b09f8a6abe60a8ecdd57fd986752ab3d382;hpb=d748ab1836d94ebe1273b1910954be3b2a2b4486;p=osm%2FSO.git diff --git a/rwlaunchpad/plugins/rwlaunchpadtasklet/rift/package/script.py b/rwlaunchpad/plugins/rwlaunchpadtasklet/rift/package/script.py index 01f66b09..19992d56 100644 --- a/rwlaunchpad/plugins/rwlaunchpadtasklet/rift/package/script.py +++ b/rwlaunchpad/plugins/rwlaunchpadtasklet/rift/package/script.py @@ -82,3 +82,27 @@ class PackageScriptExtractor(object): pkg.extract_file(script_file, dest_path) except package.ExtractError as e: raise ScriptExtractionError("Failed to extract script %s" % script_name) from e + + def read_script(self, pkg, filename): + script_files = PackageScriptExtractor.package_script_files(pkg) + + for script_name, script_file in script_files.items(): + if script_name == filename: + self._log.debug("Found %s script file in package at %s", filename, script_file) + + try: + with pkg.open(script_file) as f: + userdata = f.read() + self._log.info("Custom script read from file %s", userdata) + # File contents are read in binary string, decode to regular string and return + return userdata.decode() + except package.ExtractError as e: + raise ScriptExtractionError("Failed to extract script %s" % script_name) from e + + # If we've reached this point but not found a matching script, + # raise an Exception, since we got here only because there was supposed + # to be a script in the VDU + errmsg = "No script file found in the descriptor package" + self._log.error(errmsg) + raise ScriptExtractionError(errmsg) +