Skip to content
This repository has been archived by the owner on Oct 13, 2024. It is now read-only.

Commit

Permalink
refactor!: move project to standalone version
Browse files Browse the repository at this point in the history
  • Loading branch information
ReenigneArcher committed Aug 16, 2024
1 parent ec00a04 commit d65b377
Show file tree
Hide file tree
Showing 117 changed files with 5,235 additions and 2,877 deletions.
3 changes: 1 addition & 2 deletions .flake8
Original file line number Diff line number Diff line change
@@ -1,7 +1,6 @@
[flake8]
filename =
*.py,
*.pys
*.py
max-line-length = 120
extend-exclude =
venv/
210 changes: 49 additions & 161 deletions .github/workflows/CI.yml
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ name: CI

on:
pull_request:
branches: [master]
branches: [master, dev/standalone] # TODO: remove dev/standalone ... temporarily allow PRs to this branch
types: [opened, synchronize, reopened]
push:
branches: [master]
Expand Down Expand Up @@ -37,177 +37,69 @@ jobs:
build:
needs:
- setup_release
runs-on: ubuntu-20.04
runs-on: ${{ matrix.os }}
strategy:
fail-fast: false
matrix:
os: [windows-2019, ubuntu-20.04, macos-12]
architecture: [x64]
include: # additional runs
- os: windows-2019
architecture: x86

steps:
- name: Checkout
uses: actions/checkout@v4
with:
path: Themerr-plex.bundle
submodules: recursive

- name: Set up Python
uses: LizardByte/setup-python[email protected]
- name: Setup Python
uses: actions/setup-python@v5
with:
python-version: '2.7'

- name: Patch third-party deps
if: false # disabled
shell: bash
working-directory: Themerr-plex.bundle/third-party
run: |
patch_dir=${{ github.workspace }}/Themerr-plex.bundle/patches
python-version: '3.12'
architecture: ${{ matrix.architecture }}

# youtube-dl patches
pushd youtube-dl
git apply -v "${patch_dir}/youtube_dl-compat.patch"
popd
- name: Set up Python Dependencies
shell: bash
working-directory: Themerr-plex.bundle
- name: Setup Python Dependencies
run: |
echo "Installing Requirements"
python --version
python -m pip --no-python-version-warning --disable-pip-version-check install --upgrade pip setuptools
# install dev requirements
python -m pip install --upgrade \
-r requirements-build.txt \
-r requirements-dev.txt
python -m pip install --upgrade --target=./Contents/Libraries/Shared \
-r requirements.txt --no-warn-script-location
python -m pip install --upgrade pip setuptools wheel
python -m pip install -r requirements-dev.txt
- name: Compile Locale Translations
working-directory: Themerr-plex.bundle
run: |
python ./scripts/_locale.py --compile
- name: Install npm packages
working-directory: Themerr-plex.bundle
shell: bash
run: |
# install node_modules
npm install
mv ./node_modules ./Contents/Resources/web
- name: Build plist
shell: bash
working-directory: Themerr-plex.bundle
env:
BUILD_VERSION: ${{ needs.setup_release.outputs.release_tag }}
# move node_modules directory to web directory
mv -f ./node_modules/ ./web/
- name: Compile Docs
working-directory: docs
run: |
make html
- name: Build pyinstaller package
run: |
python ./scripts/build_plist.py
python ./scripts/build.py
- name: Package Release
shell: bash
run: |
7z \
"-xr!*.git*" \
"-xr!*.pyc" \
"-xr!__pycache__" \
"-xr!plexhints*" \
"-xr!Themerr-plex.bundle/.*" \
"-xr!Themerr-plex.bundle/cache.sqlite" \
"-xr!Themerr-plex.bundle/codecov.yml" \
"-xr!Themerr-plex.bundle/crowdin.yml" \
"-xr!Themerr-plex.bundle/DOCKER_README.md" \
"-xr!Themerr-plex.bundle/Dockerfile" \
"-xr!Themerr-plex.bundle/docs" \
"-xr!Themerr-plex.bundle/patches" \
"-xr!Themerr-plex.bundle/scripts" \
"-xr!Themerr-plex.bundle/tests" \
a "./Themerr-plex.bundle.zip" "Themerr-plex.bundle"
7z a "./Themerr-plex_${{ runner.os }}_${{ matrix.architecture }}.zip" "dist"
mkdir artifacts
mv ./Themerr-plex.bundle.zip ./artifacts/
mv "./Themerr-plex_${{ runner.os }}_${{ matrix.architecture }}.zip" ./artifacts/
- name: Upload Artifacts
uses: actions/upload-artifact@v4
uses: actions/upload-artifact@v4 # https://github.com/actions/upload-artifact
with:
name: Themerr-plex.bundle
name: Themerr-plex_${{ runner.os }}_${{ matrix.architecture }}
if-no-files-found: error # 'warn' or 'ignore' are also available, defaults to `warn`
path: |
${{ github.workspace }}/artifacts
- name: Create/Update GitHub Release
if: ${{ needs.setup_release.outputs.publish_release == 'true' }}
uses: LizardByte/[email protected]
with:
allowUpdates: true
body: ${{ needs.setup_release.outputs.release_body }}
discussionCategory: announcements
generateReleaseNotes: ${{ needs.setup_release.outputs.release_generate_release_notes }}
name: ${{ needs.setup_release.outputs.release_tag }}
prerelease: true
tag: ${{ needs.setup_release.outputs.release_tag }}
token: ${{ secrets.GH_BOT_TOKEN }}

pytest:
needs: [build]
strategy:
fail-fast: false
matrix:
os: [windows-latest, ubuntu-latest, macos-latest]

runs-on: ${{ matrix.os }}
steps:
- name: Checkout
uses: actions/checkout@v4

- name: Download artifacts
uses: actions/download-artifact@v4
with:
name: Themerr-plex.bundle

- name: Extract artifacts zip
shell: bash
run: |
# extract zip
7z x Themerr-plex.bundle.zip -o.
# move all files from "Themerr-plex.bundle" to root, with no target directory
cp -r ./Themerr-plex.bundle/. .
# remove zip
rm Themerr-plex.bundle.zip
- name: Set up Python
uses: LizardByte/[email protected]
with:
python-version: '2.7'

- name: Bootstrap Plex server
env:
PLEXAPI_PLEXAPI_TIMEOUT: "60"
id: bootstrap
uses: LizardByte/[email protected]
with:
additional_server_queries: >-
put|/system/agents/com.plexapp.agents.imdb/config/1?order=com.plexapp.agents.imdb%2Cdev.lizardbyte.themerr-plex
put|/system/agents/com.plexapp.agents.themoviedb/config/1?order=com.plexapp.agents.themoviedb%2Cdev.lizardbyte.themerr-plex
put|/system/agents/com.plexapp.agents.themoviedb/config/2?order=com.plexapp.agents.themoviedb%2Cdev.lizardbyte.themerr-plex
put|/system/agents/com.plexapp.agents.thetvdb/config/2?order=com.plexapp.agents.thetvdb%2Cdev.lizardbyte.themerr-plex
get|/:/plugins/dev.lizardbyte.themerr-plex/prefs/set?bool_overwrite_plex_provided_themes=true
plugin_bundles_to_install: >-
Themerr-plex.bundle
without_music: true
without_photos: true

- name: Install python dependencies
shell: bash
run: |
python -m pip --no-python-version-warning --disable-pip-version-check install --upgrade \
pip setuptools wheel
python -m pip --no-python-version-warning --disable-pip-version-check install --no-build-isolation \
-r requirements-dev.txt
- name: Test with pytest
env:
PLEX_PLUGIN_LOG_PATH: ${{ steps.bootstrap.outputs.PLEX_PLUGIN_LOG_PATH }}
PLEXAPI_AUTH_SERVER_BASEURL: ${{ steps.bootstrap.outputs.PLEX_SERVER_BASEURL }}
PLEXAPI_AUTH_SERVER_TOKEN: ${{ steps.bootstrap.outputs.PLEXTOKEN }}
PLEXAPI_PLEXAPI_TIMEOUT: "60"
PLEXTOKEN: ${{ steps.bootstrap.outputs.PLEXTOKEN }}
id: test
shell: bash
run: |
Expand All @@ -216,30 +108,26 @@ jobs:
--tb=native \
--verbose \
--color=yes \
--cov=Contents/Code \
--cov=src \
tests
- name: Debug log file
if: always()
shell: bash
run: |
echo "Debugging log file"
if [[ "${{ runner.os }}" == "Windows" ]]; then
log_file=$(cygpath.exe -u \
"${{ steps.bootstrap.outputs.PLEX_PLUGIN_LOG_PATH }}/dev.lizardbyte.themerr-plex.log")
else
log_file="${{ steps.bootstrap.outputs.PLEX_PLUGIN_LOG_PATH }}/dev.lizardbyte.themerr-plex.log"
fi
cat "${log_file}"
- name: Upload coverage
# any except canceled or skipped
if: >-
always() &&
(steps.test.outcome == 'success' || steps.test.outcome == 'failure') &&
startsWith(github.repository, 'LizardByte/')
uses: codecov/codecov-action@v4
with:
fail_ci_if_error: true
flags: ${{ runner.os }}
flags: "${{ runner.os }}-${{ matrix.architecture }}"
token: ${{ secrets.CODECOV_TOKEN }}
verbose: true

- name: Create/Update GitHub Release
if: ${{ needs.setup_release.outputs.publish_release == 'true' }}
uses: LizardByte/[email protected]
with:
allowUpdates: true
body: ${{ needs.setup_release.outputs.release_body }}
discussionCategory: announcements
generateReleaseNotes: ${{ needs.setup_release.outputs.release_generate_release_notes }}
name: ${{ needs.setup_release.outputs.release_tag }}
prerelease: true
tag: ${{ needs.setup_release.outputs.release_tag }}
token: ${{ secrets.GH_BOT_TOKEN }}
28 changes: 13 additions & 15 deletions .github/workflows/localize.yml
Original file line number Diff line number Diff line change
Expand Up @@ -6,9 +6,9 @@ on:
branches: [master]
paths: # prevents workflow from running unless these files change
- '.github/workflows/localize.yml'
- 'Contents/Strings/Themerr-plex.po'
- 'Contents/Code/**.py'
- 'Contents/Resources/web/templates/**'
- 'locale/themerr-plex.po'
- 'src/**.py'
- 'web/templates/**'
workflow_dispatch:

jobs:
Expand All @@ -19,18 +19,16 @@ jobs:
steps:
- name: Checkout
uses: actions/checkout@v4
with:
submodules: recursive

- name: Set up Python
uses: LizardByte/setup-python[email protected]
- name: Install Python
uses: actions/setup-python@v5 # https://github.com/actions/setup-python
with:
python-version: '2.7'
python-version: '3.12'

- name: Set up Python Dependencies
- name: Setup Python Dependencies
run: |
python -m pip install --upgrade pip setuptools requests
python -m pip install -r requirements.txt # requests is required to install python-plexapi
python -m pip install --upgrade pip setuptools wheel
python -m pip install -r requirements.txt
- name: Update Strings
run: |
Expand All @@ -42,14 +40,14 @@ jobs:
git config --global pager.diff false
# print the git diff
git diff Contents/Strings/themerr-plex.po
git diff locale/themerr-plex.po
# set the variable with minimal output, replacing `\t` with ` `
OUTPUT=$(git diff --numstat Contents/Strings/themerr-plex.po | sed -e "s#\t# #g")
OUTPUT=$(git diff --numstat locale/themerr-plex.po | sed -e "s#\t# #g")
echo "git_diff=${OUTPUT}" >> $GITHUB_ENV
- name: git reset
if: ${{ env.git_diff == '1 1 Contents/Strings/themerr-plex.po' }} # only run if more than 1 line changed
if: ${{ env.git_diff == '1 1 locale/themerr-plex.po' }} # only run if more than 1 line changed
run: |
git reset --hard
Expand All @@ -61,7 +59,7 @@ jobs:
uses: peter-evans/create-pull-request@v6
with:
add-paths: |
Contents/Strings/*.po
locale/*.po
token: ${{ secrets.GH_BOT_TOKEN }} # must trigger PR tests
commit-message: New localization template
branch: localize/update
Expand Down
5 changes: 2 additions & 3 deletions .github/workflows/python-flake8.yml
Original file line number Diff line number Diff line change
Expand Up @@ -26,12 +26,11 @@ jobs:
- name: Set up Python
uses: actions/setup-python@v5 # https://github.com/actions/setup-python
with:
python-version: '3.10'
python-version: '3.12'

- name: Install dependencies
run: |
# pin flake8 before v6.0.0 due to removal of support for type comments (required for Python 2.7 type hints)
python -m pip install --upgrade pip setuptools "flake8<6"
python -m pip install --upgrade pip setuptools flake8
- name: Test with flake8
run: |
Expand Down
27 changes: 6 additions & 21 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -101,15 +101,7 @@ ipython_config.py
# https://python-poetry.org/docs/basic-usage/#commit-your-poetrylock-file-to-version-control
#poetry.lock

# pdm
# Similar to Pipfile.lock, it is generally recommended to include pdm.lock in version control.
#pdm.lock
# pdm stores project-wide configurations in .pdm.toml, but it is recommended to not include it
# in version control.
# https://pdm.fming.dev/#use-with-ide
.pdm.toml

# PEP 582; used by e.g. github.com/David-OConnor/pyflow and github.com/pdm-project/pdm
# PEP 582; used by e.g. github.com/David-OConnor/pyflow
__pypackages__/

# Celery stuff
Expand Down Expand Up @@ -153,22 +145,15 @@ dmypy.json
cython_debug/

# PyCharm
# JetBrains specific template is maintained in a separate JetBrains.gitignore that can
# JetBrains specific template is maintainted in a separate JetBrains.gitignore that can
# be found at https://github.com/github/gitignore/blob/main/Global/JetBrains.gitignore
# and can be added to the global gitignore or merged into this file. For a more nuclear
# option (not recommended) you can uncomment the following to ignore the entire idea folder.
.idea/

# Remove the agent Info.plist since we are building it
Contents/Info.plist

# Remove plexhints files
plexhints-temp
*cache.sqlite

# Remove python modules
Contents/Libraries/Shared/

# npm
node_modules/
package-lock.json
*package-lock.json

# project files and directories
config/
Loading

0 comments on commit d65b377

Please sign in to comment.