Skip to content

Commit e284e47

Browse files
committed
(build) moving cake logic to separate files
1 parent 31727f3 commit e284e47

File tree

7 files changed

+1026
-0
lines changed

7 files changed

+1026
-0
lines changed

build/utils/artifacts.cake

Lines changed: 151 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,151 @@
1+
public class BuildPackages
2+
{
3+
public ICollection<BuildPackage> All { get; private set; }
4+
public ICollection<BuildPackage> Nuget { get; private set; }
5+
public ICollection<BuildPackage> Chocolatey { get; private set; }
6+
7+
public static BuildPackages GetPackages(
8+
DirectoryPath nugetRooPath,
9+
BuildVersion version,
10+
string[] packageIds,
11+
string[] chocolateyPackageIds)
12+
{
13+
var toNugetPackage = BuildPackage(nugetRooPath, version.NugetVersion);
14+
var toChocolateyPackage = BuildPackage(nugetRooPath, version.SemVersion, isChocolateyPackage: true);
15+
var nugetPackages = packageIds.Select(toNugetPackage).ToArray();
16+
var chocolateyPackages = chocolateyPackageIds.Select(toChocolateyPackage).ToArray();
17+
18+
return new BuildPackages {
19+
All = nugetPackages.Union(chocolateyPackages).ToArray(),
20+
Nuget = nugetPackages,
21+
Chocolatey = chocolateyPackages
22+
};
23+
}
24+
25+
private static Func<string, BuildPackage> BuildPackage(
26+
DirectoryPath nugetRooPath,
27+
string version,
28+
bool isChocolateyPackage = false)
29+
{
30+
return package => new BuildPackage(
31+
id: package,
32+
nuspecPath: string.Concat("./nuspec/", package, ".nuspec"),
33+
packagePath: nugetRooPath.CombineWithFilePath(string.Concat(package, ".", version, ".nupkg")),
34+
isChocolateyPackage: isChocolateyPackage);
35+
}
36+
}
37+
38+
public class BuildPackage
39+
{
40+
public string Id { get; private set; }
41+
public FilePath NuspecPath { get; private set; }
42+
public FilePath PackagePath { get; private set; }
43+
public bool IsChocolateyPackage { get; private set; }
44+
public string PackageName { get; private set; }
45+
46+
47+
public BuildPackage(
48+
string id,
49+
FilePath nuspecPath,
50+
FilePath packagePath,
51+
bool isChocolateyPackage)
52+
{
53+
Id = id;
54+
NuspecPath = nuspecPath;
55+
PackagePath = packagePath;
56+
IsChocolateyPackage = isChocolateyPackage;
57+
PackageName = PackagePath.GetFilename().ToString();
58+
}
59+
}
60+
61+
public class BuildArtifacts
62+
{
63+
public ICollection<BuildArtifact> All { get; private set; }
64+
65+
public static BuildArtifacts GetArtifacts(FilePath[] artifacts)
66+
{
67+
var toBuildArtifact = BuildArtifact("build-artifact");
68+
var buildArtifacts = artifacts.Select(toBuildArtifact).ToArray();
69+
70+
return new BuildArtifacts {
71+
All = buildArtifacts.ToArray(),
72+
};
73+
}
74+
75+
private static Func<FilePath, BuildArtifact> BuildArtifact(string containerName)
76+
{
77+
return artifactPath => new BuildArtifact(containerName: containerName, artifactPath: artifactPath);
78+
}
79+
}
80+
81+
public class BuildArtifact
82+
{
83+
public string ContainerName { get; private set; }
84+
public FilePath ArtifactPath { get; private set; }
85+
public string ArtifactName { get; private set; }
86+
87+
public BuildArtifact(
88+
string containerName,
89+
FilePath artifactPath)
90+
{
91+
ContainerName = containerName;
92+
ArtifactPath = artifactPath.FullPath;
93+
ArtifactName = ArtifactPath.GetFilename().ToString();
94+
}
95+
}
96+
97+
public class DockerImages
98+
{
99+
public ICollection<DockerImage> Images { get; private set; }
100+
101+
public static DockerImages GetDockerImages(BuildParameters parameters, FilePath[] dockerfiles)
102+
{
103+
var toDockerImage = DockerImage();
104+
var dockerImages = dockerfiles.Select(toDockerImage).ToArray();
105+
106+
var windowsImages = dockerImages.Where(x => x.OS == "windows").ToArray();
107+
var linuxImages = dockerImages.Where(x => x.OS == "linux").ToArray();
108+
109+
var images = parameters.IsDockerForWindows
110+
? windowsImages
111+
: parameters.IsDockerForLinux
112+
? linuxImages
113+
: Array.Empty<DockerImage>();
114+
115+
return new DockerImages {
116+
Images = images
117+
};
118+
}
119+
120+
private static Func<FilePath, DockerImage> DockerImage()
121+
{
122+
return dockerFile => {
123+
var segments = dockerFile.Segments.Reverse().ToArray();
124+
var distro = segments[1];
125+
var os = segments[2];
126+
var targetFramework = segments[3];
127+
return new DockerImage(os: os, distro: distro, targetFramework: targetFramework);
128+
};
129+
}
130+
}
131+
132+
public class DockerImage
133+
{
134+
public string OS { get; private set; }
135+
public string Distro { get; private set; }
136+
public string TargetFramework { get; private set; }
137+
138+
public DockerImage(string os, string distro, string targetFramework)
139+
{
140+
OS = os;
141+
Distro = distro;
142+
TargetFramework = targetFramework;
143+
}
144+
145+
public void Deconstruct(out string os, out string distro, out string targetFramework)
146+
{
147+
os = OS;
148+
distro = Distro;
149+
targetFramework = TargetFramework;
150+
}
151+
}

build/utils/credentials.cake

Lines changed: 170 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,170 @@
1+
public class BuildCredentials
2+
{
3+
public GitHubCredentials GitHub { get; private set; }
4+
public GitterCredentials Gitter { get; private set; }
5+
public DockerHubCredentials Docker { get; private set; }
6+
public NugetCredentials Nuget { get; private set; }
7+
public ChocolateyCredentials Chocolatey { get; private set; }
8+
public TfxCredentials Tfx { get; private set; }
9+
public RubyGemCredentials RubyGem { get; private set; }
10+
public CodeCovCredentials CodeCov { get; private set; }
11+
12+
public static BuildCredentials GetCredentials(ICakeContext context)
13+
{
14+
return new BuildCredentials
15+
{
16+
GitHub = GitHubCredentials.GetGitHubCredentials(context),
17+
Gitter = GitterCredentials.GetGitterCredentials(context),
18+
Docker = DockerHubCredentials.GetDockerHubCredentials(context),
19+
Nuget = NugetCredentials.GetNugetCredentials(context),
20+
Chocolatey = ChocolateyCredentials.GetChocolateyCredentials(context),
21+
Tfx = TfxCredentials.GetTfxCredentials(context),
22+
RubyGem = RubyGemCredentials.GetRubyGemCredentials(context),
23+
CodeCov = CodeCovCredentials.GetCodeCovCredentials(context),
24+
};
25+
}
26+
}
27+
28+
public class GitHubCredentials
29+
{
30+
public string UserName { get; private set; }
31+
public string Password { get; private set; }
32+
public string Token { get; private set; }
33+
34+
public GitHubCredentials(string userName, string password, string token)
35+
{
36+
UserName = userName;
37+
Password = password;
38+
Token = token;
39+
}
40+
41+
public static GitHubCredentials GetGitHubCredentials(ICakeContext context)
42+
{
43+
return new GitHubCredentials(
44+
context.EnvironmentVariable("GITHUB_USERNAME"),
45+
context.EnvironmentVariable("GITHUB_PASSWORD"),
46+
context.EnvironmentVariable("GITHUB_TOKEN"));
47+
}
48+
}
49+
50+
public class GitterCredentials
51+
{
52+
public string Token { get; private set; }
53+
public string RoomId { get; private set; }
54+
55+
public GitterCredentials(string token, string roomId)
56+
{
57+
Token = token;
58+
RoomId = roomId;
59+
}
60+
61+
public static GitterCredentials GetGitterCredentials(ICakeContext context)
62+
{
63+
return new GitterCredentials(
64+
context.EnvironmentVariable("GITTER_TOKEN"),
65+
context.EnvironmentVariable("GITTER_ROOM_ID")
66+
);
67+
}
68+
}
69+
70+
public class DockerHubCredentials
71+
{
72+
public string UserName { get; private set; }
73+
public string Password { get; private set; }
74+
75+
public DockerHubCredentials(string userName, string password)
76+
{
77+
UserName = userName;
78+
Password = password;
79+
}
80+
81+
public static DockerHubCredentials GetDockerHubCredentials(ICakeContext context)
82+
{
83+
return new DockerHubCredentials(
84+
context.EnvironmentVariable("DOCKER_USERNAME"),
85+
context.EnvironmentVariable("DOCKER_PASSWORD"));
86+
}
87+
}
88+
89+
public class NugetCredentials
90+
{
91+
public string ApiKey { get; private set; }
92+
public string ApiUrl { get; private set; }
93+
94+
public NugetCredentials(string apiKey, string apiUrl)
95+
{
96+
ApiKey = apiKey;
97+
ApiUrl = apiUrl;
98+
}
99+
100+
public static NugetCredentials GetNugetCredentials(ICakeContext context)
101+
{
102+
return new NugetCredentials(
103+
context.EnvironmentVariable("NUGET_API_KEY"),
104+
context.EnvironmentVariable("NUGET_API_URL"));
105+
}
106+
}
107+
108+
public class ChocolateyCredentials
109+
{
110+
public string ApiKey { get; private set; }
111+
public string ApiUrl { get; private set; }
112+
113+
public ChocolateyCredentials(string apiKey, string apiUrl)
114+
{
115+
ApiKey = apiKey;
116+
ApiUrl = apiUrl;
117+
}
118+
119+
public static ChocolateyCredentials GetChocolateyCredentials(ICakeContext context)
120+
{
121+
return new ChocolateyCredentials(
122+
context.EnvironmentVariable("CHOCOLATEY_API_KEY"),
123+
context.EnvironmentVariable("CHOCOLATEY_API_URL"));
124+
}
125+
}
126+
127+
public class TfxCredentials
128+
{
129+
public string Token { get; private set; }
130+
131+
public TfxCredentials(string token)
132+
{
133+
Token = token;
134+
}
135+
136+
public static TfxCredentials GetTfxCredentials(ICakeContext context)
137+
{
138+
return new TfxCredentials(context.EnvironmentVariable("TFX_TOKEN"));
139+
}
140+
}
141+
142+
public class RubyGemCredentials
143+
{
144+
public string ApiKey { get; private set; }
145+
146+
public RubyGemCredentials(string apiKey)
147+
{
148+
ApiKey = apiKey;
149+
}
150+
151+
public static RubyGemCredentials GetRubyGemCredentials(ICakeContext context)
152+
{
153+
return new RubyGemCredentials(context.EnvironmentVariable("RUBY_GEM_API_KEY"));
154+
}
155+
}
156+
157+
public class CodeCovCredentials
158+
{
159+
public string Token { get; private set; }
160+
161+
public CodeCovCredentials(string token)
162+
{
163+
Token = token;
164+
}
165+
166+
public static CodeCovCredentials GetCodeCovCredentials(ICakeContext context)
167+
{
168+
return new CodeCovCredentials(context.EnvironmentVariable("CODECOV_TOKEN"));
169+
}
170+
}

0 commit comments

Comments
 (0)