From 809582ca7a94737be4078c2731ab10bb6b7e51e5 Mon Sep 17 00:00:00 2001 From: shenyuhan Date: Tue, 10 Sep 2019 13:04:15 +0800 Subject: [PATCH] add user_home --- paddlehub/commands/config.py | 134 +++++++++++++++++++++++++++++++++++ paddlehub/common/dir.py | 27 +++++-- 2 files changed, 154 insertions(+), 7 deletions(-) create mode 100644 paddlehub/commands/config.py diff --git a/paddlehub/commands/config.py b/paddlehub/commands/config.py new file mode 100644 index 00000000..b1bfaab1 --- /dev/null +++ b/paddlehub/commands/config.py @@ -0,0 +1,134 @@ +#coding:utf-8 +# Copyright (c) 2019 PaddlePaddle Authors. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License" +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +from __future__ import absolute_import +from __future__ import division +from __future__ import print_function + +import argparse +import json +import os +import re + +from paddlehub.commands.base_command import BaseCommand, ENTRY +from paddlehub.common.dir import CONF_HOME +from paddlehub.common.server_config import default_server_config + + +class ConfigCommand(BaseCommand): + name = "config" + + def __init__(self, name): + super(ConfigCommand, self).__init__(name) + self.show_in_help = True + self.description = "Configure PaddleHub." + self.parser = argparse.ArgumentParser( + description=self.__class__.__doc__, + prog='%s %s [COMMAND]' % (ENTRY, name), + usage='%(prog)s', + add_help=True) + self.parser.add_argument("command") + self.parser.add_argument("option", nargs="?") + self.parser.add_argument("value", nargs="?") + + @staticmethod + def show_config(): + print("The current configuration is shown below.") + with open(os.path.join(CONF_HOME, "config.json"), "r") as fp: + print(json.dumps(json.load(fp), indent=4)) + + @staticmethod + def set_server_url(server_url): + with open(os.path.join(CONF_HOME, "config.json"), "r") as fp: + config = json.load(fp) + re_str = "^(?:http(s)?:\/\/)?[\w.-]+(?:\.[\w\.-]+)+[\w\-\._~:/?#[\]@!\$&'\*\+,;=.]+$" + if re.match(re_str, server_url) is not None: + config["server_url"] = list([server_url]) + ConfigCommand.set_config(config) + else: + print("The format of the input url is invalid.") + + @staticmethod + def set_config(config): + with open(os.path.join(CONF_HOME, "config.json"), "w") as fp: + fp.write(json.dumps(config)) + print("Set success! The current configuration is shown below.") + print(json.dumps(config, indent=4)) + + @staticmethod + def show_server_url(): + with open(os.path.join(CONF_HOME, "config.json"), "r") as fp: + config = json.load(fp) + print(config["server_url"]) + + @staticmethod + def show_log_level(): + with open(os.path.join(CONF_HOME, "config.json"), "r") as fp: + print(json.load(fp)["log_level"]) + + @staticmethod + def set_log_level(level): + if level not in ["CRITICAL", "FATAL", "ERROR", "WARN", + "WARNING", "INFO", "DEBUG", "NOTSET"]: + print("Allowed values include: " + "CRITICAL, FATAL, ERROR, WARN, WARNING, INFO, DEBUG, NOTSET") + return + with open(os.path.join(CONF_HOME, "config.json"), "r") as fp: + current_config = json.load(fp) + with open(os.path.join(CONF_HOME, "config.json"), "w") as fp: + current_config["log_level"] = level + fp.write(json.dumps(current_config)) + print("Set success! The current configuration is shown below.") + print(json.dumps(current_config, indent=4)) + + @staticmethod + def show_help(): + str = "config