Skip to content

Feature/repo tools#3

Merged
DecSmith42 merged 3 commits into
mainfrom
feature/repo-tools
Jun 10, 2026
Merged

Feature/repo tools#3
DecSmith42 merged 3 commits into
mainfrom
feature/repo-tools

Conversation

@DecSmith42

Copy link
Copy Markdown
Contributor

This pull request introduces several improvements and infrastructure updates to the Invex.FileSystem repository, focusing on developer guidance, workflow automation, and minor codebase cleanups. The most significant changes are the addition of comprehensive Copilot instructions, enhancements to GitHub Actions workflows (including new documentation build and cleanup jobs), and the removal of obsolete or redundant code from the Atom build definition.

Documentation and Developer Guidance:

  • Added a detailed .github/copilot-instructions.md file with architecture overview, design rules, conventions, and workflow instructions for contributors and AI agents.
  • Updated README.md to use direct links to the MIT license on GitHub, improving clarity and accuracy. [1] [2]

GitHub Actions Workflow Enhancements:

  • Added new BuildDocs and PublishDocs jobs to .github/workflows/Build.yml for automated documentation building and publishing, triggered as part of the CI pipeline.
  • Introduced a new .github/workflows/Cleanup Prereleases.yml workflow to unlist old prerelease NuGet packages below a specified stable version, supporting repository hygiene.
  • Improved parameter naming and environment variable handling in workflows for consistency (pull-request-numbergithub-pull-request-number). [1] [2]
  • Removed redundant workflow permissions in Dependabot Enable auto-merge.yml.

Build System and Codebase Maintenance:

  • Refactored _atom/IBuild.cs:
    • Added interfaces for documentation (IDocFxHelper) and package unlisting (INugetPackageUnlistHelper), and provided new parameters for prerelease cleanup. [1] [2]
    • Defined the set of .verified.txt files under tests/ as the source of truth for breaking change detection.
  • Updated the solution structure in Invex.FileSystem.slnx to explicitly group source and test projects under /src/ and /tests/ folders.

Code Cleanup:

  • Removed obsolete interfaces and code from _atom/IApiSurfaceHelper.cs and _atom/IApproveDependabotPr.cs, streamlining the Atom build module. [1] [2]

References:

This commit introduces comprehensive user documentation for the Invex.FileSystem library. It includes getting started instructions, conceptual overviews, API reference, and detailed guides on key features such as rooted paths, path providers, path markers, and file transform scopes. The documentation is structured for use with DocFX, with the necessary `docfx.json` configuration and corresponding markdown files added.
Copilot AI review requested due to automatic review settings June 10, 2026 12:00
@DecSmith42 DecSmith42 enabled auto-merge June 10, 2026 12:01
@DecSmith42 DecSmith42 merged commit ec6a815 into main Jun 10, 2026
18 checks passed
@DecSmith42 DecSmith42 deleted the feature/repo-tools branch June 10, 2026 12:02

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 improves repository tooling and developer guidance for Invex.FileSystem by adding DocFX documentation infrastructure, public API surface snapshot testing, workflow automation (docs publishing + prerelease cleanup), and some build/Atom refactors to use shared RepoUtils modules.

Changes:

  • Added a DocFX site scaffold (DocFX config, conceptual docs, TOCs, API landing page, root index redirect).
  • Added/updated CI workflows to build & publish docs and to unlist old prerelease packages; aligned injected env var naming for PR number.
  • Introduced a public API surface snapshot test and updated build/analyzer dependencies (RepoUtils analyzers/test utils, package bumps).

Reviewed changes

Copilot reviewed 37 out of 37 changed files in this pull request and generated 9 comments.

Show a summary per file
File Description
toc.yml Adds the top-level DocFX TOC entries.
index.md Adds DocFX site landing/redirect page.
docfx.json Adds DocFX build configuration and site metadata.
api/index.md Adds API reference landing page.
docs/toc.yml Adds conceptual-docs TOC.
docs/introduction.md Adds conceptual introduction page.
docs/getting-started.md Adds installation + DI wiring guide.
docs/rooted-paths.md Adds RootedPath conceptual documentation.
docs/path-providers.md Adds provider-chain documentation and examples.
docs/path-markers.md Adds path-marker documentation and examples.
docs/transform-scopes.md Adds transform-scope documentation and behavior reference.
docs/testing.md Adds testing guidance and examples.
README.md Updates license links to GitHub URL.
Invex.FileSystem.slnx Groups src/tests projects into folders.
src/Invex.FileSystem/Invex.FileSystem.csproj Swaps public API analyzer package and bumps Microsoft.Extensions.* abstractions.
src/Invex.FileSystem/RootedFileSystem.cs Refines XML docs; documents PathProviders property.
src/Invex.FileSystem/RootedPath.cs Refines XML docs for DirectoryName semantics.
src/Invex.FileSystem/IPathMarker.cs Adjusts XML doc wording.
src/Invex.FileSystem/FileSystemHostExtensions.cs Clarifies provider tie-break behavior in docs.
src/Invex.FileSystem/TransformFileScope.cs Expands XML docs and improves <inheritdoc> usage.
src/Invex.FileSystem/TransformMultiFileScope.cs Expands XML docs and improves <inheritdoc> usage.
src/Invex.FileSystem/TransformFileScopeExtensions.cs Documents cancellation-token behavior for fluent overloads.
tests/Invex.FileSystem.Tests/Invex.FileSystem.Tests.csproj Adds RepoUtils test utils; bumps test package versions.
tests/Invex.FileSystem.Tests/_usings.cs Adds global using for RepoUtils test utils.
tests/Invex.FileSystem.Tests/PublicApiSurfaceTests.cs Adds Verify-based public API surface snapshot test.
tests/Invex.FileSystem.Tests/PublicApiTests.VerifyPublicApiSurface.verified.txt Adds verified public API snapshot output.
.github/workflows/Validate.yml Renames PR-number env var to github-pull-request-number.
.github/workflows/Build.yml Adds BuildDocs/PublishDocs jobs and artifact plumbing.
.github/workflows/Dependabot Enable auto-merge.yml Removes redundant permissions; injects PAT + renamed PR-number env var.
.github/workflows/Cleanup Prereleases.yml Adds manual prerelease-unlisting workflow.
.github/copilot-instructions.md Adds comprehensive contributor/agent guidance and repo conventions.
_atom/_atom.csproj Swaps Atom/GitVersion modules to Invex equivalents and adds RepoUtils Atom module.
_atom/IBuild.cs Refactors build definition: breaking-change file list, prerelease unlisting targets, DocFX targets, workflow wiring.
_atom/ICheckPrForBreakingChanges.cs Removes obsolete local implementation (migrated to shared module).
_atom/IApproveDependabotPr.cs Removes obsolete local implementation (migrated to shared module).
_atom/IApiSurfaceHelper.cs Removes obsolete local helper (migrated to shared module).
_atom/_usings.cs Removes obsolete global usings file (migrated to shared module / explicit usings).

Comment thread toc.yml
Comment on lines +1 to +4
- name: Docs
href: docs/
- name: API Reference
href: api/
Comment thread docs/path-providers.md
If no provider recognizes a key, `GetPath` throws `InvalidOperationException`:

```
Could not locate path for key 'Artifcats'
Comment thread _atom/IBuild.cs

Target PublishDocs =>
t => t
.DescribedAs("Publishes the DocFX documentation to Github Pages.")
Comment thread docs/testing.md
Comment on lines +52 to +54
RootedPath csproj = fs.GetPath("Root") / "src" / "App" / "App.csproj";
Assert.True(csproj.FileExists);
```
Comment thread docs/testing.md

await using (await TransformFileScope.CreateAsync(file, c => c.Replace("1.0.0", "2.0.0")))
{
Assert.Contains("2.0.0", mock.File.ReadAllText(file));
Comment thread docs/testing.md
}

// Restored after dispose.
Assert.Contains("1.0.0", mock.File.ReadAllText(file));
Comment thread docs/testing.md
Comment on lines +22 to +23
Assert.True(path.FileExists);
Assert.Equal("file.txt", path.FileName);
Comment thread docs/testing.md
Comment on lines +15 to +16
using System.IO.Abstractions.TestingHelpers;

namespace Invex.FileSystem.Tests;

[TestFixture]
public class PublicApiTests
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