cake-build / cake-build/cake

Provide attributes for supported runners, operating systems and runners in extensions

Open
#3,105 1 comment 0 reactions 0 assignees View on GitHub
Improvement
Dominant language
C#
Stars
4.2k
Forks
778
Avg merge
1h 15m
Merged PRs (30d)
19

Description

There's currently no structured way for an extension to express on which Cake runner, operating system or platform it runs. There might be issues with dependencies on different runners, issues with paths on different operating systems or an addin can target a more restrictive set of TFM than what Cake is available on.
Current [guidelines](https://cakebuild.net/docs/extending/addins/best-practices#testing) suggests to mention this in XML comment. It would be helpful to have attributes available:

- SupportedRunnersAttribute
- SupportedOperatingSystemsAttribute
- SupportedPlatformsAttribute

These addins can be used for two cases:

- On the website it allows to show this information as metadata for each addin. It also allows to filter to extensions which support a specific runner, operating system or platform.
- In Cake we can throw an error if user tries to run with an extension not supported in the current environment.

Existing addins which don't provide attributes should be treated as compatible, with a warning.

Contributor guide

Open the contributing guide

Research direction

The issue names no files or tests; begin with the linked addin testing guidelines and trace how extension metadata is currently represented. Define how the three proposed attributes support website metadata and Cake compatibility checks, including the warning behavior for missing attributes. Done means supported runners, operating systems, and platforms can be declared and consumed for both use cases.

Written by the indexing model from the issue text.

Assessment

Tech stack
csharp
Domain
build-system
Issue type
Feature
Difficulty
5/5
Estimated time
Over a week
Activity status
Stale
Clarity
Mostly clear
Newbie friendliness
30/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.