| #!/usr/bin/env python |
| |
| """ |
| Rebuilds the .travis.yml file based on the output of ``tox --listenvs`` |
| """ |
| |
| import subprocess as sp |
| |
| template = """\ |
| # !!! WARNING !!! |
| # This file is automatically generated by ./rebuild-travis-yaml |
| # !!! WARNING !!! |
| language: python |
| sudo: false |
| matrix: |
| include: |
| {env_list} |
| install: pip install tox |
| script: tox |
| # !!! WARNING !!! |
| # This file is automatically generated by ./rebuild-travis-yaml |
| # !!! WARNING !!! |
| """ |
| |
| # Maps tox python versions (ex, "py27") to Travis Python versions (ex, "2.7") |
| py_version_map = { |
| "py26": "2.6", |
| "py27": "2.7", |
| "py35": "3.5", |
| "py36": "3.6", |
| "py37": "3.7", |
| "pypy": "pypy", |
| } |
| |
| def main(): |
| tox_envs = sp.check_output("tox --listenvs", shell=True).splitlines() |
| env_list = [] |
| for env in tox_envs: |
| if not env.strip(): |
| continue |
| py_ver, _, _ = env.partition("-") |
| env_list.append("""\ |
| - env: "TOXENV=%s" |
| python: "%s" |
| """ %(env, py_version_map[py_ver])) |
| |
| with open(".travis.yml", "w") as f: |
| f.write(template.format(env_list="".join(env_list))) |
| |
| |
| if __name__ == "__main__": |
| main() |