#!/usr/bin/env python3 # Standard library import sys import traceback # First-party/Local from get_community_team_data import get_community_team_data from set_codeowners import create_codeowners_for_data from set_teams_on_github import create_teams_for_data class ScriptError(Exception): def __init__(self, message, code=None): self.code = code if code else 1 message = "({}) {}".format(self.code, message) super(ScriptError, self).__init__(message) def main(): exit_status = 0 exit_status = create_teams_for_data(get_community_team_data(), exit_status) create_codeowners_for_data(get_community_team_data()) sys.exit(exit_status) if __name__ == "__main__": try: main() except SystemExit as e: sys.exit(e.code) except KeyboardInterrupt: print("INFO (130) Halted via KeyboardInterrupt.", file=sys.stderr) sys.exit(130) except ScriptError: error_type, error_value, error_traceback = sys.exc_info() print("ERROR {}".format(error_value), file=sys.stderr) sys.exit(error_value.code) except Exception: print("ERROR (1) Unhandled exception:", file=sys.stderr) print(traceback.print_exc(), file=sys.stderr) sys.exit(1)