mandeep/Travis-Encrypt

Fails update on complex .travis.yml file

Closed this issue · 2 comments

ad-m commented
$ travis-encrypt --env watchdogpolska watchdog-id .travis.yml 
Password: 
Traceback (most recent call last):
  File "/home/adas/.virtualenvs/watchdog_id/bin/travis-encrypt", line 11, in <module>
    sys.exit(cli())
  File "/home/adas/.virtualenvs/watchdog_id/lib/python3.5/site-packages/click/core.py", line 722, in __call__
    return self.main(*args, **kwargs)
  File "/home/adas/.virtualenvs/watchdog_id/lib/python3.5/site-packages/click/core.py", line 697, in main
    rv = self.invoke(ctx)
  File "/home/adas/.virtualenvs/watchdog_id/lib/python3.5/site-packages/click/core.py", line 895, in invoke
    return ctx.invoke(self.callback, **ctx.params)
  File "/home/adas/.virtualenvs/watchdog_id/lib/python3.5/site-packages/click/core.py", line 535, in invoke
    return callback(*args, **kwargs)
  File "/home/adas/.virtualenvs/watchdog_id/lib/python3.5/site-packages/travis/cli.py", line 39, in cli
    config.setdefault('env', {}).setdefault('global', {})['secure'] = encrypted_password
TypeError: list indices must be integers or slices, not str
$ cat .travis.yml 
language: python
python: 3.5

cache:
  directories:
    - $HOME/.cache/pip

env:
  global:
    - DATABASE_URL="mysql://root:@localhost/test_watchdog_id"
    - DJANGO_SETTINGS_MODULE="config.settings.local"
    - secure: EISJIPM6AKhe72FqspngjmIXwdXWAWveLUkVJVPYohcUpmboxmC4pVMV5dNQT28mrOoMTak0eatbypBA2oj3JZOlawqtQkxr9ztzkOXt3k/SY4rvJ9OH6zJLJ1DPwYNEszjDhvHLlhtOwSkqCLfEPF5nli22QrBSdRzzJXr/qEz7dGtB3Qi+0XuAfuGrkoxqg1unbkQiZOgsn8lO/QFX6LU8fCQzpZkr63yCKjkRMaSR7CrI014FvdEMMDQxg7etuEJ2avHMeuqvrV3kw7I/w1HOyW/VUbPvIdpvxSlYity8ex4A+YEonsYIYKOpU/BY4Gv6kd5GHC0EvLVaJXhz7/L/xIQq1ph6CIqVqn6aB0IXbWUAujphSzisatsvLouWOMCSRePNM58Gcx99LCdujNvtmHqhoxMIxGTYZve+YwUJTVe7F6PAwA3wElGTtqm48l2NsrD7flm7T9t+2+AhwKMvvs0mRfUYUKMe5DEMn60B3+GsH2K08A/kV6Rkr6hplcXeVVgRi3NACoaTVIBCLB/0McTK1uXasQ5kSHphINW900Ut6Q/xHMYsAgCvQj3TBUVssR+0kKNaC59tWFdrYkqX8Ry+D8njOriI5gANgx602cxFS3WFcOHs2yzQC3wA2scsMObWZfj+EX4wVnE5pA71nuBvZBAMGFaEEwJOieU=
  matrix:
    - TOX_ENV=dj110-coveralls DATABASE_URL="mysql://root:@localhost/test_watchdog_id"
    - TOX_ENV=dj111-coveralls DATABASE_URL="mysql://root:@localhost/test_watchdog_id"
    - TOX_ENV=dj20-coveralls DATABASE_URL="mysql://root:@localhost/test_watchdog_id"
    - TOX_ENV=djmaster-coveralls DATABASE_URL="mysql://root:@localhost/test_watchdog_id"

    - TOX_ENV=dj110-coveralls DATABASE_URL="postgres://postgres:@localhost/test_watchdog_id"
    - TOX_ENV=dj111-coveralls DATABASE_URL="postgres://postgres:@localhost/test_watchdog_id"
    - TOX_ENV=dj20-coveralls DATABASE_URL="postgres://postgres:@localhost/test_watchdog_id"
    - TOX_ENV=djmaster-coveralls DATABASE_URL="postgres://postgres:@localhost/test_watchdog_id"

    - TOX_ENV=flake8

matrix:
  allow_failures:
    - env: TOX_ENV=djmaster-coveralls DATABASE_URL="mysql://root:@localhost/test_watchdog_id"
    - env: TOX_ENV=djmaster-coveralls DATABASE_URL="postgres://postgres:@localhost/test_watchdog_id"
    - env: TOX_ENV=flake8

install:
  - pip install -U pip wheel
  - pip install tox
script:
  - tox -e $TOX_ENV

Sorry for the delay in fixing this issue. The problem was that the global key had multiple items which YAML reads as a list rather than a dictionary. I've pushed a fix that handles this case.

ad-m commented