mirror of
https://github.com/zoriya/octokit.net.git
synced 2025-12-19 05:35:11 +00:00
* convert to VS2017 * rework cake.frosting build to latest cake vs2017 "template" example * fix clean task and version suffix * add arg to DotNetCorePack so it uses the correct version * fix appveyor * is there an easier way to test appveyor? * ok travis, let's do this * after reading the travis repo, this seems to be the version we want for vs201/csproj tool support * msbuild complaining about arguments - we can use defaults anyhow so remove $@ from build.sh script * add workaround for msbuild/travis, as mentioned on aspnet Mvc repo * cmon travis * perhaps tee isnt needed afterall * travis permission denied when trying to install tools in build script... i feel dirty but need to see if sudo will fix it! * could it be folder permissions of /build ? * Try 777 for NuGet.exe permissions rather than 644 * remove windows platform restriction on GitVersion call * Add a wrapper script for GitVersion on non windows * fix wrapper script name * add debug * let's see if we are running the script at all! * run mono gitversion direclty from travis.yml, for science * see if we can run bin/sh and prepend an argument to our shell script * remove echos from wrapper script * Ensure full git repo include more than 50 commits and all tags are fetched, as GitVersion was failing on TravisCI * only build netstandard framework on non windows * revert overriding the target framework when building the solution * Unix being case-sensitive, adjust app.config file name in csproj files * set FrameworkPathOverride to point to different folders on macOS and Linux * Remove NuGet.exe from the repo. On Windows, it will be installed by the Frosting bootstrapper script. On Unix/macOS, cake has smarts to look for mono- and Linux-specific executables * tidy up GitVersion logic into a GitVersionRunner class * apply workaround for osx dotnet restore "too many open files" errors * update test project references to latest official versions * doesnt seem to be a reason for overriding the implicit reference * remove extra whitespace and unused namespace
75 lines
2.4 KiB
C#
75 lines
2.4 KiB
C#
using System;
|
|
using System.IO;
|
|
using System.Linq;
|
|
using Cake.Common;
|
|
using Cake.Common.Diagnostics;
|
|
using Cake.Core;
|
|
using Cake.Core.IO;
|
|
using Cake.Frosting;
|
|
|
|
public sealed class FormatCode : FrostingTask<Context>
|
|
{
|
|
public override void Run(Context context)
|
|
{
|
|
var codeFormatterExe = context.FileSystem
|
|
.GetDirectory("tools")
|
|
.GetFiles("CodeFormatter.exe", SearchScope.Recursive)
|
|
.First()
|
|
.Path
|
|
.MakeAbsolute(context.Environment);
|
|
|
|
foreach (var project in context.Projects)
|
|
{
|
|
context.Information("Formatting code of {0}", project.Name);
|
|
|
|
var tempCsprojFile = CreateTempCsproj(context, project.Name);
|
|
context.Information("Generated temporary {0} file to run the formatter", new FilePath(tempCsprojFile).GetFilename());
|
|
|
|
var exitCode = context.StartProcess(
|
|
codeFormatterExe,
|
|
$"{tempCsprojFile} /nocopyright /nounicode");
|
|
|
|
if (exitCode != 0)
|
|
{
|
|
throw new CakeException($"An error occured while formatting code of {project.Name}");
|
|
}
|
|
}
|
|
|
|
context.Information("Successfully formatted code of all the projects");
|
|
}
|
|
|
|
public override bool ShouldRun(Context context)
|
|
{
|
|
return context.IsRunningOnWindows();
|
|
}
|
|
|
|
private static string CreateTempCsproj(Context context, string projectName)
|
|
{
|
|
DirectoryPath tempFolder = System.IO.Path.GetTempPath();
|
|
var projectCsproj = tempFolder.CombineWithFilePath($"{projectName}.csproj").FullPath;
|
|
|
|
var files = context.FileSystem
|
|
.GetDirectory(projectName)
|
|
.GetFiles("*.cs", SearchScope.Recursive)
|
|
.Select(x => x.Path.MakeAbsolute(context.Environment))
|
|
.ToArray();
|
|
|
|
var compileElements = files
|
|
.Select(x => $"<Compile Include=\"{x}\" />")
|
|
.ToArray();
|
|
|
|
var csprojContent =
|
|
$@"<?xml version=""1.0"" encoding=""utf-8""?>
|
|
<Project ToolsVersion=""4.0"" DefaultTargets=""Build"" xmlns=""http://schemas.microsoft.com/developer/msbuild/2003"">
|
|
<ItemGroup>
|
|
{string.Join(Environment.NewLine, compileElements)}
|
|
</ItemGroup>
|
|
<Import Project=""$(MSBuildToolsPath)\Microsoft.CSharp.targets"" />
|
|
</Project>";
|
|
|
|
File.WriteAllText(projectCsproj, csprojContent);
|
|
|
|
return projectCsproj;
|
|
}
|
|
}
|