cake-build / cake-build/cake

Allow users to use any of the Cake runner arguments as build script arguments

Open
#3,279 17 comments 1 reaction 1 assignee Claimed by @FrankRay78 View on GitHub
blocked-upstream Improvement
Dominant language
C#
Stars
4.2k
Forks
778
Avg merge
3h 37m
Merged PRs (30d)
21

Description

### Background

The Cake runner supports a number of arguments, such `--version` to display the version of the runner, or `--debug` to launch the script in debug mode.

However, this make it impossible for these names to be used as arguments in Cake build scripts. For example, if one wanted to use the argument `version` as an input to the build script:

```cakescript
var version = Argument("version");
```

And then run Cake:

```powershell
dotnet cake --version=1.2.3
```

They would receive an error: `Flags cannot be assigned a value`

### Workaround

The current workaround is to use the "remaining arguments" feature when using one of these "reserved" argument names:

```powershell
dotnet cake -- --version=1.2.3
```

### Proposal

This issue intends to make the necessary updates to allow existing "flag" arguments to be used in build scripts, so that if the user runs cake with `--version=1.2.3` do not assume the flag `--version` and instead execute the Cake script with the argument `["version"] = "1.2.3"`.

| Command-line | Expected result |
| --- | --- |
| `dotnet cake --version` | Display Cake version (as it is today) |
| `dotnet cake --version=1.2.3` | Run build script and set the `version` argument to `1.2.3` |

This should work for all Cake runner arguments, except for `Verbosity` which is not a "flag" argument.

![image](https://user-images.githubusercontent.com/177608/111087260-6884e980-84ff-11eb-8554-c7d38af2d5bb.png)

---

Related:
- [Improve error message for reserved argument names](https://github.com/cake-build/cake/issues/2794)

Contributor guide

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.