def config(): """Get ConfigargParse based configuration. The config file in /etc gets overriden by the one in $HOME which gets overriden by the one in the current directory. Everything can also be set from environment variables. """ default_config_file = basename(__file__).replace(".py", ".conf") default_config_files = [ "/etc/" + default_config_file, expanduser("~") + "/" + default_config_file, default_config_file, ] parser = ArgumentParser( default_config_files=default_config_files, description="RaBe Intranet Landing Page", ) parser.add_argument("--title", env_var="PAGE_TITLE", default="RaBe Intranet") parser.add_argument( "--background-image", env_var="PAGE_BACKGROUND", default="https://rabe.ch/wp-content/uploads/2016/07/Header.gif", ) parser.add_argument("--links", env_var="PAGE_LINKS", action="append", default=[]) parser.add_argument("--address", env_var="PAGE_ADDRESS", default="0.0.0.0") parser.add_argument("--port", env_var="PAGE_PORT", default=5000) parser.add_argument("--thread-pool", env_var="PAGE_THREADPOOL", default=30) parser.add_argument("--dev", env_var="PAGE_DEVSERVER", default=False) args = parser.parse_args() logger.error(parser.format_values()) if args.links == []: args.links = [ "Studiomail;//studiomail.int.example.org", "Homepage;https://www.rabe.ch", "Intranet;//wiki.int.example.org/", ] if args.links: def link_split(l): s = l.split(";") return {"name": s[0], "target": s[1]} args.links = list(map(link_split, args.links)) if args.port: args.port = int(args.port) return args
def main(debug=False, options_flag=False): parser = ArgumentParser() parser.add( "-V", "--version", action="version", version=f"layout-generator version: {__version__}", ) subparsers = parser.add_subparsers(title="commands") generate_parser = subparsers.add_parser( "generate", help="generate discrete layout data") generate_parser = get_parser_discrete(generate_parser) generate_parser.set_defaults(handle=handle_generate, parser=generate_parser) generate_c_parser = subparsers.add_parser( "generate_c", help="generate continuous layout data") generate_c_parser = get_parser_continuous(generate_c_parser) generate_c_parser.set_defaults(handle=handle_generate_c, parser=generate_c_parser) generate_c_power_parser = subparsers.add_parser( "generate_c_power", help="generate continuous layout data with sampling component powers", ) generate_c_power_parser = get_parser_continuous_power( generate_c_power_parser) generate_c_power_parser.set_defaults(handle=handle_generate_c_power, parser=generate_c_power_parser) plot_parser = subparsers.add_parser("plot", help="plot layout data") plot_parser = get_plot_parser(plot_parser) plot_parser.set_defaults(handle=handle_plot) convert_parser = subparsers.add_parser("convert", help="convert layout data") convert_parser = get_convert_parser(convert_parser) convert_parser.set_defaults(handle=handle_convert) makeconfig_parser = subparsers.add_parser("makeconfig", help="make template config") makeconfig_parser = get_parser_makeconfig(makeconfig_parser) makeconfig_parser.set_defaults(handle=handle_makeconfig) options, _ = parser.parse_known_args() if hasattr(options, "test") and options.test: # 仅测试,输出参数 print(parser.format_values()) print(options) # print(sys.argv) parser.exit() if debug: del_parser(options) return parser, options if hasattr(options, "handle"): options.handle(options) if options_flag: return options