GitTools / GitVersion

From git log to SemVer in no time
https://gitversion.net/docs/
MIT License
2.85k stars 650 forks source link

[Bug] If -diag switch is specified first, -config is ignored #2853

Open beatcracker opened 3 years ago

beatcracker commented 3 years ago

Describe the bug

If -diag switch is specified first in commandline arguments, the -config switch is ignored.

Expected Behavior

Order of arguments should not matter.

Actual Behavior

Position of -diag switch affects argument parsing: -config switch is ignored.

Steps to Reproduce

mkdir repro
cd repro
dotnet tool install --global GitVersion.Tool
echo wtf > GitVersion.yml
echo next-version: 3.2.1 > custom.yml
git init
git commit -m "FooBar" --allow-empty
dotnet-gitversion -config custom.yml -diag
dotnet-gitversion -diag -config custom.yml

First GitVersion invocation (dotnet-gitversion -config custom.yml -diag) will run succefuly and return:

{
  "Major": 3,
  "Minor": 2,
  "Patch": 1,
  // ...
}

The second invocation will fail, since -diag switch is specified first and it'll ignore config file specified via -config and will try to read GitVersiion.yml.

YamlDotNet.Core.YamlException: (Line: 1, Col: 1, Idx: 0) - (Line: 1, Col: 4, Idx: 3): Exception during deserialization

Context

It's very hard to try various configurations when order of switches affects result. Related: #2848

Your Environment

asbjornu commented 3 years ago

Seems like we don't have a test for -diag at all. I suppose the bug may be that -config is parsed as a value for -diag somehow. It should be fairly easy to test and fix. Are you up for submitting a PR?

github-actions[bot] commented 1 year ago

This issue has been automatically marked as stale because it has not had recent activity. After 30 days from now, it will be closed if no further activity occurs.