Skip to content

chore: Consolidate project structure and update build configuration#682

Merged
ptr727 merged 3 commits into
developfrom
prbot
Apr 16, 2026
Merged

chore: Consolidate project structure and update build configuration#682
ptr727 merged 3 commits into
developfrom
prbot

Conversation

@ptr727

@ptr727 ptr727 commented Apr 16, 2026

Copy link
Copy Markdown
Owner
  • 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

- 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>
Copilot AI review requested due to automatic review settings April 16, 2026 00:30

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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.props and Directory.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 using directives.

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_VERSION is being set from AssemblyFileVersion, which makes the Docker build’s assembly version differ from the executable build workflow (which uses AssemblyVersion). This can lead to inconsistent assembly metadata between release artifacts and the Docker image. Use the AssemblyVersion output for BUILD_ASSEMBLY_VERSION to 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@master is 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.

Comment thread .vscode/launch.json
Comment thread .editorconfig Outdated
Comment thread .dockerignore
…y .editorconfig for CA5392 severity description

Signed-off-by: Pieter Viljoen <ptr727@users.noreply.github.com>

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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_VERSION is being set from needs.get-version.outputs.AssemblyFileVersion, which will stamp the container build with the file version instead of the assembly version. Use needs.get-version.outputs.AssemblyVersion for BUILD_ASSEMBLY_VERSION so -property:AssemblyVersion in Docker/Build.sh gets the intended value.

… AssemblyFileVersion

Signed-off-by: Pieter Viljoen <ptr727@users.noreply.github.com>
@ptr727 ptr727 merged commit 868173f into develop Apr 16, 2026
16 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants