Skip to content

Commit eca9c2b

Browse files
authored
Merge pull request #927 from bigjonroberts/init_appveyor_private
Add config wizard changes to support private repositories on Appveyor
2 parents 3edc110 + 9203f93 commit eca9c2b

File tree

4 files changed

+81
-8
lines changed

4 files changed

+81
-8
lines changed

src/GitVersionCore/Configuration/Init/BuildServer/AppVeyorSetup.cs

Lines changed: 33 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -7,10 +7,19 @@ namespace GitVersion.Configuration.Init.BuildServer
77
using GitVersion.Configuration.Init.Wizard;
88
using GitVersion.Helpers;
99

10+
enum ProjectVisibility
11+
{
12+
Public = 0,
13+
Private = 1
14+
}
15+
1016
class AppVeyorSetup : ConfigInitWizardStep
1117
{
12-
public AppVeyorSetup(IConsole console, IFileSystem fileSystem) : base(console, fileSystem)
18+
private ProjectVisibility _projectVisibility;
19+
20+
public AppVeyorSetup(IConsole console, IFileSystem fileSystem, ProjectVisibility visibility) : base(console, fileSystem)
1321
{
22+
_projectVisibility = visibility;
1423
}
1524

1625
protected override StepResult HandleResult(string result, Queue<ConfigInitWizardStep> steps, Config config, string workingDirectory)
@@ -32,38 +41,55 @@ protected override StepResult HandleResult(string result, Queue<ConfigInitWizard
3241
return StepResult.InvalidResponseSelected();
3342
}
3443

44+
static private string GetGVCommand(ProjectVisibility visibility)
45+
{
46+
switch (visibility)
47+
{
48+
case ProjectVisibility.Public:
49+
return " - ps: gitversion /l console /output buildserver /updateAssemblyInfo";
50+
case ProjectVisibility.Private:
51+
return " - ps: gitversion $env:APPVEYOR_BUILD_FOLDER /l console /output buildserver /updateAssemblyInfo /nofetch /b $env:APPVEYOR_REPO_BRANCH";
52+
default:
53+
return "";
54+
}
55+
}
56+
3557
void GenerateBasicConfig(string workingDirectory)
3658
{
37-
WriteConfig(workingDirectory, FileSystem, @"install:
59+
WriteConfig(workingDirectory, FileSystem, String.Format(@"install:
3860
- choco install gitversion.portable -pre -y
3961
4062
before_build:
4163
- nuget restore
42-
- ps: gitversion /l console /output buildserver /updateAssemblyInfo
64+
{0}
4365
4466
build:
45-
project: <your sln file>");
67+
project: <your sln file>",
68+
GetGVCommand(_projectVisibility)
69+
));
4670
}
4771

4872
void GenerateNuGetConfig(string workingDirectory)
4973
{
50-
WriteConfig(workingDirectory, FileSystem, @"install:
74+
WriteConfig(workingDirectory, FileSystem, String.Format(@"install:
5175
- choco install gitversion.portable -pre -y
5276
5377
assembly_info:
5478
patch: false
5579
5680
before_build:
5781
- nuget restore
58-
- ps: gitversion /l console /output buildserver /updateAssemblyInfo
82+
{0}
5983
6084
build:
6185
project: <your sln file>
6286
6387
after_build:
6488
- cmd: ECHO nuget pack <Project>\<NuSpec>.nuspec -version ""%GitVersion_NuGetVersion%"" -prop ""target=%CONFIGURATION%""
6589
- cmd: nuget pack <Project>\<NuSpec>.nuspec -version ""%GitVersion_NuGetVersion%"" -prop ""target=%CONFIGURATION%""
66-
- cmd: appveyor PushArtifact ""<NuSpec>.%GitVersion_NuGetVersion%.nupkg""");
90+
- cmd: appveyor PushArtifact ""<NuSpec>.%GitVersion_NuGetVersion%.nupkg""",
91+
GetGVCommand(_projectVisibility)
92+
));
6793
}
6894

6995
void WriteConfig(string workingDirectory, IFileSystem fileSystem, string configContents)
Lines changed: 46 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,46 @@
1+
namespace GitVersion.Configuration.Init.BuildServer
2+
{
3+
using System.Collections.Generic;
4+
using GitVersion.Configuration.Init.Wizard;
5+
using GitVersion.Helpers;
6+
7+
class AppveyorPublicPrivate : ConfigInitWizardStep
8+
{
9+
public AppveyorPublicPrivate(IConsole console, IFileSystem fileSystem) : base(console, fileSystem)
10+
{
11+
}
12+
13+
protected override StepResult HandleResult(string result, Queue<ConfigInitWizardStep> steps, Config config, string workingDirectory)
14+
{
15+
switch (result)
16+
{
17+
case "0":
18+
steps.Enqueue(new EditConfigStep(Console, FileSystem));
19+
return StepResult.Ok();
20+
case "1":
21+
steps.Enqueue(new AppVeyorSetup(Console, FileSystem, ProjectVisibility.Public));
22+
return StepResult.Ok();
23+
case "2":
24+
steps.Enqueue(new AppVeyorSetup(Console, FileSystem, ProjectVisibility.Private));
25+
return StepResult.Ok();
26+
}
27+
return StepResult.Ok();
28+
}
29+
30+
protected override string GetPrompt(Config config, string workingDirectory)
31+
{
32+
return @"Is your project public or private?
33+
34+
That is ... does it require authentication to clone/pull?
35+
36+
0) Go Back
37+
1) Public
38+
2) Private";
39+
}
40+
41+
protected override string DefaultResult
42+
{
43+
get { return "0"; }
44+
}
45+
}
46+
}

src/GitVersionCore/Configuration/Init/BuildServer/SetupBuildScripts.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@ protected override StepResult HandleResult(string result, Queue<ConfigInitWizard
1818
steps.Enqueue(new EditConfigStep(Console, FileSystem));
1919
return StepResult.Ok();
2020
case "1":
21-
steps.Enqueue(new AppVeyorSetup(Console, FileSystem));
21+
steps.Enqueue(new AppveyorPublicPrivate(Console, FileSystem));
2222
return StepResult.Ok();
2323
}
2424
return StepResult.Ok();

src/GitVersionCore/GitVersionCore.csproj

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -87,6 +87,7 @@
8787
<Compile Include="Configuration\ConsoleAdapter.cs" />
8888
<Compile Include="Configuration\IConsole.cs" />
8989
<Compile Include="Configuration\IgnoreConfig.cs" />
90+
<Compile Include="Configuration\Init\BuildServer\AppveyorPublicPrivate.cs" />
9091
<Compile Include="Configuration\Init\BuildServer\AppVeyorSetup.cs" />
9192
<Compile Include="Configuration\Init\BuildServer\SetupBuildScripts.cs" />
9293
<Compile Include="Configuration\Init\SetConfig\AssemblyVersioningSchemeSetting.cs" />

0 commit comments

Comments
 (0)