Skip to content

Commit

Permalink
Cleaning up exceptions
Browse files Browse the repository at this point in the history
  • Loading branch information
nmcspadden committed Aug 14, 2023
1 parent bf4a3bb commit 59d76bc
Show file tree
Hide file tree
Showing 11 changed files with 25 additions and 24 deletions.
3 changes: 2 additions & 1 deletion Code/autopkglib/DmgMounter.py
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,8 @@
import subprocess
import sys

from autopkglib import Processor, ProcessorError, log, log_err
from autopkglib import Processor, ProcessorError
from autopkglib.common import log, log_err

__all__ = ["DmgMounter"]

Expand Down
2 changes: 1 addition & 1 deletion Code/autopkglib/MunkiImporter.py
Original file line number Diff line number Diff line change
Expand Up @@ -331,7 +331,7 @@ def main(self):
raise ProcessorError(
f"makepkginfo execution failed with error code {err.errno}: "
f"{err.strerror}"
)
) from err
if err_out:
for err_line in err_out.decode().splitlines():
self.output(err_line)
Expand Down
2 changes: 1 addition & 1 deletion Code/autopkglib/MunkiInfoCreator.py
Original file line number Diff line number Diff line change
Expand Up @@ -87,7 +87,7 @@ def main(self):
raise ProcessorError(
f"makepkginfo execution failed with error code {err.errno}: "
f"{err.strerror}"
)
) from err
if proc.returncode != 0:
raise ProcessorError(
f"creating pkginfo for {self.env['pkg_path']} failed: {stderr.decode()}"
Expand Down
8 changes: 4 additions & 4 deletions Code/autopkglib/PkgCreator.py
Original file line number Diff line number Diff line change
Expand Up @@ -106,7 +106,7 @@ def xar_expand(self, source_path):
except OSError as err:
raise ProcessorError(
f"xar execution failed with error code {err.errno}: {err.strerror}"
)
) from err
if proc.returncode != 0:
raise ProcessorError(
f"extraction of {source_path} with xar failed: {stderr}"
Expand All @@ -127,7 +127,7 @@ def pkg_already_exists(self, pkg_path, identifier, version):
try:
os.unlink(pkg_path)
except OSError as err:
raise ProcessorError(f"Could not remove {pkg_path}: {err}")
raise ProcessorError(f"Could not remove {pkg_path}: {err}") from err
return False
packageinfo_file = os.path.join(self.env["RECIPE_CACHE_DIR"], "PackageInfo")
if not os.path.exists(packageinfo_file):
Expand All @@ -140,7 +140,7 @@ def pkg_already_exists(self, pkg_path, identifier, version):
try:
os.unlink(pkg_path)
except OSError as err:
raise ProcessorError(f"Could not remove {pkg_path}: {err}")
raise ProcessorError(f"Could not remove {pkg_path}: {err}") from err
return False
# parse the PackageInfo file for version and identifier
tree = ET.parse(packageinfo_file)
Expand Down Expand Up @@ -248,7 +248,7 @@ def connect(self):
"The launchd com.github.autopkg.autopkgserver is most likely not "
"loaded or running."
f"\nError message: {err.strerror}"
)
) from err

def send_request(self, request):
"""Send a packaging request to the autopkgserver"""
Expand Down
8 changes: 4 additions & 4 deletions Code/autopkglib/PkgExtractor.py
Original file line number Diff line number Diff line change
Expand Up @@ -54,20 +54,20 @@ def extract_payload(self, pkg_path, extract_root):
try:
shutil.rmtree(extract_root)
except OSError as err:
raise ProcessorError(f"Failed to remove extract_root: {err}")
raise ProcessorError(f"Failed to remove extract_root: {err}") from err

try:
with open(info_plist, "rb") as f:
info = plistlib.load(f)
except Exception as err:
raise ProcessorError(f"Failed to read Info.plist: {err}")
raise ProcessorError(f"Failed to read Info.plist: {err}") from err

install_target = info.get("IFPkgFlagDefaultLocation", "/").lstrip("/")
extract_path = os.path.join(extract_root, install_target)
try:
os.makedirs(extract_path, 0o755)
except OSError as err:
raise ProcessorError(f"Failed to create extract_path: {err}")
raise ProcessorError(f"Failed to create extract_path: {err}") from err

# Unpack payload.
try:
Expand All @@ -81,7 +81,7 @@ def extract_payload(self, pkg_path, extract_root):
except OSError as err:
raise ProcessorError(
f"ditto execution failed with error code {err.errno}: {err.strerror}"
)
) from err
if proc.returncode != 0:
raise ProcessorError(f"Unpacking payload failed: {stderr}")

Expand Down
4 changes: 2 additions & 2 deletions Code/autopkglib/PkgInfoCreator.py
Original file line number Diff line number Diff line change
Expand Up @@ -125,7 +125,7 @@ def load_template(self, template_path, template_type):
except Exception:
raise ProcessorError(
f"Malformed Info.plist template {self.env['template_path']}"
)
) from None
if template_type == "bundle":
return info
else:
Expand All @@ -137,7 +137,7 @@ def load_template(self, template_path, template_type):
except Exception:
raise ProcessorError(
f"Malformed PackageInfo template {self.env['template_path']}"
)
) from None
if template_type == "flat":
return info
else:
Expand Down
4 changes: 2 additions & 2 deletions Code/autopkglib/PkgPayloadUnpacker.py
Original file line number Diff line number Diff line change
Expand Up @@ -56,7 +56,7 @@ def unpack_pkg_payload(self):
except OSError as err:
raise ProcessorError(
f"Can't create {self.env['destination_path']}: {err.strerror}"
)
) from err
elif self.env.get("purge_destination"):
for entry in os.listdir(self.env["destination_path"]):
path = os.path.join(self.env["destination_path"], entry)
Expand All @@ -66,7 +66,7 @@ def unpack_pkg_payload(self):
else:
os.unlink(path)
except OSError as err:
raise ProcessorError(f"Can't remove {path}: {err.strerror}")
raise ProcessorError(f"Can't remove {path}: {err.strerror}") from err

# set an error string when ditto or aa fail
error = ""
Expand Down
6 changes: 3 additions & 3 deletions Code/autopkglib/PkgRootCreator.py
Original file line number Diff line number Diff line change
Expand Up @@ -57,14 +57,14 @@ def main(self):
elif os.path.isdir(self.env["pkgroot"]):
shutil.rmtree(self.env["pkgroot"])
except OSError as err:
raise ProcessorError(f"Can't remove {self.env['pkgroot']}: {err.strerror}")
raise ProcessorError(f"Can't remove {self.env['pkgroot']}: {err.strerror}") from err

# Create pkgroot. autopkghelper sets it to root:admin 01775.
try:
os.makedirs(self.env["pkgroot"])
self.output(f"Created {self.env['pkgroot']}")
except OSError as err:
raise ProcessorError(f"Can't create {self.env['pkgroot']}: {err.strerror}")
raise ProcessorError(f"Can't create {self.env['pkgroot']}: {err.strerror}") from err

# Create directories.
absroot = os.path.abspath(self.env["pkgroot"])
Expand All @@ -88,7 +88,7 @@ def main(self):
except OSError as err:
raise ProcessorError(
f"Can't create {dirpath} with mode {mode}: {err.strerror}"
)
) from err


if __name__ == "__main__":
Expand Down
4 changes: 2 additions & 2 deletions Code/autopkglib/PlistEditor.py
Original file line number Diff line number Diff line change
Expand Up @@ -59,15 +59,15 @@ def read_plist(self, pathname):
with open(pathname, "rb") as f:
return plistlib.load(f)
except Exception as err:
raise ProcessorError(f"Could not read {pathname}: {err}")
raise ProcessorError(f"Could not read {pathname}: {err}") from err

def write_plist(self, data, pathname):
"""writes a plist to pathname"""
try:
with open(pathname, "wb") as f:
plistlib.dump(data, f)
except Exception as err:
raise ProcessorError(f"Could not write {pathname}: {err}")
raise ProcessorError(f"Could not write {pathname}: {err}") from err

def main(self):
# read original plist (or empty plist)
Expand Down
6 changes: 3 additions & 3 deletions Code/autopkglib/PlistReader.py
Original file line number Diff line number Diff line change
Expand Up @@ -110,7 +110,7 @@ def get_bundle_info_path(self, path):
raise ProcessorError(
f"File {path} looks like a bundle, but its "
"'Contents/Info.plist' file cannot be parsed."
)
) from None
if plist:
bundle_info_path = test_info_path
return bundle_info_path
Expand Down Expand Up @@ -156,7 +156,7 @@ def main(self):
with open(path, "rb") as f:
info = plistlib.load(f)
except Exception as err:
raise ProcessorError(err)
raise ProcessorError(err) from err

# Copy each plist_keys' values and assign to new env variables
self.env["plist_reader_output_variables"] = {}
Expand All @@ -172,7 +172,7 @@ def main(self):
except KeyError:
raise ProcessorError(
f"Key '{key}' could not be found in the plist {path}!"
)
) from None

finally:
if dmg:
Expand Down
2 changes: 1 addition & 1 deletion Code/autopkglib/SparkleUpdateInfoProvider.py
Original file line number Diff line number Diff line change
Expand Up @@ -218,7 +218,7 @@ def parse_feed_data(self, data):
try:
xmldata = ElementTree.fromstring(data)
except Exception:
raise ProcessorError("Error parsing XML from appcast feed.")
raise ProcessorError("Error parsing XML from appcast feed.") from None

items = xmldata.findall("channel/item")
if not items:
Expand Down

0 comments on commit 59d76bc

Please sign in to comment.