Conversation
- Added CODESTYLE.md for code style and formatting rules. - Introduced Directory.Build.props and Directory.Packages.props for centralized project settings and package versions. - Refactored Docker build scripts and Dockerfile for improved clarity and functionality. - Removed obsolete UnitTest.sh script and integrated testing directly into Build.sh. - Updated HISTORY.md to reflect structural changes and new version 3.16. - Updated LICENSE to reflect copyright years. - Adjusted PlexCleaner and PlexCleanerTests project files to align with new build settings. - Refactored test classes to remove unnecessary fixture dependencies. - Updated README.md to reflect the latest version and changes. - Updated version.json to version 3.16. Signed-off-by: Pieter Viljoen <ptr727@users.noreply.github.com>
There was a problem hiding this comment.
Pull request overview
This PR consolidates PlexCleaner’s repository/build structure by centralizing MSBuild/package configuration, refactoring Docker build/test flow, and modernizing GitHub Actions workflows and supporting documentation for the 3.16 release.
Changes:
- Centralized shared MSBuild properties and NuGet package versions via
Directory.Build.propsandDirectory.Packages.props, and updated project files accordingly. - Refactored Docker build/test scripts and renamed the Dockerfile; integrated unit tests into the Docker build script and removed the standalone unit test script.
- Reworked CI/CD into reusable, kebab-case workflows; updated documentation and versioning to 3.16; cleaned up test/fixture usage and removed unused
usingdirectives.
Reviewed changes
Copilot reviewed 97 out of 98 changed files in this pull request and generated 3 comments.
Show a summary per file
| File | Description |
|---|---|
| version.json | Bumps Nerdbank.GitVersioning version to 3.16. |
| README.md | Updates release notes/version and workflow badge URLs. |
| HISTORY.md | Adds 3.16 entry documenting structural changes. |
| LICENSE | Updates copyright years. |
| CODESTYLE.md | Adds documented code style/formatting rules. |
| AGENTS.md | Adds guidance for AI agents and repo conventions. |
| Directory.Build.props | Adds centralized MSBuild defaults (TFM, analyzers, warnings-as-errors, etc.). |
| Directory.Packages.props | Adds centralized NuGet package versions. |
| PlexCleaner/PlexCleaner.csproj | Removes per-project framework/package versions to align with centralized props. |
| PlexCleanerTests/PlexCleanerTests.csproj | Aligns test project with centralized props and adjusts test package refs. |
| Sandbox/Sandbox.csproj | Removes per-project TFM/package versions to align with centralized props. |
| Sandbox/Program.cs | Switches settings deserialization to async and improves nullability handling. |
| Sandbox/TestSomething.cs | Removes unused using directives after implicit usings/cleanup. |
| PlexCleanerTests/CommandLineTests.cs | Removes unused fixture dependency in test class signature. |
| PlexCleanerTests/FileNameEscapingTests.cs | Removes unused fixture dependency in test class signature. |
| PlexCleanerTests/FfMpegIdetParsingTests.cs | Removes unused fixture dependency in test class signature. |
| PlexCleanerTests/VersionParsingTests.cs | Removes unused fixture dependency in test class signature. |
| PlexCleanerTests/WildcardTests.cs | Removes unused fixture dependency in test class signature. |
| PlexCleanerTests/FfMpegIdetInfoSerializer.cs | Updates nullability annotations in serializer signature. |
| PlexCleanerTests/PlexCleanerFixture.cs | Seals fixture type, tightens nullability, and adds analyzer suppressions. |
| PlexCleaner/Program.cs | Removes unused using directives after centralized settings/implicit usings. |
| PlexCleaner/Tools.cs | Removes unused using directives after centralized settings/implicit usings. |
| PlexCleaner/MediaTool.cs | Removes unused using directives after centralized settings/implicit usings. |
| PlexCleaner/MediaProps.cs | Removes unused using directives after centralized settings/implicit usings. |
| PlexCleaner/TrackProps.cs | Removes unused using directives after centralized settings/implicit usings. |
| PlexCleaner/VideoProps.cs | Removes unused using directives after centralized settings/implicit usings. |
| PlexCleaner/SubtitleProps.cs | Removes unused using directives after centralized settings/implicit usings. |
| PlexCleaner/Process.cs | Removes unused using directives after centralized settings/implicit usings. |
| PlexCleaner/ProcessDriver.cs | Removes unused using directives after centralized settings/implicit usings. |
| PlexCleaner/ProcessFile.cs | Removes unused using directives after centralized settings/implicit usings. |
| PlexCleaner/ProcessOptions.cs | Removes unused using directives after centralized settings/implicit usings. |
| PlexCleaner/ProcessResultJsonSchema.cs | Removes unused using directives after centralized settings/implicit usings. |
| PlexCleaner/Convert.cs | Removes unused using directives after centralized settings/implicit usings. |
| PlexCleaner/ConvertOptions.cs | Removes unused using directives after centralized settings/implicit usings. |
| PlexCleaner/VerifyOptions.cs | Removes unused using directives after centralized settings/implicit usings. |
| PlexCleaner/CommandLineOptions.cs | Removes unused using directives after centralized settings/implicit usings. |
| PlexCleaner/Extensions.cs | Removes unused using directives after centralized settings/implicit usings. |
| PlexCleaner/Language.cs | Removes unused using directives after centralized settings/implicit usings. |
| PlexCleaner/Bitrate.cs | Removes unused using directives after centralized settings/implicit usings. |
| PlexCleaner/BitrateInfo.cs | Removes unused using directives after centralized settings/implicit usings. |
| PlexCleaner/SelectMediaProps.cs | Removes unused using directives after centralized settings/implicit usings. |
| PlexCleaner/Monitor.cs | Removes unused using directives after centralized settings/implicit usings. |
| PlexCleaner/SidecarFile.cs | Removes unused using directives after centralized settings/implicit usings. |
| PlexCleaner/SidecarFileJsonSchema.cs | Removes unused using directives after centralized settings/implicit usings. |
| PlexCleaner/ConfigFileJsonSchema.cs | Removes unused using directives after centralized settings/implicit usings. |
| PlexCleaner/ToolInfoJsonSchema.cs | Removes unused using directives after centralized settings/implicit usings. |
| PlexCleaner/TagMapSet.cs | Removes unused using directives after centralized settings/implicit usings. |
| PlexCleaner/MediaToolInfo.cs | Removes unused using directives after centralized settings/implicit usings. |
| PlexCleaner/MediaInfoXmlParser.cs | Removes unused using directives after centralized settings/implicit usings. |
| PlexCleaner/MediaInfoToolXmlSchema.cs | Removes unused using directives after centralized settings/implicit usings. |
| PlexCleaner/MediaInfoToolJsonSchema.cs | Removes unused using directives after centralized settings/implicit usings. |
| PlexCleaner/MediaInfoTool.cs | Removes unused using directives after centralized settings/implicit usings. |
| PlexCleaner/MediaInfoBuilder.cs | Removes unused using directives after centralized settings/implicit usings. |
| PlexCleaner/FfProbeTool.cs | Removes unused using directives after centralized settings/implicit usings. |
| PlexCleaner/FfProbeBuilder.cs | Removes unused using directives after centralized settings/implicit usings. |
| PlexCleaner/FfMpegTool.cs | Removes unused using directives after centralized settings/implicit usings. |
| PlexCleaner/FfMpegToolJsonSchema.cs | Removes unused using directives after centralized settings/implicit usings. |
| PlexCleaner/FfMpegIdetInfo.cs | Removes unused using directives after centralized settings/implicit usings. |
| PlexCleaner/FfMpegBuilder.cs | Removes unused using directives after centralized settings/implicit usings. |
| PlexCleaner/HandBrakeTool.cs | Removes unused using directives after centralized settings/implicit usings. |
| PlexCleaner/HandBrakeBuilder.cs | Removes unused using directives after centralized settings/implicit usings. |
| PlexCleaner/SevenZipTool.cs | Removes unused using directives after centralized settings/implicit usings. |
| PlexCleaner/SevenZipBuilder.cs | Removes unused using directives after centralized settings/implicit usings. |
| PlexCleaner/MkvMergeTool.cs | Removes unused using directives after centralized settings/implicit usings. |
| PlexCleaner/MkvMergeBuilder.cs | Removes unused using directives after centralized settings/implicit usings. |
| PlexCleaner/MkvPropEditTool.cs | Removes unused using directives after centralized settings/implicit usings. |
| PlexCleaner/MkvPropEditBuilder.cs | Removes unused using directives after centralized settings/implicit usings. |
| PlexCleaner/MkvToolJsonSchema.cs | Removes unused using directives after centralized settings/implicit usings. |
| PlexCleaner/JsonSerialization.cs | Removes unused using directives after centralized settings/implicit usings. |
| PlexCleaner/KeepAwake.cs | Removes unused using directives after centralized settings/implicit usings. |
| PlexCleaner/MediaInfoToolJsonSchema.cs | Removes unused using directives after centralized settings/implicit usings. |
| PlexCleaner.slnx | Updates solution structure and referenced workflow/script/doc items. |
| PlexCleaner.code-workspace | Updates workspace recommendations and settings. |
| .vscode/tasks.json | Refactors tasks (adds outdated upgrade, simplifies Docker tasks). |
| .vscode/launch.json | Updates debug launch paths to .artifacts layout. |
| .editorconfig | Adjusts formatting rules and analyzer settings. |
| .gitignore | Adds .codex and *.log ignores. |
| .dockerignore | Replaces/modernizes ignore patterns for smaller Docker contexts. |
| Docker/Dockerfile | Renames/updates Dockerfile and integrates centralized props into build context. |
| Docker/Build.sh | Runs build+test, then publishes using PublishDir properties. |
| Docker/UnitTest.sh | Removed (unit testing moved into Build.sh). |
| .github/dependabot.yml | Simplifies Dependabot config. |
| .github/copilot-instructions.md | Updates repo conventions/docs to reflect new centralized build/package props and workflows. |
| .github/workflows/build-datebadge-task.yml | Adds reusable workflow for BYOB date badge. |
| .github/workflows/get-version-task.yml | Refactors version extraction task workflow. |
| .github/workflows/build-docker-task.yml | Refactors Docker build task workflow and adds registry cache usage. |
| .github/workflows/build-executable-task.yml | Adds reusable workflow to publish executables for multiple runtimes. |
| .github/workflows/build-release-task.yml | Adds reusable workflow to orchestrate release build + (optional) publishing. |
| .github/workflows/test-release-task.yml | Adds reusable workflow to run style checks + tests + build. |
| .github/workflows/test-pull-request.yml | Adds PR validation workflow calling reusable test workflow. |
| .github/workflows/publish-release.yml | Adds publish workflow calling the reusable release task. |
| .github/workflows/publish-periodic-docker-release.yml | Refactors weekly Docker publish workflow to use new task workflows. |
| .github/workflows/merge-bot-pull-request.yml | Adds bot workflow to auto-merge Dependabot PRs under constraints. |
| .github/workflows/TestDockerTask.yml | Removed (superseded by new task workflows). |
| .github/workflows/TestDockerPr.yml | Removed (superseded by new PR workflow). |
| .github/workflows/TestBuildTask.yml | Removed (superseded by new task workflows). |
| .github/workflows/TestBuildPr.yml | Removed (superseded by new PR workflow). |
| .github/workflows/DependabotAutoMerge.yml | Removed (replaced by merge-bot workflow). |
| .github/workflows/BuildGitHubRelease.yml | Removed (replaced by publish-release/build-release-task workflows). |
Comments suppressed due to low confidence (5)
.github/workflows/publish-periodic-docker-release.yml:80
- This workflow references action versions that may not exist (e.g.,
actions/upload-artifact@v7,actions/checkout@v6,actions/download-artifact@v8). If these tags aren’t published, the weekly Docker pipeline will fail. Consider switching to currently released majors or pinning to commit SHAs.
.github/workflows/build-docker-task.yml:71 BUILD_ASSEMBLY_VERSIONis being set fromAssemblyFileVersion, which makes the Docker build’s assembly version differ from the executable build workflow (which usesAssemblyVersion). This can lead to inconsistent assembly metadata between release artifacts and the Docker image. Use theAssemblyVersionoutput forBUILD_ASSEMBLY_VERSIONto keep versioning consistent.
.github/workflows/get-version-task.yml:36- This workflow uses action versions that may not exist (e.g.,
actions/setup-dotnet@v5,actions/checkout@v6). If these tags aren’t published, version calculation will fail and all downstream workflows that call this task will break. Consider using known released major versions (or pin to a commit SHA).
.github/workflows/build-docker-task.yml:43 - Several GitHub Actions references use major versions that may not exist (e.g.,
actions/checkout@v6,docker/setup-qemu-action@v4,docker/setup-buildx-action@v4,docker/build-push-action@v7). If any of these tags aren’t published, the workflow will fail to start. Consider switching to currently released majors (or pinning to commit SHAs) and keeping versions consistent across workflows.
.github/workflows/get-version-task.yml:41 dotnet/nbgv@masteris a floating reference, so builds can change unexpectedly when upstream pushes new commits. Pinning to a released tag or a specific commit SHA will make versioning deterministic and reduce supply-chain risk.
…y .editorconfig for CA5392 severity description Signed-off-by: Pieter Viljoen <ptr727@users.noreply.github.com>
There was a problem hiding this comment.
Pull request overview
Copilot reviewed 97 out of 98 changed files in this pull request and generated no new comments.
Comments suppressed due to low confidence (1)
.github/workflows/build-docker-task.yml:71
BUILD_ASSEMBLY_VERSIONis being set fromneeds.get-version.outputs.AssemblyFileVersion, which will stamp the container build with the file version instead of the assembly version. Useneeds.get-version.outputs.AssemblyVersionforBUILD_ASSEMBLY_VERSIONso-property:AssemblyVersioninDocker/Build.shgets the intended value.
… AssemblyFileVersion Signed-off-by: Pieter Viljoen <ptr727@users.noreply.github.com>
This file contains hidden or 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
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Signed-off-by: Pieter Viljoen ptr727@users.noreply.github.com