Skip to content

Conversation

@StevenTCramer
Copy link
Contributor

Summary

This PR refactors the build configuration to follow the timewarp-nuru pattern and adds infrastructure for a Delphi-style interface delegation generator (work in progress).

Build System Improvements

  • Restructured Directory.Build.props with clear sections and MSBuild variables ($(RepositoryRoot), $(PackagesDirectory), etc.)
  • Simplified nuget.config: Removed packageSourceMapping complexity, use artifacts/packages for local feed
  • Removed package lock files and related configuration (unnecessary complexity)
  • Removed CI deterministic build configuration (not needed)
  • Updated csproj files to use $(RepositoryRoot) variable instead of hardcoded relative paths
  • Renamed read-me.md → readme.md for consistency
  • Use $(Version) variable in Directory.Packages.props for analyzer package reference

Interface Delegation Feature (WIP)

Added infrastructure for Delphi-style interface delegation:

public partial class DataService : ILogger, IDataProcessor<string>
{
    [Implements]
    private readonly ILogger _logger;
    
    [Implements]
    private readonly IDataProcessor<string> _processor;
    
    // Generator automatically creates delegation methods
}

Files Added:

  • interface-delegation-attribute.cs - [Implements] attribute definition
  • interface-delegation-generator.cs - Source generator (has detection bugs, needs debugging)
  • Test files: ILogger, ConsoleLogger, DataService
  • Diagnostic rules: TW1001, TW1002, TW1003
  • Comprehensive task documentation in kanban/to-do/017_create-interface-delegation-generator/

Configuration Changes

  • Test console now uses PackageReference instead of ProjectReference for analyzer package
  • Configured GeneratePackageOnBuild in source/Directory.Build.props
  • Suppressed RS2001 (not using shipped/unshipped workflow) and NU5128 (expected for analyzer packages)
  • Version bumped to 1.0.0-beta.5

Status

The interface delegation generator infrastructure is complete but the member detection logic has bugs and needs debugging before it will work correctly. The build system improvements are ready for review.

Test plan

  • Source generator project builds successfully
  • Package is generated to artifacts/packages/
  • Test console references package correctly
  • Version management works with $(Version) variable
  • Interface delegation generator detects [Implements] attributes (needs debugging)
  • Generator creates delegation methods (blocked by detection issue)

🤖 Generated with Claude Code

StevenTCramer and others added 4 commits October 17, 2025 18:42
Major build system improvements:
- Restructure Directory.Build.props following timewarp-nuru pattern with clear sections and MSBuild variables
- Simplify nuget.config: remove packageSourceMapping, use artifacts/packages for local feed
- Remove package lock files and lock file configuration (unnecessary complexity)
- Remove CI deterministic build configuration
- Update csproj files to use $(RepositoryRoot) variable instead of hardcoded paths
- Rename read-me.md to readme.md for consistency

Interface delegation feature (work in progress):
- Add ImplementsAttribute for Delphi-style interface delegation
- Add InterfaceDelegationGenerator source generator (detection logic has bugs, needs debugging)
- Add test files: ILogger, ConsoleLogger, DataService interfaces
- Add diagnostic rules TW1001, TW1002, TW1003 to AnalyzerReleases.Unshipped.md
- Create comprehensive task documentation in kanban/to-do/017_create-interface-delegation-generator/

Source generator configuration:
- Update test console to use PackageReference instead of ProjectReference for analyzer
- Add TimeWarp.SourceGenerators to Directory.Packages.props for version management
- Configure GeneratePackageOnBuild in source/Directory.Build.props
- Suppress RS2001 (not using shipped/unshipped workflow) and NU5128 (expected for analyzers)

The interface delegation generator infrastructure is complete but the member detection
logic needs debugging before it will work correctly.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
Update Directory.Packages.props to reference TimeWarp.SourceGenerators using
$(Version) variable instead of hardcoded version, following timewarp-nuru pattern.
This ensures the analyzer package version stays in sync with the main package version
defined in source/Directory.Build.props.

Bump version to 1.0.0-beta.5

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
- Update NuGet cache key to use Directory.Packages.props instead of deleted packages.lock.json
- Remove explicit dotnet pack step since GeneratePackageOnBuild handles it during build
- Fix version extraction XPath to read from source/Directory.Build.props
- Update package paths from source/.../bin/Release/ to artifacts/packages/
- Update artifact upload path to use artifacts/packages/

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
@StevenTCramer StevenTCramer merged commit 3a9147d into master Oct 17, 2025
1 check 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