This repository has been archived by the owner on Oct 13, 2024. It is now read-only.
-
-
Notifications
You must be signed in to change notification settings - Fork 4
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
refactor!: move project to standalone version
- Loading branch information
1 parent
ec00a04
commit d65b377
Showing
117 changed files
with
5,235 additions
and
2,877 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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/ |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -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] | ||
|
@@ -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: | | ||
|
@@ -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 }} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -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: | ||
|
@@ -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: | | ||
|
@@ -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 | ||
|
@@ -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 | ||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.