diff --git a/git_utils.py b/git_utils.py new file mode 100644 index 0000000000000000000000000000000000000000..4fdd83b230ece394285a60ec7ddb0c8e96b5809a --- /dev/null +++ b/git_utils.py @@ -0,0 +1,97 @@ +''' +Created on 28. jul. 2017 + +@author: mmpe +''' +import os +import subprocess + + +def _run_git_cmd(cmd, git_repo_path=None): + git_repo_path = git_repo_path or os.getcwd() + if not os.path.isdir(os.path.join(git_repo_path, ".git")): + raise Warning("'%s' does not appear to be a Git repository." % git_repo_path) + try: + process = subprocess.Popen(cmd, + stdout=subprocess.PIPE, + stderr=subprocess.PIPE, + universal_newlines=True, + cwd=os.path.abspath(git_repo_path)) + stdout, stderr = process.communicate() + if process.returncode != 0: + raise EnvironmentError("%s\n%s" % (stdout, stderr)) + return stdout.strip() + + except EnvironmentError as e: + raise e + raise Warning("unable to run git") + + +def get_git_version(git_repo_path=None): + cmd = ["git", "describe", "--tags", "--dirty", "--always"] + return _run_git_cmd(cmd, git_repo_path) + + +def get_tag(git_repo_path=None, verbose=False): + tag = _run_git_cmd(['git', 'describe', '--tags', '--always', '--abbrev=0'], git_repo_path) + if verbose: + print(tag) + return tag + + +def set_tag(tag, push, git_repo_path=None): + _run_git_cmd(["git", "tag", tag], git_repo_path) + if push: + _run_git_cmd(["git", "push"], git_repo_path) + _run_git_cmd(["git", "push", "--tags"], git_repo_path) + + +def update_git_version(version_module, git_repo_path=None): + """Update <version_module>.__version__ to git version""" + + version_str = get_git_version(git_repo_path) + assert os.path.isfile(version_module.__file__) + with open(version_module.__file__, "w") as fid: + fid.write("__version__ = '%s'" % version_str) + + # ensure file is written, closed and ready + with open(version_module.__file__) as fid: + fid.read() + return version_str + + +def write_vers(vers_file='wetb/__init__.py', repo=None, skip_chars=1): + if not repo: + repo = os.getcwd() + version = get_tag(repo)[skip_chars:] + print('Writing version: {} in {}'.format(version, vers_file)) + with open(vers_file, 'r') as f: + lines = f.readlines() + for n, l in enumerate(lines): + if l.startswith('__version__'): + lines[n] = "__version__ = '{}'\n".format(version) + for n, l in enumerate(lines): + if l.startswith('__release__'): + lines[n] = "__release__ = '{}'\n".format(version) + with open(vers_file, 'w') as f: + f.write(''.join(lines)) + return version + + +def rename_dist_file(): + for f in os.listdir('dist'): + if f.endswith('whl'): + split = f.split('linux') + new_name = 'manylinux1'.join(split) + old_path = os.path.join('dist', f) + new_path = os.path.join('dist', new_name) + os.rename(old_path, new_path) + + +def main(): + """Example of how to run (pytest-friendly)""" + if __name__ == '__main__': + pass + + +main() diff --git a/setup.py b/setup.py index 1a11e3207a41648bf67924350bf6175a0b7b782b..3b0d8ed48b55a6464071ce66aa192539b8e3232d 100644 --- a/setup.py +++ b/setup.py @@ -5,13 +5,17 @@ Setup file for Topfarm2 import os +from git_utils import write_vers from setuptools import setup, find_packages +repo = os.path.dirname(__file__) +version = write_vers(vers_file='topfarm/__init__.py', repo=repo, skip_chars=1) + def read(fname): return open(os.path.join(os.path.dirname(__file__), fname)).read() setup(name='topfarm', - version='2.0.3', + version=version, description='Topfarm - Wind farm optimization using OpenMDAO', long_description=read('README'), url='https://gitlab.windenergy.dtu.dk/TOPFARM/topfarm2', diff --git a/topfarm/__init__.py b/topfarm/__init__.py index 8270eabd0af814f719de8ae708a4d5e356813392..6b86a02f1512486a09e7b017f7be263cc073cdcc 100644 --- a/topfarm/__init__.py +++ b/topfarm/__init__.py @@ -1,8 +1,8 @@ from ._topfarm import * from .deprectated_topfarm_problems import * -__version__ = '2.0.3' -__release__ = '2.0.3' +__version__ = 'filled by setup.py' +__release__ = 'filled by setup.py' x_key = 'x'