Esempio n. 1
0
    def handle(self, **options):
        app_code, target = options.pop('name'), options.pop('directory')
        self.validate_name(app_code, 'project')

        # Check that the project_name cannot be imported.
        try:
            import_module(app_code)
        except ImportError:
            pass
        else:
            raise CommandError('%r conflicts with the name of an existing '
                               'Python module and cannot be used as a '
                               'project name. Please try another name.' %
                               app_code)

        run_ver = blueapps.get_run_ver() or options.get('run_ver')
        # Create a random SECRET_KEY to put it in the main settings.
        if not options.get('secret_key'):
            secret_key = input('secret_key: ').strip()
            if not run_ver:
                run_ver = self.confirm_run_ver()
            if not secret_key or len(secret_key) != \
                    platform_secret_key_length_map[run_ver]:
                raise CommandError("secret_key is necessary and "
                                   "it's length is %s" %
                                   platform_secret_key_length_map[run_ver])
            options['secret_key'] = secret_key
        options['run_ver'] = run_ver
        options['app_code'] = app_code
        options['blueapps_version'] = blueapps.__version__
        options[
            'esb_sdk_minimum_version'] = platform_esb_minimum_version_map.get(
                run_ver)
        project_name = 'trunk'
        super(Command, self).handle('project', project_name, target, **options)

        # 根据版本确定requirements.txt
        if target is None:
            top_dir = path.join(os.getcwd(), project_name)
        else:
            top_dir = os.path.abspath(path.expanduser(target))
        # open版本的requirements-open.txt路径
        open_requirements_file = os.path.join(top_dir, 'requirements-open.txt')
        # v3版本的requirements-v3.txt路径
        v3_requirements_file = os.path.join(top_dir, 'requirements-v3.txt')
        # 最终的requirements.txt路径
        requirements_file = os.path.join(top_dir, 'requirements.txt')

        # open版本包定制
        if run_ver == 'open':
            # 保留requirements - open.txt, 并重命名为requirements.txt
            os.remove(v3_requirements_file)
            os.rename(open_requirements_file, requirements_file)
        # v3(ieod,qcloud,clouds,tencent)版本包定制
        else:
            # 保留requirements-v3.txt,并重命名为requirements.txt
            os.remove(open_requirements_file)
            os.rename(v3_requirements_file, requirements_file)
Esempio n. 2
0
    def handle(self, **options):
        app_code, target = options.pop("name"), options.pop("directory")
        # self.validate_name(app_code, 'project') app_code并不是项目名称,当app_code为test-test-test这种形式会引起报错,所以不需要检查app_code

        # Check that the project_name cannot be imported.
        try:
            import_module(app_code)
        except ImportError:
            pass
        else:
            raise CommandError("%r conflicts with the name of an existing "
                               "Python module and cannot be used as a "
                               "project name. Please try another name." %
                               app_code)

        run_ver = blueapps.get_run_ver() or options.get("run_ver")
        # Create a random SECRET_KEY to put it in the main settings.
        if not options.get("secret_key"):
            secret_key = input("secret_key: ").strip()
            if not run_ver:
                run_ver = self.confirm_run_ver()
            if (not secret_key or len(secret_key) !=
                    platform_secret_key_length_map[run_ver]):
                raise CommandError("secret_key is necessary and "
                                   "it's length is %s" %
                                   platform_secret_key_length_map[run_ver])
            options["secret_key"] = secret_key
        options["run_ver"] = run_ver
        options["app_code"] = app_code
        options["blueapps_version"] = blueapps.__version__
        options[
            "esb_sdk_minimum_version"] = platform_esb_minimum_version_map.get(
                run_ver)
        project_name = "trunk"
        super(Command, self).handle("project", project_name, target, **options)

        # 根据版本确定requirements.txt
        if target is None:
            top_dir = path.join(os.getcwd(), project_name)
        else:
            top_dir = os.path.abspath(path.expanduser(target))
        # open版本的requirements-open.txt路径
        open_requirements_file = os.path.join(top_dir, "requirements-open.txt")
        # v3版本的requirements-v3.txt路径
        v3_requirements_file = os.path.join(top_dir, "requirements-v3.txt")
        # 公共requirements-common.txt路径
        common_requirements_file = os.path.join(top_dir,
                                                "requirements-common.txt")
        # paas增强requirements-services.txt路径
        services_requirements_file = os.path.join(top_dir,
                                                  "requirements_services.txt")
        # 最终的requirements.txt路径
        requirements_file = os.path.join(top_dir, "requirements.txt")

        # open版本包定制
        if run_ver == "open":
            # 保留requirements - open.txt, 并重命名为requirements.txt
            self.append_requirement_file(common_requirements_file,
                                         open_requirements_file)
            os.remove(open_requirements_file)
            os.remove(v3_requirements_file)
            os.remove(services_requirements_file)
            os.rename(common_requirements_file, requirements_file)
        # v3(ieod,qcloud,clouds,tencent)版本包定制
        else:
            self.append_requirement_file(common_requirements_file,
                                         v3_requirements_file)
            # 保留requirements-v3.txt,并重命名为requirements.txt
            os.remove(open_requirements_file)
            os.remove(v3_requirements_file)
            os.rename(common_requirements_file, requirements_file)