Merge pull request #779 from armintaenzertng/issue-775-catch-json-decode-error
[issue-775] catch decoding errors while parsing using the cli tool
GitOrigin-RevId: 552940abb52cbc9cf358e429d1388e9c1b25d7a6
Change-Id: If6b1073c3b885fa7928f932ee029e57db750590b
diff --git a/src/spdx_tools/spdx/clitools/pyspdxtools.py b/src/spdx_tools/spdx/clitools/pyspdxtools.py
index 6a46b0d..4219c6b 100644
--- a/src/spdx_tools/spdx/clitools/pyspdxtools.py
+++ b/src/spdx_tools/spdx/clitools/pyspdxtools.py
@@ -14,9 +14,13 @@
# limitations under the License.
import logging
import sys
+from json import JSONDecodeError
+from xml.parsers.expat import ExpatError
+from xml.sax import SAXParseException
import click
from beartype.typing import List
+from yaml.scanner import ScannerError
from spdx_tools.spdx.graph_generation import export_graph_from_document
from spdx_tools.spdx.model import Document
@@ -113,6 +117,22 @@
logging.error(log_string)
sys.exit(1)
+ except JSONDecodeError as err:
+ logging.error(f"Invalid JSON provided: {err.args[0]}")
+ sys.exit(1)
+
+ except ScannerError as err:
+ logging.error("Invalid YAML provided: " + "\n".join([str(arg) for arg in err.args]))
+ sys.exit(1)
+
+ except ExpatError as err:
+ logging.error(f"Invalid XML provided: {err.args[0]}")
+ sys.exit(1)
+
+ except SAXParseException as err:
+ logging.error(f"Invalid RDF-XML provided: {str(err)}")
+ sys.exit(1)
+
except FileNotFoundError as err:
logging.error(f"{err.strerror}: {err.filename}")
sys.exit(1)