From 383c0f3d67f7122a92c23aaf9bb32f234cadc6bb Mon Sep 17 00:00:00 2001 From: James Barnsley Date: Mon, 25 Oct 2021 12:27:58 +1300 Subject: [PATCH 01/16] Installing self --- .github/workflows/python-tests.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/python-tests.yml b/.github/workflows/python-tests.yml index ccef1bc6..993ab784 100644 --- a/.github/workflows/python-tests.yml +++ b/.github/workflows/python-tests.yml @@ -21,5 +21,6 @@ jobs: run: | python -m pip install --upgrade pip pip install tox tox-gh-actions + pip install -e . - name: Test with tox run: tox From 2781add24cc110c7142b5497527bb3571cbbbef9 Mon Sep 17 00:00:00 2001 From: James Barnsley Date: Mon, 25 Oct 2021 12:31:11 +1300 Subject: [PATCH 02/16] Explicit python3 --- .github/workflows/python-tests.yml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/workflows/python-tests.yml b/.github/workflows/python-tests.yml index 993ab784..9eda7223 100644 --- a/.github/workflows/python-tests.yml +++ b/.github/workflows/python-tests.yml @@ -19,8 +19,8 @@ jobs: python-version: ${{ matrix.python-version }} - name: Install dependencies run: | - python -m pip install --upgrade pip - pip install tox tox-gh-actions - pip install -e . + python3 -m pip install --upgrade pip + python3 -m pip install tox tox-gh-actions + python3 -m pip install -e . - name: Test with tox run: tox From 3e254a93fb226ab6039ef826a45013819d643749 Mon Sep 17 00:00:00 2001 From: James Barnsley Date: Mon, 25 Oct 2021 19:45:40 +1300 Subject: [PATCH 03/16] Manually including gi --- .github/workflows/python-tests.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/python-tests.yml b/.github/workflows/python-tests.yml index 9eda7223..0d37956e 100644 --- a/.github/workflows/python-tests.yml +++ b/.github/workflows/python-tests.yml @@ -9,7 +9,7 @@ jobs: runs-on: ubuntu-latest strategy: matrix: - python-version: [3.7, 3.8] + python-version: [3.7] steps: - uses: actions/checkout@v1 @@ -20,7 +20,7 @@ jobs: - name: Install dependencies run: | python3 -m pip install --upgrade pip - python3 -m pip install tox tox-gh-actions + python3 -m pip install tox tox-gh-actions gi python3 -m pip install -e . - name: Test with tox run: tox From 5722835d97d38940665c7aede597cd1622ce39cb Mon Sep 17 00:00:00 2001 From: James Barnsley Date: Mon, 25 Oct 2021 19:47:14 +1300 Subject: [PATCH 04/16] python3-gi --- .github/workflows/python-tests.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/python-tests.yml b/.github/workflows/python-tests.yml index 0d37956e..42670d6e 100644 --- a/.github/workflows/python-tests.yml +++ b/.github/workflows/python-tests.yml @@ -20,7 +20,7 @@ jobs: - name: Install dependencies run: | python3 -m pip install --upgrade pip - python3 -m pip install tox tox-gh-actions gi + python3 -m pip install tox tox-gh-actions python3-gi python3 -m pip install -e . - name: Test with tox run: tox From f87597ddb64762d7f2607bd3c4460aa7ebac49c4 Mon Sep 17 00:00:00 2001 From: James Barnsley Date: Mon, 25 Oct 2021 19:49:37 +1300 Subject: [PATCH 05/16] Splitting GI to system dependency --- .github/workflows/python-tests.yml | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/.github/workflows/python-tests.yml b/.github/workflows/python-tests.yml index 42670d6e..78c04d1e 100644 --- a/.github/workflows/python-tests.yml +++ b/.github/workflows/python-tests.yml @@ -17,10 +17,12 @@ jobs: uses: actions/setup-python@v2 with: python-version: ${{ matrix.python-version }} - - name: Install dependencies + - name: Install system dependencies + run: apt-get install python3-gi + - name: Install python dependencies run: | python3 -m pip install --upgrade pip - python3 -m pip install tox tox-gh-actions python3-gi + python3 -m pip install tox tox-gh-actions python3 -m pip install -e . - name: Test with tox run: tox From 0b69d261b67bc8dd953e56fc4af04c20ca624383 Mon Sep 17 00:00:00 2001 From: James Barnsley Date: Mon, 25 Oct 2021 19:52:34 +1300 Subject: [PATCH 06/16] sudo-ifying --- .github/workflows/python-tests.yml | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/.github/workflows/python-tests.yml b/.github/workflows/python-tests.yml index 78c04d1e..24462eb2 100644 --- a/.github/workflows/python-tests.yml +++ b/.github/workflows/python-tests.yml @@ -18,7 +18,12 @@ jobs: with: python-version: ${{ matrix.python-version }} - name: Install system dependencies - run: apt-get install python3-gi + run: | + sudo apt-get update \ + && sudo apt-get install -y \ + python-dbus python-gobject \ + python3-dbus python3-gi \ + && sudo rm -rf /var/lib/apt/lists/* - name: Install python dependencies run: | python3 -m pip install --upgrade pip From 585d5fa0fc39d40a6a571850e29033d27a899f83 Mon Sep 17 00:00:00 2001 From: James Barnsley Date: Mon, 25 Oct 2021 20:00:14 +1300 Subject: [PATCH 07/16] Using mopidy-tunein as starting point --- .github/workflows/python-tests.yml | 65 ++++++++++++++++++++---------- 1 file changed, 43 insertions(+), 22 deletions(-) diff --git a/.github/workflows/python-tests.yml b/.github/workflows/python-tests.yml index 24462eb2..4c3aa2bd 100644 --- a/.github/workflows/python-tests.yml +++ b/.github/workflows/python-tests.yml @@ -5,29 +5,50 @@ on: - pull_request jobs: - build: - runs-on: ubuntu-latest + main: strategy: + fail-fast: false matrix: - python-version: [3.7] + include: + - name: "Test: Python 3.7" + python: "3.7" + tox: py37 + - name: "Test: Python 3.8" + python: "3.8" + tox: py38 + - name: "Test: Python 3.9" + python: "3.9" + tox: py39 + coverage: true + - name: "Lint: check-manifest" + python: "3.9" + tox: check-manifest + - name: "Lint: flake8" + python: "3.9" + tox: flake8 + + name: ${{ matrix.name }} + runs-on: ubuntu-20.04 + container: ghcr.io/mopidy/ci:latest steps: - - uses: actions/checkout@v1 - - name: Set up Python ${{ matrix.python-version }} - uses: actions/setup-python@v2 - with: - python-version: ${{ matrix.python-version }} - - name: Install system dependencies - run: | - sudo apt-get update \ - && sudo apt-get install -y \ - python-dbus python-gobject \ - python3-dbus python3-gi \ - && sudo rm -rf /var/lib/apt/lists/* - - name: Install python dependencies - run: | - python3 -m pip install --upgrade pip - python3 -m pip install tox tox-gh-actions - python3 -m pip install -e . - - name: Test with tox - run: tox + - uses: actions/checkout@v2 + - uses: actions/setup-python@v2 + with: + python-version: ${{ matrix.python }} + - name: Fix home dir permissions to enable pip caching + run: chown -R root /github/home + - name: Cache pip + uses: actions/cache@v2 + with: + path: ~/.cache/pip + key: ${{ runner.os }}-${{ matrix.python }}-${{ matrix.tox }}-pip-${{ hashFiles('setup.cfg') }}-${{ hashFiles('tox.ini') }} + restore-keys: | + ${{ runner.os }}-${{ matrix.python }}-${{ matrix.tox }}-pip- + - run: python -m pip install pygobject tox + - run: python -m tox -e ${{ matrix.tox }} + if: ${{ ! matrix.coverage }} + - run: python -m tox -e ${{ matrix.tox }} -- --cov-report=xml + if: ${{ matrix.coverage }} + - uses: codecov/codecov-action@v1 + if: ${{ matrix.coverage }} \ No newline at end of file From 23f0bffe7d07c69a054e18d2754bfcac60b6b7d9 Mon Sep 17 00:00:00 2001 From: James Barnsley Date: Mon, 25 Oct 2021 20:58:18 +1300 Subject: [PATCH 08/16] Adding release workflow (WIP) --- .github/workflows/python-tests.yml | 2 +- .../{build-docker.yml => release.yml} | 32 +++++++++++++++++-- 2 files changed, 31 insertions(+), 3 deletions(-) rename .github/workflows/{build-docker.yml => release.yml} (60%) diff --git a/.github/workflows/python-tests.yml b/.github/workflows/python-tests.yml index 4c3aa2bd..d00dd425 100644 --- a/.github/workflows/python-tests.yml +++ b/.github/workflows/python-tests.yml @@ -13,13 +13,13 @@ jobs: - name: "Test: Python 3.7" python: "3.7" tox: py37 + coverage: true - name: "Test: Python 3.8" python: "3.8" tox: py38 - name: "Test: Python 3.9" python: "3.9" tox: py39 - coverage: true - name: "Lint: check-manifest" python: "3.9" tox: check-manifest diff --git a/.github/workflows/build-docker.yml b/.github/workflows/release.yml similarity index 60% rename from .github/workflows/build-docker.yml rename to .github/workflows/release.yml index 7d5efa4b..46dc8b60 100644 --- a/.github/workflows/build-docker.yml +++ b/.github/workflows/release.yml @@ -1,4 +1,4 @@ -name: Build Docker +name: Release on: push: @@ -6,12 +6,34 @@ on: jobs: build-and-push-docker-image: - name: Build image and push to DockerHub + name: Build and publish to PyPi and DockerHub runs-on: ubuntu-latest steps: - name: Checkout code uses: actions/checkout@v2 + + - name: Setup Node + uses: actions/setup-node@v2 + with: + node-version: '12' + + - name: Install JS dependencies + run: npm install + + - name: Build JS + run: npm run build:prod + + - name: Setup Python + uses: actions/setup-python@v2 + with: + python-version: '3.7' + + - name: "Install Python dependencies" + run: python3 -m pip install build + + - name: "Build Python package" + run: python3 -m build - name: Set up Docker Buildx id: buildx @@ -39,5 +61,11 @@ jobs: # build on feature branches, push only on master branch push: ${{ github.ref == 'refs/heads/master' }} + - name: Publish to Pypi + uses: pypa/gh-action-pypi-publish@v1.4.1 + with: + user: __token__ + password: ${{ secrets.PYPI_TOKEN }} + - name: Image digest run: echo ${{ steps.docker_build.outputs.digest }} From 953cee49caf9404047f4f585b98ae6ca38e59cdd Mon Sep 17 00:00:00 2001 From: James Barnsley Date: Mon, 25 Oct 2021 20:58:32 +1300 Subject: [PATCH 09/16] Black to cleanup whitespace --- mopidy_iris/core.py | 26 +++++++++++++++++--------- 1 file changed, 17 insertions(+), 9 deletions(-) diff --git a/mopidy_iris/core.py b/mopidy_iris/core.py index ba045c01..8e519bdd 100755 --- a/mopidy_iris/core.py +++ b/mopidy_iris/core.py @@ -1157,9 +1157,10 @@ class IrisCore(pykka.ThreadingActor): # Uses snapcast server and stream details as defined in configuration ## async def update_snapcast_meta(self, *args, **kwargs): + callback = kwargs.get("callback", False) track = self.core.playback.get_current_track().get() meta = {} - + if track: # Convert the Track to JSON, but to make it a response-ready JSON we need to load it. # Required because ModelJSONEncoder produces single-quote JSON, and we need standard @@ -1168,10 +1169,7 @@ class IrisCore(pykka.ThreadingActor): images = self.core.library.get_images([track["uri"]]).get() if images: meta["images"] = json.loads( - json.dumps( - images[track["uri"]], - cls=ModelJSONEncoder - ) + json.dumps(images[track["uri"]], cls=ModelJSONEncoder) ) meta["name"] = track["name"] meta["uri"] = track["uri"] @@ -1191,8 +1189,8 @@ class IrisCore(pykka.ThreadingActor): "method": "Stream.SetMeta", "params": { "id": self.config["iris"]["snapcast_stream"], - "meta": meta - } + "meta": meta, + }, } try: @@ -1202,10 +1200,20 @@ class IrisCore(pykka.ThreadingActor): ) except (urllib.error.HTTPError, urllib.error.URLError) as e: error = json.loads(e.read()) - logger.error('Could not update Snapcast meta', error) + logger.error("Could not update Snapcast meta", error) + response = { + "message": "Could not update Snapcast meta", + error: error, + } except Exception as e: logger.error(e) - pass # Non-blocking error; TODO more elegantly catch exception without killing Mopidy + response = {"message": "Could not update Snapcast meta"} + pass # Non-blocking error + + if callback: + callback(response) + else: + return response ## # Simple test method to debug access to system tasks From 2a846cd4e51f72ba06f2b805a775a0ee6bcf1ab4 Mon Sep 17 00:00:00 2001 From: James Barnsley Date: Mon, 25 Oct 2021 21:11:19 +1300 Subject: [PATCH 10/16] Codecov cleanup --- mopidy_iris/core.py | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/mopidy_iris/core.py b/mopidy_iris/core.py index 8e519bdd..9dfbe111 100755 --- a/mopidy_iris/core.py +++ b/mopidy_iris/core.py @@ -1200,7 +1200,7 @@ class IrisCore(pykka.ThreadingActor): ) except (urllib.error.HTTPError, urllib.error.URLError) as e: error = json.loads(e.read()) - logger.error("Could not update Snapcast meta", error) + logger.error("Could not update Snapcast meta") response = { "message": "Could not update Snapcast meta", error: error, @@ -1208,7 +1208,6 @@ class IrisCore(pykka.ThreadingActor): except Exception as e: logger.error(e) response = {"message": "Could not update Snapcast meta"} - pass # Non-blocking error if callback: callback(response) From 160c94d0c2c7e4af129c9033917882a89bfe5ea1 Mon Sep 17 00:00:00 2001 From: James Barnsley Date: Tue, 26 Oct 2021 21:21:12 +1300 Subject: [PATCH 11/16] Explicitly setting MANIFEST, a nightmare to get config values respected --- .coverage | Bin 53248 -> 53248 bytes MANIFEST.in | 11 +++++++---- setup.cfg | 2 +- 3 files changed, 8 insertions(+), 5 deletions(-) diff --git a/.coverage b/.coverage index 7e67345ef1de4bd03f19be345c4ff7b7eb94c642..71b99e5b526b57a331011f9f6cb22cdbd4ad96f8 100644 GIT binary patch delta 936 zcma)4y>HV{5I_6bQB3N01__Wz+9p*I48+e)p;0qMv;$i=B!rL&t<_kNI!Z!C1{71V zQ{)YXmcM{P2IdOEM)!7X2PA}$=s=N>QqDo=x>Kqxt=zsO%6`Qa59@AC%=ruVNq9A{F3g7iNK~6sdGWxzM@pmYFHf2I z@TsuJ|C15E7y0&)h#AOt06*aiT%tiw@f{lT18<2K1NWG&6~F2&Hl6MSG-AW8nAK)h zWl%an!h&CO34TRk;2aOX__sl&Tis?1ya9N)K0kWSmWPJ6qL4H+v_C(Ad>3#V6ZjI# zSm3*~^he&Zm@5r5>Am#Oons~|og|^Zvzlejzu=R99<{f#l4IT=JY09i&JK@kQN(7R zHn2i_->Z%BZTOtzK6m2#4Z^a7Z0UsDyOtc{I5FY7#W1&2i)1SzRFhpKJ`S*eVeIx(@B z&VxzB3g8*O!Qc1|KVgLer%{Y^pXtlj8Ik2>rd6008NSGL5RQroUS+x!j@?0rK=Ep# zdmc_IL;?68|Kc%rFolA${tfG^&m(&yQnJLs3)#C_xwzR7hA=^a1%?Sg)>n)GOaU0= zX8#63*nc-cL=ZuR)_|5DL{;UUX_OIK)FO!OKA7qh9V)38i$#5lLI3#T4<(sMB+|?5 Pm0^MT>ri-I(Z0r8AM Date: Tue, 26 Oct 2021 21:32:38 +1300 Subject: [PATCH 12/16] Codecov replacing Code Climate --- .github/workflows/jest-tests.yml | 11 +++-------- 1 file changed, 3 insertions(+), 8 deletions(-) diff --git a/.github/workflows/jest-tests.yml b/.github/workflows/jest-tests.yml index b33a9c2a..e3d01975 100644 --- a/.github/workflows/jest-tests.yml +++ b/.github/workflows/jest-tests.yml @@ -12,16 +12,11 @@ jobs: - uses: actions/setup-node@v2 with: node-version: '12' - - name: Install Code Climate test-reporter - run: | - curl -L https://codeclimate.com/downloads/test-reporter/test-reporter-latest-linux-amd64 > ./cc-test-reporter - chmod +x ./cc-test-reporter - name: Install modules run: npm ci - name: Run tests env: CC_TEST_REPORTER_ID: ${{ secrets.CC_TEST_REPORTER_ID }} - run: | - ./cc-test-reporter before-build - npm run test - ./cc-test-reporter after-build --exit-code $? \ No newline at end of file + run: npm run test + - name: Submit to Codecov + uses: codecov/codecov-action@v1 \ No newline at end of file From e60884cc65cc3b032cae8a5c2b87d5ad69c4f847 Mon Sep 17 00:00:00 2001 From: James Barnsley Date: Wed, 27 Oct 2021 20:11:21 +1300 Subject: [PATCH 13/16] Scrolling outputs panel, fixes #780 --- src/scss/components/_output-control.scss | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/scss/components/_output-control.scss b/src/scss/components/_output-control.scss index 59cf685b..cfa81cd8 100755 --- a/src/scss/components/_output-control.scss +++ b/src/scss/components/_output-control.scss @@ -226,6 +226,8 @@ width: auto; padding: 0; border-radius: 0; + max-height: calc(100vh - 140px); + overflow-y: auto; @include theme('dark') { box-shadow: 0 -5px 5px rgba(0, 0, 0, 0.6); From 30d155ab721815f2ab377ba8b530bea1f296308a Mon Sep 17 00:00:00 2001 From: James Barnsley Date: Wed, 27 Oct 2021 20:11:49 +1300 Subject: [PATCH 14/16] Omit non-connected clients, fixes #779 --- src/js/components/Fields/OutputControl.js | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/src/js/components/Fields/OutputControl.js b/src/js/components/Fields/OutputControl.js index 454774de..d6484561 100755 --- a/src/js/components/Fields/OutputControl.js +++ b/src/js/components/Fields/OutputControl.js @@ -91,9 +91,13 @@ const Group = ({ }) => { const allClients = useSelector((state) => state.snapcast.clients || {}); const allStreams = indexToArray(useSelector((state) => state.snapcast.streams || {})); - const clients = clients_ids.length > 0 ? clients_ids.map((c) => allClients[c]) : []; + const clients = clients_ids.length > 0 + ? clients_ids.map((c) => allClients[c]).filter((c) => c.connected) + : []; const dispatch = useDispatch(); + if (!clients || !clients.length) return null; + return (
From ed078f7ff89b97db27df15a6bf9ec0a375d91f72 Mon Sep 17 00:00:00 2001 From: James Barnsley Date: Wed, 27 Oct 2021 20:37:57 +1300 Subject: [PATCH 15/16] Icons far too small on high-def mobile screens in portrait --- src/scss/components/_playback-controls.scss | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/src/scss/components/_playback-controls.scss b/src/scss/components/_playback-controls.scss index fdfb6e6b..c49f9cee 100755 --- a/src/scss/components/_playback-controls.scss +++ b/src/scss/components/_playback-controls.scss @@ -467,13 +467,12 @@ &.playback { width: auto; } - &.triggers { - width: 4rem; + width: 4.5rem; .icon { - font-size: 0.9rem; + font-size: 1.2rem; } } } From 06fdd6f416494e7dae19a4bf168292d54397c225 Mon Sep 17 00:00:00 2001 From: James Barnsley Date: Wed, 27 Oct 2021 20:38:13 +1300 Subject: [PATCH 16/16] Version bump --- IRIS_VERSION | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/IRIS_VERSION b/IRIS_VERSION index 71c01095..09a5d91f 100755 --- a/IRIS_VERSION +++ b/IRIS_VERSION @@ -1 +1 @@ -3.60.0 +3.60.1