Example #1
0
 def github():
     """tag it with the current version"""
     with LocalShell() as local:
         local.run('git tag {name}-{ver} -m "Adds a tag so we can put this on PyPI"'.format(
             name=Project.package,
             ver=get_project_version(Project.package)))
         local.run('git push --tags origin master')
Example #2
0
    def metadata(self, data_dict):
        """
        Set the project's environment attributes

        :param data_dict: the project's attributes
        :type data_dict: dict
        """

        def set_default_attr(attr, default_attr, first=False):
            """
            If the attribute is not set, then set it to the value of the default attribute.
            If first is asserted, then the value of the default attribute should be a list and we
            want the first value in the list.
            """
            if getattr(self, attr, None) is None:
                default_value = getattr(self, default_attr, None)
                if default_value and first:
                    default_value = getattr(self, default_attr, None)[0]
                setattr(self, attr, default_value)

        # print("metadata(%s)" % repr(data_dict))
        for key, value in data_dict.items():
            self.__setattr__(key, value)
            if key.endswith('_dir'):
                self.__directory(value)

        self.__check_missing_required_attributes()

        setattr(self, 'name', re.sub(r'[ -]', '', getattr(self, 'name', '')))
        set_default_attr('title', 'name')
        set_default_attr('class_name_prefix', 'name')

        # noinspection PyUnresolvedReferences
        from herringlib.version import get_project_version

        self.__setattr__('version', get_project_version(project_package=self.package))
        debug("{name} version: {version}".format(name=getattr(self, 'name', ''), version=self.version))

        if Project.package is None:
            Project.main = None
        else:
            if 'script' not in self.__dict__:
                self.__setattr__('script', Project.package)
            if 'main' not in self.__dict__:
                self.__setattr__('main', '{name}_main.py'.format(name=Project.package))

        if Project.name is not None:
            if Project.logo_name is None:
                Project.logo_name = Project.name
            if 'egg_dir' not in self.__dict__:
                self.__setattr__('egg_dir', "{name}.egg-info".format(name=Project.name))

        set_default_attr('venv_base', 'package')
        set_default_attr('test_python_versions', 'python_versions')
        set_default_attr('tox_python_versions', 'test_python_versions')
        set_default_attr('metrics_python_versions', 'python_versions')
        set_default_attr('min_python_version', 'python_versions')

        set_default_attr('sdist_python_version', 'python_versions', first=True)
        set_default_attr('deploy_python_version', 'python_versions', first=True)

        setattr(self, 'min_python_version_tuple', self.version_to_tuple(getattr(self, 'min_python_version', '26')))

        setattr(self, 'pythons_str', " ".join(list(["python{v}".format(v=self.ver_to_version(v))
                                                    for v in getattr(self, 'python_versions')])))

        setattr(self, 'tox_pythons', ",".join(['py{v}'.format(v=v) for v in getattr(self, 'tox_python_versions')]))

        if getattr(self, 'docs_venv', None) is None:
            setattr(self, 'docs_venv', '{name}{ver}'.format(name=getattr(self, 'venv_base'),
                                                            ver=getattr(self, 'doc_python_version')))

        if getattr(self, 'docs_html_path', None) is None:
            setattr(self, 'docs_html_path', os.path.join(getattr(self, 'herringfile_dir', None),
                                                         getattr(self, 'docs_html_dir', None)))

        set_default_attr('docs_host', 'dist_host')
        set_default_attr('docs_user', 'dist_user')
        set_default_attr('docs_password', 'dist_password')
        set_default_attr('docker_project', 'package')

        # load design header from file if available
        # noinspection PyBroadException
        try:
            with open(self.design_header_file) as in_file:
                # noinspection PyAttributeOutsideInit
                self.design_header = in_file.read()
        except Exception:
            pass
    def metadata(self, data_dict):
        """
        Set the project's environment attributes

        :param data_dict: the project's attributes
        :type data_dict: dict
        """
        # print("metadata(%s)" % repr(data_dict))
        for key, value in data_dict.items():
            self.__setattr__(key, value)
            if key.endswith('_dir'):
                self.__directory(value)

        self.__check_missing_required_attributes()

        setattr(self, 'name', re.sub(r'[ -]', '', getattr(self, 'name', '')))
        if getattr(self, 'title', None) is None:
            setattr(self, 'title', getattr(self, 'name', None))

        from herringlib.version import get_project_version

        self.__setattr__('version', get_project_version(project_package=self.package))
        debug("{name} version: {version}".format(name=getattr(self, 'name', ''), version=self.version))

        if Project.package is None:
            Project.main = None
        else:
            if 'script' not in self.__dict__:
                self.__setattr__('script', Project.package)
            if 'main' not in self.__dict__:
                self.__setattr__('main', '{name}_main.py'.format(name=Project.package))

        if Project.name is not None:
            if Project.logo_name is None:
                Project.logo_name = Project.name
            if 'egg_dir' not in self.__dict__:
                self.__setattr__('egg_dir', "{name}.egg-info".format(name=Project.name))

        if Project.venv_base is None:
            Project.venv_base = Project.package

        if getattr(self, 'test_python_versions', None) is None:
            setattr(self, 'test_python_versions', getattr(self, 'python_versions'))

        if getattr(self, 'metrics_python_versions', None) is None:
            setattr(self, 'metrics_python_versions', getattr(self, 'python_versions'))

        if getattr(self, 'sdist_python_version', None) is None:
            setattr(self, 'sdist_python_version', getattr(self, 'python_versions')[0])

        if getattr(self, 'deploy_python_version', None) is None:
            setattr(self, 'deploy_python_version', getattr(self, 'python_versions')[0])

        if getattr(self, 'min_python_version', None) is None:
            setattr(self, 'min_python_version', min(getattr(self, 'python_versions')))

        setattr(self, 'min_python_version_tuple', self.version_to_tuple(getattr(self, 'min_python_version', '26')))

        if getattr(self, 'docs_html_path', None) is None:
            setattr(self, 'docs_html_path', os.path.join(getattr(self, 'herringfile_dir', None),
                                                         getattr(self, 'docs_html_dir', None)))

        if getattr(self, 'docs_host', None) is None:
            setattr(self, 'docs_host', getattr(self, 'dist_host', None))

        if getattr(self, 'docs_user', None) is None:
            setattr(self, 'docs_user', getattr(self, 'dist_user', None))

        if getattr(self, 'docs_password', None) is None:
            setattr(self, 'docs_password', getattr(self, 'dist_password', None))

        if getattr(self, 'docker_project', None) is None:
            setattr(self, 'docker_project', getattr(self, 'package', None))

        # load design header from file if available
        # noinspection PyBroadException
        try:
            with open(self.design_header_file) as in_file:
                # noinspection PyAttributeOutsideInit
                self.design_header = in_file.read()
        except:
            pass