kopia lustrzana https://github.com/inkstitch/inkstitch
69 wiersze
2.6 KiB
Python
69 wiersze
2.6 KiB
Python
# Authors: see git history
|
|
#
|
|
# Copyright (c) 2010 Authors
|
|
# Licensed under the GNU GPL version 3.0 or later. See the file LICENSE for details.
|
|
import traceback
|
|
import sys
|
|
import platform
|
|
import subprocess
|
|
from glob import glob
|
|
|
|
|
|
class InkstitchException(Exception):
|
|
pass
|
|
|
|
|
|
def get_os_version():
|
|
if sys.platform == "win32":
|
|
# To get the windows version, python functions are used
|
|
# Using python subprocess with cmd.exe in windows is currently a security risk
|
|
os_ver = "Windows " + platform.release() + " version: " + platform.version()
|
|
if sys.platform == "darwin":
|
|
# macOS command line progam provides accurate info than python functions
|
|
mac_v1 = subprocess.run(["sw_vers"], capture_output=True, text=True)
|
|
mac_v1 = str(mac_v1.stdout.strip())
|
|
mac_v2 = subprocess.run(["uname", "-m"], capture_output=True, text=True)
|
|
mac_v2 = str(mac_v2.stdout.strip())
|
|
os_ver = mac_v1 + "\nCPU:\t\t\t\t" + mac_v2
|
|
if sys.platform == "linux":
|
|
# Getting linux version method used here is for systemd and nonsystemd linux.
|
|
try:
|
|
ltmp = subprocess.run(["cat"] + glob("/etc/*-release"), capture_output=True, text=True)
|
|
lnx_ver = ltmp.stdout.splitlines()
|
|
lnx_ver = str(list(filter(lambda x: "PRETTY_NAME" in x, lnx_ver)))
|
|
os_ver = lnx_ver[15:][:-3]
|
|
except FileNotFoundError:
|
|
os_ver = "Cannot get Linux distro version"
|
|
|
|
return os_ver
|
|
|
|
|
|
def format_uncaught_exception():
|
|
"""Format the current exception as a request for a bug report.
|
|
|
|
Call this inside an except block so that there is an exception that we can
|
|
call traceback.format_exc() on.
|
|
"""
|
|
|
|
# importing locally to avoid any possibility of circular import
|
|
from lib.utils import version
|
|
from .i18n import _
|
|
|
|
message = ""
|
|
message += _("Ink/Stitch experienced an unexpected error. This means it is a bug in Ink/Stitch.")
|
|
message += "\n\n"
|
|
# L10N this message is followed by a URL: https://github.com/inkstitch/inkstitch/issues/new
|
|
message += _("If you'd like to help please\n"
|
|
"- copy the entire error message below\n"
|
|
"- save your SVG file and\n"
|
|
"- create a new issue at")
|
|
message += " https://github.com/inkstitch/inkstitch/issues/new\n\n"
|
|
message += _("Include the error description and also (if possible) the svg file.")
|
|
message += '\n\n'
|
|
message += get_os_version()
|
|
message += '\n\n'
|
|
message += version.get_inkstitch_version() + '\n'
|
|
message += traceback.format_exc()
|
|
|
|
return message
|