Beispiel #1
0
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
Beispiel #2
0
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