initial
This commit is contained in:
120
.venv/lib/python3.12/site-packages/ezdxf/__main__.py
Normal file
120
.venv/lib/python3.12/site-packages/ezdxf/__main__.py
Normal file
@@ -0,0 +1,120 @@
|
||||
# Copyright (c) 2021-2023, Manfred Moitzi
|
||||
# License: MIT License
|
||||
import sys
|
||||
import argparse
|
||||
from pathlib import Path
|
||||
from ezdxf import options, print_config
|
||||
from ezdxf import commands
|
||||
from ezdxf.fonts import fonts
|
||||
|
||||
YES_NO = {True: "yes", False: "no"}
|
||||
options.set(options.CORE, "LOAD_PROXY_GRAPHICS", "true")
|
||||
|
||||
|
||||
def add_common_arguments(parser):
|
||||
parser.add_argument(
|
||||
"-V",
|
||||
"--version",
|
||||
action="store_true",
|
||||
help="show version and exit",
|
||||
)
|
||||
parser.add_argument(
|
||||
"-f",
|
||||
"--fonts",
|
||||
action="store_true",
|
||||
help="rebuild system font cache and print all fonts found",
|
||||
)
|
||||
parser.add_argument(
|
||||
"-v",
|
||||
"--verbose",
|
||||
action="store_true",
|
||||
help="give more output",
|
||||
)
|
||||
parser.add_argument(
|
||||
"--config",
|
||||
action="store",
|
||||
help="path to a config file",
|
||||
)
|
||||
parser.add_argument(
|
||||
"--log",
|
||||
action="store",
|
||||
help='path to a verbose appending log, "stderr" logs to the '
|
||||
"standard error stream",
|
||||
)
|
||||
|
||||
|
||||
def print_version(verbose=False):
|
||||
print_config(verbose=verbose, stream=sys.stdout)
|
||||
|
||||
|
||||
def print_available_fonts(verbose=False):
|
||||
from ezdxf.fonts import fonts
|
||||
print("Rebuilding system font cache.")
|
||||
fonts.build_system_font_cache()
|
||||
fonts.font_manager.print_available_fonts(verbose)
|
||||
|
||||
|
||||
def setup_log(args):
|
||||
import logging
|
||||
from datetime import datetime
|
||||
from io import StringIO
|
||||
|
||||
level = "DEBUG" if args.verbose else "INFO"
|
||||
if args.log.lower() == "stderr":
|
||||
logging.basicConfig(stream=sys.stderr, level=level)
|
||||
else:
|
||||
logging.basicConfig(filename=args.log, level=level)
|
||||
print(f'Appending logs to file "{args.log}", logging level: {level}\n')
|
||||
logger = logging.getLogger("ezdxf")
|
||||
logger.info("***** Launch time: " + datetime.now().isoformat() + " *****")
|
||||
if args.verbose:
|
||||
s = StringIO()
|
||||
print_config(verbose=True, stream=s)
|
||||
logger.info("configuration\n" + s.getvalue())
|
||||
|
||||
|
||||
DESCRIPTION = """
|
||||
Command launcher for the Python package "ezdxf": https://pypi.org/project/ezdxf/
|
||||
|
||||
"""
|
||||
|
||||
|
||||
def main():
|
||||
parser = argparse.ArgumentParser(
|
||||
"ezdxf",
|
||||
description=DESCRIPTION,
|
||||
)
|
||||
add_common_arguments(parser)
|
||||
subparsers = parser.add_subparsers(dest="command")
|
||||
commands.add_parsers(subparsers)
|
||||
|
||||
args = parser.parse_args(sys.argv[1:])
|
||||
help_ = True
|
||||
if args.config:
|
||||
config = Path(args.config)
|
||||
if config.exists():
|
||||
options.read_file(args.config)
|
||||
if args.verbose:
|
||||
print(f'using config file: "{config}"')
|
||||
else:
|
||||
print(f'config file "{config}" not found')
|
||||
if args.log:
|
||||
setup_log(args)
|
||||
if args.version:
|
||||
print_version(verbose=args.verbose)
|
||||
help_ = False
|
||||
if args.fonts:
|
||||
print_available_fonts(args.verbose)
|
||||
help_ = False
|
||||
|
||||
run = commands.get(args.command)
|
||||
if run:
|
||||
# For the case automatic font loading is disabled:
|
||||
fonts.load()
|
||||
run(args)
|
||||
elif help_:
|
||||
parser.print_help()
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
main()
|
||||
Reference in New Issue
Block a user