Skip to content

Commit 577ed32

Browse files
committed
try/finally block, package versions, method visibility, accept filepaths with spaces
1 parent 2e80fe1 commit 577ed32

File tree

5 files changed

+36
-36
lines changed

5 files changed

+36
-36
lines changed

src/SourceBuild/content/eng/Versions.props

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,5 +26,7 @@
2626
<PrivateSourceBuiltArtifactsVersion>9.0.100-preview.2.24104.1</PrivateSourceBuiltArtifactsVersion>
2727
<!-- msbuild -->
2828
<MicrosoftBuildVersion>15.7.179</MicrosoftBuildVersion>
29+
<!-- command-line-api -->
30+
<SystemCommandLineVersion>2.0.0-beta4.24069.1</SystemCommandLineVersion>
2931
</PropertyGroup>
3032
</Project>

src/SourceBuild/content/eng/tools/BinaryToolKit/BinaryToolKit.csproj

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,5 @@
11
<Project Sdk="Microsoft.NET.Sdk" InitialTargets="CheckRuntimeVersion">
22

3-
<Import Project="Versions.props"/>
4-
53
<PropertyGroup>
64
<TargetFramework>$(NetCurrent)</TargetFramework>
75
<ImplicitUsings>enable</ImplicitUsings>
@@ -16,9 +14,9 @@
1614
</Target>
1715

1816
<ItemGroup>
19-
<PackageReference Include="Microsoft.Extensions.FileSystemGlobbing" Version="$(MicrosoftExtensionsFileSystemGlobbingVersion)" />
20-
<PackageReference Include="Microsoft.Extensions.Logging.Console" Version="$(MicrosoftExtensionsLoggingConsoleVersion)" />
21-
<PackageReference Include="Microsoft.Extensions.Logging" Version="$(MicrosoftExtensionsLoggingVersion)" />
17+
<PackageReference Include="Microsoft.Extensions.FileSystemGlobbing" Version="$(RuntimeVersion)" />
18+
<PackageReference Include="Microsoft.Extensions.Logging.Console" Version="$(RuntimeVersion)" />
19+
<PackageReference Include="Microsoft.Extensions.Logging" Version="$(RuntimeVersion)" />
2220
<PackageReference Include="System.CommandLine" Version="$(SystemCommandLineVersion)" />
2321
</ItemGroup>
2422

src/SourceBuild/content/eng/tools/BinaryToolKit/DetectBinaries.cs

Lines changed: 29 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -9,8 +9,8 @@ namespace BinaryToolKit;
99

1010
public static class DetectBinaries
1111
{
12-
private static readonly string Utf16Marker = "UTF-16";
13-
private static readonly int ChunkSize = 4096;
12+
private const string Utf16Marker = "UTF-16";
13+
private const int ChunkSize = 4096;
1414
private static readonly Regex GitCleanRegex = new Regex(@"Would (remove|skip)( repository)? (.*)");
1515

1616
public static async Task<List<string>> ExecuteAsync(string targetDirectory)
@@ -40,32 +40,40 @@ private static async Task<List<string>> GetIgnoredPatternsAsync(string targetDir
4040
{
4141
string gitDirectory = Path.Combine(targetDirectory, ".git");
4242
bool isGitRepo = Directory.Exists(gitDirectory);
43-
if (!isGitRepo)
43+
44+
try
4445
{
45-
// Configure a fake git repo to use so that we can run git clean -ndx
46-
await ExecuteProcessAsync("git", $"-C {targetDirectory} init -q");
47-
}
46+
if (!isGitRepo)
47+
{
48+
// Configure a fake git repo to use so that we can run git clean -ndx
49+
await ExecuteProcessAsync("git", $"-C {targetDirectory} init -q");
50+
}
4851

49-
await ExecuteProcessAsync("git", $"-C {targetDirectory} config --global safe.directory {targetDirectory}");
52+
await ExecuteProcessAsync("git", $"-C {targetDirectory} config --global safe.directory {targetDirectory}");
5053

51-
string output = await ExecuteProcessAsync("git", $"-C {targetDirectory} clean -ndx");
54+
string output = await ExecuteProcessAsync("git", $"-C {targetDirectory} clean -ndx");
5255

53-
List<string> ignoredPaths = output.Split(Environment.NewLine)
54-
.Select(line => GitCleanRegex.Match(line))
55-
.Where(match => match.Success)
56-
.Select(match => match.Groups[3].Value)
57-
.ToList();
56+
List<string> ignoredPaths = output.Split(Environment.NewLine)
57+
.Select(line => GitCleanRegex.Match(line))
58+
.Where(match => match.Success)
59+
.Select(match => match.Groups[3].Value)
60+
.ToList();
5861

59-
if (!isGitRepo)
60-
{
61-
Directory.Delete(gitDirectory, true);
62+
if (isGitRepo)
63+
{
64+
ignoredPaths.Add(".git");
65+
}
66+
67+
return ignoredPaths;
6268
}
63-
else
69+
finally
6470
{
65-
ignoredPaths.Add(".git");
71+
// Ensure .git directory is deleted if it wasn't originally a git repo
72+
if (!isGitRepo && Directory.Exists(gitDirectory))
73+
{
74+
Directory.Delete(gitDirectory, true);
75+
}
6676
}
67-
68-
return ignoredPaths;
6977
}
7078

7179
private static async Task<bool> IsBinaryAsync(string filePath)
@@ -96,7 +104,7 @@ private static async Task<bool> IsNotUTF16Async(string file)
96104
{
97105
if (Environment.OSVersion.Platform == PlatformID.Unix)
98106
{
99-
string output = await ExecuteProcessAsync("file", file);
107+
string output = await ExecuteProcessAsync("file", $"\"{file}\"");
100108
output = output.Split(":")[1].Trim();
101109

102110
if (output.Contains(Utf16Marker))

src/SourceBuild/content/eng/tools/BinaryToolKit/Program.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ namespace BinaryToolKit;
99

1010
public class Program
1111
{
12-
static async Task<int> Main(string[] args)
12+
public static async Task<int> Main(string[] args)
1313
{
1414
CliArgument<string> TargetDirectory = new("target-directory")
1515
{
@@ -73,4 +73,4 @@ await binaryTool.ExecuteAsync(
7373

7474
return await rootCommand.Parse(args).InvokeAsync();
7575
}
76-
}
76+
}

src/SourceBuild/content/eng/tools/BinaryToolKit/Versions.props

Lines changed: 0 additions & 8 deletions
This file was deleted.

0 commit comments

Comments
 (0)