Merge rel/1.0.0 into feature/msbuild.
This commit is contained in:
commit
d2db776d87
34 changed files with 204 additions and 631 deletions
|
@ -30,7 +30,7 @@ In order to build .NET Command Line Interface, you need the following installed
|
||||||
|
|
||||||
## Building/Running
|
## Building/Running
|
||||||
|
|
||||||
1. Run `build.cmd` or `build.sh` from the root depending on your OS. If you don't want to execute tests, run `build.cmd -Targets Compile` or `./build.sh --targets Compile`.
|
1. Run `build.cmd` or `build.sh` from the root depending on your OS. If you don't want to execute tests, run `build.cmd -Targets Prepare,Compile` or `./build.sh --targets Prepare,Compile`.
|
||||||
2. Use `artifacts/{os}-{arch}/stage2/dotnet` to try out the `dotnet` command. You can also add `artifacts/{os}-{arch}/stage2` to the PATH if you want to run `dotnet` from anywhere.
|
2. Use `artifacts/{os}-{arch}/stage2/dotnet` to try out the `dotnet` command. You can also add `artifacts/{os}-{arch}/stage2` to the PATH if you want to run `dotnet` from anywhere.
|
||||||
|
|
||||||
## A simple test
|
## A simple test
|
||||||
|
|
|
@ -36,7 +36,7 @@ The files are both JSON files stored in UTF-8 encoding. Below are sample files.
|
||||||
"framework": {
|
"framework": {
|
||||||
"name": "Microsoft.DotNetCore",
|
"name": "Microsoft.DotNetCore",
|
||||||
"version": "1.0.1"
|
"version": "1.0.1"
|
||||||
}
|
},
|
||||||
|
|
||||||
"applyPatches": false
|
"applyPatches": false
|
||||||
}
|
}
|
||||||
|
|
17
README.md
17
README.md
|
@ -4,17 +4,12 @@
|
||||||
|
|
||||||
This repo contains the source code for cross-platform [.NET Core](http://github.com/dotnet/core) command line toolchain. It contains the implementation of each command, the native packages for various supported platforms as well as documentation.
|
This repo contains the source code for cross-platform [.NET Core](http://github.com/dotnet/core) command line toolchain. It contains the implementation of each command, the native packages for various supported platforms as well as documentation.
|
||||||
|
|
||||||
RC2 and Preview 1 bits
|
RTM and Preview 2 bits
|
||||||
---------------------
|
---------------------
|
||||||
To get the latest released bits (RC2 for .NET Core and Preview for tooling),
|
To get the latest released bits (RTM for .NET Core and Preview 2 for tooling),
|
||||||
check out our [Getting started page](http://go.microsoft.com/fwlink/?LinkID=798306&clcid=0x409).
|
check out our [Getting started page](http://go.microsoft.com/fwlink/?LinkID=798306&clcid=0x409).
|
||||||
|
|
||||||
Also, don't forget to check out [the documentation](http://dotnet.github.io/docs/core-concepts/core-sdk/index.html).
|
Also, don't forget to check out [the documentation](https://aka.ms/dotnet-cli-docs).
|
||||||
|
|
||||||
Release schedule
|
|
||||||
----------------
|
|
||||||
|
|
||||||
There have been some changes in the schedule for .NET Core and .NET Core CLI tools. You can read more about them in the [.NET Core RC2 Improvements, Schedule, and Roadmap](https://blogs.msdn.microsoft.com/dotnet/2016/05/06/net-core-rc2-improvements-schedule-and-roadmap/) blog post.
|
|
||||||
|
|
||||||
Found an issue?
|
Found an issue?
|
||||||
---------------
|
---------------
|
||||||
|
@ -41,7 +36,7 @@ You can download .NET Core as either an installer (MSI, PKG) or a zip (zip, gzip
|
||||||
- .NET Core SDK - .NET Core + CLI tools
|
- .NET Core SDK - .NET Core + CLI tools
|
||||||
|
|
||||||
> **Note:** please be aware that below installers are the **latest bits**. If you
|
> **Note:** please be aware that below installers are the **latest bits**. If you
|
||||||
> want to install the latest released versions, please check out the [section above](#rc2-and-preview-1-bits).)
|
> want to install the latest released versions, please check out the [section above](#rtm-and-preview-2-bits).)
|
||||||
|
|
||||||
| |Version |.NET Core Installer|.NET Core SDK Installer|.NET Core Binaries|.NET Core SDK Binaries|
|
| |Version |.NET Core Installer|.NET Core SDK Installer|.NET Core Binaries|.NET Core SDK Binaries|
|
||||||
|---------|:------:|:------:|:------:|:------:|:------:|
|
|---------|:------:|:------:|:------:|:------:|:------:|
|
||||||
|
@ -98,7 +93,7 @@ Compiling to IL is done using:
|
||||||
This will drop an IL assembly in `./bin/[configuration]/[framework]/[binary name]`
|
This will drop an IL assembly in `./bin/[configuration]/[framework]/[binary name]`
|
||||||
that you can run using `dotnet bin/[configuration]/[framework]/[binaryname.dll]`.
|
that you can run using `dotnet bin/[configuration]/[framework]/[binaryname.dll]`.
|
||||||
|
|
||||||
For more details, please refer to the [documentation](http://dotnet.github.io/docs/core-concepts/core-sdk/index.html).
|
For more details, please refer to the [documentation](https://aka.ms/dotnet-cli-docs).
|
||||||
|
|
||||||
Building from source
|
Building from source
|
||||||
--------------------
|
--------------------
|
||||||
|
@ -115,5 +110,5 @@ For any and all feedback, please use the Issues on this repository.
|
||||||
License
|
License
|
||||||
--------------------
|
--------------------
|
||||||
|
|
||||||
By downloading the .zip you are agreeing to the terms in the project [EULA](https://aka.ms/dotnet-cli-eula).
|
By downloading the .zip you are agreeing to the terms in the project [EULA](https://aka.ms/dotnet-core-eula).
|
||||||
|
|
||||||
|
|
|
@ -20,11 +20,12 @@
|
||||||
"files": {
|
"files": {
|
||||||
"includeFiles": "packfiles/pack1.txt",
|
"includeFiles": "packfiles/pack1.txt",
|
||||||
"mappings": {
|
"mappings": {
|
||||||
"newpath/": "packfiles/pack2.txt"
|
"newpath/": "packfiles/pack2.txt",
|
||||||
|
"anotherpath/": "packfiles/pack2.txt"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"publishOptions": "testpublishfile.txt",
|
"publishOptions": [ "testpublishfile.txt", "publishfiles" ],
|
||||||
"frameworks": {
|
"frameworks": {
|
||||||
"netcoreapp1.0": {}
|
"netcoreapp1.0": {}
|
||||||
},
|
},
|
||||||
|
|
|
@ -3,5 +3,5 @@
|
||||||
REM Copyright (c) .NET Foundation and contributors. All rights reserved.
|
REM Copyright (c) .NET Foundation and contributors. All rights reserved.
|
||||||
REM Licensed under the MIT license. See LICENSE file in the project root for full license information.
|
REM Licensed under the MIT license. See LICENSE file in the project root for full license information.
|
||||||
|
|
||||||
powershell -NoProfile -NoLogo -Command "%~dp0run-build.ps1 %*; exit $LastExitCode;"
|
powershell -NoProfile -NoLogo -Command "& \"%~dp0run-build.ps1\" %*; exit $LastExitCode;"
|
||||||
if %errorlevel% neq 0 exit /b %errorlevel%
|
if %errorlevel% neq 0 exit /b %errorlevel%
|
||||||
|
|
|
@ -69,7 +69,7 @@ namespace Microsoft.DotNet.Cli.Build.Framework
|
||||||
{
|
{
|
||||||
foreach (var targetOverride in _overrides)
|
foreach (var targetOverride in _overrides)
|
||||||
{
|
{
|
||||||
Reporter.Verbose.WriteLine($"Target {targetOverride.Name} from {targetOverride.OriginalSource} was overridden in {targetOverride.OverrideSource}".Black());
|
Reporter.Verbose.WriteLine($"Target {targetOverride.Name} from {targetOverride.OriginalSource} was overridden in {targetOverride.OverrideSource}");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -1,30 +0,0 @@
|
||||||
// Copyright (c) .NET Foundation and contributors. All rights reserved.
|
|
||||||
// Licensed under the MIT license. See LICENSE file in the project root for full license information.
|
|
||||||
|
|
||||||
using System.Collections.Generic;
|
|
||||||
using Microsoft.DotNet.Cli.Build.Framework;
|
|
||||||
|
|
||||||
namespace Microsoft.DotNet.Scripts
|
|
||||||
{
|
|
||||||
public static class BuildContextProperties
|
|
||||||
{
|
|
||||||
public static List<DependencyInfo> GetDependencyInfos(this BuildTargetContext c)
|
|
||||||
{
|
|
||||||
const string propertyName = "DependencyInfos";
|
|
||||||
|
|
||||||
List<DependencyInfo> dependencyInfos;
|
|
||||||
object dependencyInfosObj;
|
|
||||||
if (c.BuildContext.Properties.TryGetValue(propertyName, out dependencyInfosObj))
|
|
||||||
{
|
|
||||||
dependencyInfos = (List<DependencyInfo>)dependencyInfosObj;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
dependencyInfos = new List<DependencyInfo>();
|
|
||||||
c.BuildContext[propertyName] = dependencyInfos;
|
|
||||||
}
|
|
||||||
|
|
||||||
return dependencyInfos;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -2,7 +2,6 @@
|
||||||
// Licensed under the MIT license. See LICENSE file in the project root for full license information.
|
// Licensed under the MIT license. See LICENSE file in the project root for full license information.
|
||||||
|
|
||||||
using System;
|
using System;
|
||||||
using Microsoft.DotNet.Cli.Build.Framework;
|
|
||||||
|
|
||||||
namespace Microsoft.DotNet.Scripts
|
namespace Microsoft.DotNet.Scripts
|
||||||
{
|
{
|
||||||
|
@ -18,10 +17,10 @@ namespace Microsoft.DotNet.Scripts
|
||||||
///
|
///
|
||||||
/// The following Environment Variables can optionally be specified:
|
/// The following Environment Variables can optionally be specified:
|
||||||
///
|
///
|
||||||
/// COREFX_VERSION_URL - The Url to get the current CoreFx package versions. (ex. "https://raw.githubusercontent.com/dotnet/versions/master/build-info/dotnet/corefx/release/1.0.0/Latest_Packages.txt")
|
/// COREFX_VERSION_URL - The Url to get the current CoreFx package versions. (ex. "https://raw.githubusercontent.com/dotnet/versions/master/build-info/dotnet/corefx/release/1.0.0")
|
||||||
/// CORECLR_VERSION_URL - The Url to get the current CoreCLR version. (ex. "https://raw.githubusercontent.com/dotnet/versions/master/build-info/dotnet/coreclr/release/1.0.0/Latest_Packages.txt")
|
/// CORECLR_VERSION_URL - The Url to get the current CoreCLR version. (ex. "https://raw.githubusercontent.com/dotnet/versions/master/build-info/dotnet/coreclr/release/1.0.0")
|
||||||
/// ROSLYN_VERSION_URL - The Url to get the current Roslyn version. (ex. "https://raw.githubusercontent.com/dotnet/versions/master/build-info/dotnet/roslyn/netcore1.0/Latest_Packages.txt")
|
/// ROSLYN_VERSION_URL - The Url to get the current Roslyn version. (ex. "https://raw.githubusercontent.com/dotnet/versions/master/build-info/dotnet/roslyn/netcore1.0")
|
||||||
/// CORESETUP_VERSION_URL - The Url to get the current dotnet/core-setup package versions. (ex. "https://raw.githubusercontent.com/dotnet/versions/master/build-info/dotnet/core-setup/release/1.0.0/Latest_Packages.txt")
|
/// CORESETUP_VERSION_URL - The Url to get the current dotnet/core-setup package versions. (ex. "https://raw.githubusercontent.com/dotnet/versions/master/build-info/dotnet/core-setup/release/1.0.0")
|
||||||
/// GITHUB_ORIGIN_OWNER - The owner of the GitHub fork to push the commit and create the PR from. (ex. "dotnet-bot")
|
/// GITHUB_ORIGIN_OWNER - The owner of the GitHub fork to push the commit and create the PR from. (ex. "dotnet-bot")
|
||||||
/// GITHUB_UPSTREAM_OWNER - The owner of the GitHub base repo to create the PR to. (ex. "dotnet")
|
/// GITHUB_UPSTREAM_OWNER - The owner of the GitHub base repo to create the PR to. (ex. "dotnet")
|
||||||
/// GITHUB_PROJECT - The repo name under the ORIGIN and UPSTREAM owners. (ex. "cli")
|
/// GITHUB_PROJECT - The repo name under the ORIGIN and UPSTREAM owners. (ex. "cli")
|
||||||
|
@ -36,11 +35,10 @@ namespace Microsoft.DotNet.Scripts
|
||||||
private Lazy<string> _email = new Lazy<string>(() => GetEnvironmentVariable("GITHUB_EMAIL"));
|
private Lazy<string> _email = new Lazy<string>(() => GetEnvironmentVariable("GITHUB_EMAIL"));
|
||||||
private Lazy<string> _password = new Lazy<string>(() => GetEnvironmentVariable("GITHUB_PASSWORD"));
|
private Lazy<string> _password = new Lazy<string>(() => GetEnvironmentVariable("GITHUB_PASSWORD"));
|
||||||
|
|
||||||
private Lazy<string> _coreFxVersionUrl = new Lazy<string>(() => GetEnvironmentVariable("COREFX_VERSION_URL", "https://raw.githubusercontent.com/dotnet/versions/master/build-info/dotnet/corefx/release/1.0.0/Latest_Packages.txt"));
|
private Lazy<string> _coreFxVersionUrl = new Lazy<string>(() => GetEnvironmentVariable("COREFX_VERSION_URL", "https://raw.githubusercontent.com/dotnet/versions/master/build-info/dotnet/corefx/release/1.0.0"));
|
||||||
private Lazy<string> _coreClrVersionUrl = new Lazy<string>(() => GetEnvironmentVariable("CORECLR_VERSION_URL", "https://raw.githubusercontent.com/dotnet/versions/master/build-info/dotnet/coreclr/release/1.0.0/Latest_Packages.txt"));
|
private Lazy<string> _coreClrVersionUrl = new Lazy<string>(() => GetEnvironmentVariable("CORECLR_VERSION_URL", "https://raw.githubusercontent.com/dotnet/versions/master/build-info/dotnet/coreclr/release/1.0.0"));
|
||||||
private Lazy<string> _roslynVersionUrl = new Lazy<string>(() => GetEnvironmentVariable("ROSLYN_VERSION_URL", "https://raw.githubusercontent.com/dotnet/versions/master/build-info/dotnet/roslyn/netcore1.0/Latest_Packages.txt"));
|
private Lazy<string> _roslynVersionUrl = new Lazy<string>(() => GetEnvironmentVariable("ROSLYN_VERSION_URL", "https://raw.githubusercontent.com/dotnet/versions/master/build-info/dotnet/roslyn/netcore1.0"));
|
||||||
private Lazy<string> _coreSetupVersionUrl = new Lazy<string>(() => GetEnvironmentVariable("CORESETUP_VERSION_URL", "https://raw.githubusercontent.com/dotnet/versions/master/build-info/dotnet/core-setup/release/1.0.0/Latest_Packages.txt"));
|
private Lazy<string> _coreSetupVersionUrl = new Lazy<string>(() => GetEnvironmentVariable("CORESETUP_VERSION_URL", "https://raw.githubusercontent.com/dotnet/versions/master/build-info/dotnet/core-setup/release/1.0.0"));
|
||||||
private Lazy<string> _gitHubOriginOwner;
|
|
||||||
private Lazy<string> _gitHubUpstreamOwner = new Lazy<string>(() => GetEnvironmentVariable("GITHUB_UPSTREAM_OWNER", "dotnet"));
|
private Lazy<string> _gitHubUpstreamOwner = new Lazy<string>(() => GetEnvironmentVariable("GITHUB_UPSTREAM_OWNER", "dotnet"));
|
||||||
private Lazy<string> _gitHubProject = new Lazy<string>(() => GetEnvironmentVariable("GITHUB_PROJECT", "cli"));
|
private Lazy<string> _gitHubProject = new Lazy<string>(() => GetEnvironmentVariable("GITHUB_PROJECT", "cli"));
|
||||||
private Lazy<string> _gitHubUpstreamBranch = new Lazy<string>(() => GetEnvironmentVariable("GITHUB_UPSTREAM_BRANCH", "rel/1.0.0"));
|
private Lazy<string> _gitHubUpstreamBranch = new Lazy<string>(() => GetEnvironmentVariable("GITHUB_UPSTREAM_BRANCH", "rel/1.0.0"));
|
||||||
|
@ -50,7 +48,6 @@ namespace Microsoft.DotNet.Scripts
|
||||||
|
|
||||||
private Config()
|
private Config()
|
||||||
{
|
{
|
||||||
_gitHubOriginOwner = new Lazy<string>(() => GetEnvironmentVariable("GITHUB_ORIGIN_OWNER", UserName));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public string UserName => _userName.Value;
|
public string UserName => _userName.Value;
|
||||||
|
@ -60,7 +57,6 @@ namespace Microsoft.DotNet.Scripts
|
||||||
public string CoreClrVersionUrl => _coreClrVersionUrl.Value;
|
public string CoreClrVersionUrl => _coreClrVersionUrl.Value;
|
||||||
public string RoslynVersionUrl => _roslynVersionUrl.Value;
|
public string RoslynVersionUrl => _roslynVersionUrl.Value;
|
||||||
public string CoreSetupVersionUrl => _coreSetupVersionUrl.Value;
|
public string CoreSetupVersionUrl => _coreSetupVersionUrl.Value;
|
||||||
public string GitHubOriginOwner => _gitHubOriginOwner.Value;
|
|
||||||
public string GitHubUpstreamOwner => _gitHubUpstreamOwner.Value;
|
public string GitHubUpstreamOwner => _gitHubUpstreamOwner.Value;
|
||||||
public string GitHubProject => _gitHubProject.Value;
|
public string GitHubProject => _gitHubProject.Value;
|
||||||
public string GitHubUpstreamBranch => _gitHubUpstreamBranch.Value;
|
public string GitHubUpstreamBranch => _gitHubUpstreamBranch.Value;
|
||||||
|
@ -76,7 +72,7 @@ namespace Microsoft.DotNet.Scripts
|
||||||
|
|
||||||
if (value == null)
|
if (value == null)
|
||||||
{
|
{
|
||||||
throw new BuildFailureException($"Can't find environment variable '{name}'.");
|
throw new InvalidOperationException($"Can't find environment variable '{name}'.");
|
||||||
}
|
}
|
||||||
|
|
||||||
return value;
|
return value;
|
||||||
|
|
|
@ -1,23 +0,0 @@
|
||||||
// Copyright (c) .NET Foundation and contributors. All rights reserved.
|
|
||||||
// Licensed under the MIT license. See LICENSE file in the project root for full license information.
|
|
||||||
|
|
||||||
using System.Collections.Generic;
|
|
||||||
using NuGet.Versioning;
|
|
||||||
|
|
||||||
namespace Microsoft.DotNet.Scripts
|
|
||||||
{
|
|
||||||
public class DependencyInfo
|
|
||||||
{
|
|
||||||
public string Name { get; set; }
|
|
||||||
public List<PackageInfo> NewVersions { get; set; }
|
|
||||||
public string NewReleaseVersion { get; set; }
|
|
||||||
|
|
||||||
public bool IsUpdated { get; set; }
|
|
||||||
}
|
|
||||||
|
|
||||||
public class PackageInfo
|
|
||||||
{
|
|
||||||
public string Id { get; set; }
|
|
||||||
public NuGetVersion Version { get; set; }
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -1,25 +1,97 @@
|
||||||
// Copyright (c) .NET Foundation and contributors. All rights reserved.
|
// Copyright (c) .NET Foundation and contributors. All rights reserved.
|
||||||
// Licensed under the MIT license. See LICENSE file in the project root for full license information.
|
// Licensed under the MIT license. See LICENSE file in the project root for full license information.
|
||||||
|
|
||||||
using Microsoft.DotNet.Cli.Build.Framework;
|
using Microsoft.DotNet.Cli.Utils;
|
||||||
|
using Microsoft.DotNet.VersionTools;
|
||||||
|
using Microsoft.DotNet.VersionTools.Automation;
|
||||||
|
using Microsoft.DotNet.VersionTools.Dependencies;
|
||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.IO;
|
||||||
|
using System.Linq;
|
||||||
|
using System.Text.RegularExpressions;
|
||||||
|
|
||||||
namespace Microsoft.DotNet.Scripts
|
namespace Microsoft.DotNet.Scripts
|
||||||
{
|
{
|
||||||
public class Program
|
public class Program
|
||||||
{
|
{
|
||||||
public static int Main(string[] args)
|
private static readonly Config s_config = Config.Instance;
|
||||||
|
|
||||||
|
public static void Main(string[] args)
|
||||||
{
|
{
|
||||||
DebugHelper.HandleDebugSwitch(ref args);
|
DebugHelper.HandleDebugSwitch(ref args);
|
||||||
|
|
||||||
return BuildSetup.Create(".NET CLI Dependency Updater")
|
List<BuildInfo> buildInfos = new List<BuildInfo>();
|
||||||
.UseTargets(new[]
|
|
||||||
{
|
buildInfos.Add(BuildInfo.Get("CoreFx", s_config.CoreFxVersionUrl, fetchLatestReleaseFile: false));
|
||||||
new BuildTarget("Default", "Dependency Updater Goals", new [] { "UpdateFiles", "PushPR" }),
|
buildInfos.Add(BuildInfo.Get("CoreClr", s_config.CoreClrVersionUrl, fetchLatestReleaseFile: false));
|
||||||
new BuildTarget("UpdateFiles", "Dependency Updater Goals"),
|
buildInfos.Add(BuildInfo.Get("Roslyn", s_config.RoslynVersionUrl, fetchLatestReleaseFile: false));
|
||||||
new BuildTarget("PushPR", "Dependency Updater Goals"),
|
buildInfos.Add(BuildInfo.Get("CoreSetup", s_config.CoreSetupVersionUrl, fetchLatestReleaseFile: false));
|
||||||
})
|
|
||||||
.UseAllTargetsFromAssembly<Program>()
|
IEnumerable<IDependencyUpdater> updaters = GetUpdaters();
|
||||||
.Run(args);
|
|
||||||
|
GitHubAuth gitHubAuth = new GitHubAuth(s_config.Password, s_config.UserName, s_config.Email);
|
||||||
|
|
||||||
|
DependencyUpdater dependencyUpdater = new DependencyUpdater(
|
||||||
|
gitHubAuth,
|
||||||
|
s_config.GitHubProject,
|
||||||
|
s_config.GitHubUpstreamOwner,
|
||||||
|
s_config.GitHubUpstreamBranch,
|
||||||
|
s_config.UserName,
|
||||||
|
s_config.GitHubPullRequestNotifications);
|
||||||
|
|
||||||
|
if (args.Length > 0 && string.Equals("--Update", args[0], StringComparison.OrdinalIgnoreCase))
|
||||||
|
{
|
||||||
|
dependencyUpdater.Update(updaters, buildInfos);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
dependencyUpdater.UpdateAndSubmitPullRequestAsync(updaters, buildInfos);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private static IEnumerable<IDependencyUpdater> GetUpdaters()
|
||||||
|
{
|
||||||
|
yield return CreateProjectJsonUpdater();
|
||||||
|
|
||||||
|
yield return CreateRegexUpdater(@"build_projects\shared-build-targets-utils\DependencyVersions.cs", "CoreCLRVersion", "Microsoft.NETCore.Runtime.CoreCLR");
|
||||||
|
yield return CreateRegexUpdater(@"build_projects\shared-build-targets-utils\DependencyVersions.cs", "JitVersion", "Microsoft.NETCore.Jit");
|
||||||
|
|
||||||
|
yield return CreateRegexUpdater(@"build_projects\dotnet-cli-build\CliDependencyVersions.cs", "SharedFrameworkVersion", "Microsoft.NETCore.App");
|
||||||
|
yield return CreateRegexUpdater(@"build_projects\dotnet-cli-build\CliDependencyVersions.cs", "HostFxrVersion", "Microsoft.NETCore.DotNetHostResolver");
|
||||||
|
yield return CreateRegexUpdater(@"build_projects\dotnet-cli-build\CliDependencyVersions.cs", "SharedHostVersion", "Microsoft.NETCore.DotNetHost");
|
||||||
|
}
|
||||||
|
|
||||||
|
private static IDependencyUpdater CreateProjectJsonUpdater()
|
||||||
|
{
|
||||||
|
IEnumerable<string> projectJsonFiles = GetProjectJsonsToUpdate();
|
||||||
|
|
||||||
|
return new ProjectJsonUpdater(projectJsonFiles)
|
||||||
|
{
|
||||||
|
SkipStableVersions = false
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
private static IEnumerable<string> GetProjectJsonsToUpdate()
|
||||||
|
{
|
||||||
|
const string noUpdateFileName = ".noautoupdate";
|
||||||
|
|
||||||
|
return Enumerable.Union(
|
||||||
|
Directory.GetFiles(Dirs.RepoRoot, "project.json", SearchOption.AllDirectories),
|
||||||
|
Directory.GetFiles(Path.Combine(Dirs.RepoRoot, @"src\dotnet\commands\dotnet-new"), "project.json.template", SearchOption.AllDirectories))
|
||||||
|
.Where(p => !File.Exists(Path.Combine(Path.GetDirectoryName(p), noUpdateFileName)) &&
|
||||||
|
!Path.GetDirectoryName(p).EndsWith("CSharp_Web", StringComparison.Ordinal));
|
||||||
|
}
|
||||||
|
|
||||||
|
private static IDependencyUpdater CreateRegexUpdater(string repoRelativePath, string dependencyPropertyName, string packageId)
|
||||||
|
{
|
||||||
|
return new FileRegexPackageUpdater()
|
||||||
|
{
|
||||||
|
Path = Path.Combine(Dirs.RepoRoot, repoRelativePath),
|
||||||
|
PackageId = packageId,
|
||||||
|
Regex = new Regex($@"{dependencyPropertyName} = ""(?<version>.*)"";"),
|
||||||
|
VersionGroupName = "version"
|
||||||
|
};
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,162 +0,0 @@
|
||||||
// Copyright (c) .NET Foundation and contributors. All rights reserved.
|
|
||||||
// Licensed under the MIT license. See LICENSE file in the project root for full license information.
|
|
||||||
|
|
||||||
using System;
|
|
||||||
using System.Linq;
|
|
||||||
using Microsoft.DotNet.Cli.Build.Framework;
|
|
||||||
using Octokit;
|
|
||||||
|
|
||||||
using static Microsoft.DotNet.Cli.Build.Framework.BuildHelpers;
|
|
||||||
|
|
||||||
namespace Microsoft.DotNet.Scripts
|
|
||||||
{
|
|
||||||
/// <summary>
|
|
||||||
/// Creates a GitHub Pull Request for the current changes in the repo.
|
|
||||||
/// </summary>
|
|
||||||
public static class PushPRTargets
|
|
||||||
{
|
|
||||||
private static readonly Config s_config = Config.Instance;
|
|
||||||
|
|
||||||
[Target(nameof(CommitChanges), nameof(CreatePR))]
|
|
||||||
public static BuildTargetResult PushPR(BuildTargetContext c) => c.Success();
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Commits all the current changes in the repo and pushes the commit to a remote
|
|
||||||
/// so a PR can be created for it.
|
|
||||||
/// </summary>
|
|
||||||
[Target]
|
|
||||||
public static BuildTargetResult CommitChanges(BuildTargetContext c)
|
|
||||||
{
|
|
||||||
CommandResult statusResult = Cmd("git", "status", "--porcelain")
|
|
||||||
.CaptureStdOut()
|
|
||||||
.Execute();
|
|
||||||
statusResult.EnsureSuccessful();
|
|
||||||
|
|
||||||
bool hasModifiedFiles = !string.IsNullOrWhiteSpace(statusResult.StdOut);
|
|
||||||
bool hasUpdatedDependencies = c.GetDependencyInfos().Where(d => d.IsUpdated).Any();
|
|
||||||
|
|
||||||
if (hasModifiedFiles != hasUpdatedDependencies)
|
|
||||||
{
|
|
||||||
return c.Failed($"'git status' does not match DependencyInfo information. Git has modified files: {hasModifiedFiles}. DependencyInfo is updated: {hasUpdatedDependencies}.");
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!hasUpdatedDependencies)
|
|
||||||
{
|
|
||||||
c.Warn("Dependencies are currently up to date");
|
|
||||||
return c.Success();
|
|
||||||
}
|
|
||||||
|
|
||||||
string userName = s_config.UserName;
|
|
||||||
string email = s_config.Email;
|
|
||||||
|
|
||||||
string commitMessage = GetCommitMessage(c);
|
|
||||||
|
|
||||||
Cmd("git", "commit", "-a", "-m", commitMessage, "--author", $"{userName} <{email}>")
|
|
||||||
.EnvironmentVariable("GIT_COMMITTER_NAME", userName)
|
|
||||||
.EnvironmentVariable("GIT_COMMITTER_EMAIL", email)
|
|
||||||
.Execute()
|
|
||||||
.EnsureSuccessful();
|
|
||||||
|
|
||||||
string remoteUrl = $"github.com/{s_config.GitHubOriginOwner}/{s_config.GitHubProject}.git";
|
|
||||||
string remoteBranchName = $"UpdateDependencies{DateTime.UtcNow.ToString("yyyyMMddhhmmss")}";
|
|
||||||
string refSpec = $"HEAD:refs/heads/{remoteBranchName}";
|
|
||||||
|
|
||||||
string logMessage = $"git push https://{remoteUrl} {refSpec}";
|
|
||||||
BuildReporter.BeginSection("EXEC", logMessage);
|
|
||||||
|
|
||||||
CommandResult pushResult =
|
|
||||||
Cmd("git", "push", $"https://{userName}:{s_config.Password}@{remoteUrl}", refSpec)
|
|
||||||
.QuietBuildReporter() // we don't want secrets showing up in our logs
|
|
||||||
.CaptureStdErr() // git push will write to StdErr upon success, disable that
|
|
||||||
.CaptureStdOut()
|
|
||||||
.Execute();
|
|
||||||
|
|
||||||
var message = logMessage + $" exited with {pushResult.ExitCode}";
|
|
||||||
if (pushResult.ExitCode == 0)
|
|
||||||
{
|
|
||||||
BuildReporter.EndSection("EXEC", message.Green(), success: true);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
BuildReporter.EndSection("EXEC", message.Red().Bold(), success: false);
|
|
||||||
}
|
|
||||||
|
|
||||||
pushResult.EnsureSuccessful(suppressOutput: true);
|
|
||||||
|
|
||||||
c.SetRemoteBranchName(remoteBranchName);
|
|
||||||
|
|
||||||
return c.Success();
|
|
||||||
}
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Creates a GitHub PR for the remote branch created above.
|
|
||||||
/// </summary>
|
|
||||||
[Target]
|
|
||||||
public static BuildTargetResult CreatePR(BuildTargetContext c)
|
|
||||||
{
|
|
||||||
string remoteBranchName = c.GetRemoteBranchName();
|
|
||||||
string commitMessage = c.GetCommitMessage();
|
|
||||||
|
|
||||||
NewPullRequest prInfo = new NewPullRequest(
|
|
||||||
commitMessage,
|
|
||||||
s_config.GitHubOriginOwner + ":" + remoteBranchName,
|
|
||||||
s_config.GitHubUpstreamBranch);
|
|
||||||
|
|
||||||
string[] prNotifications = s_config.GitHubPullRequestNotifications;
|
|
||||||
if (prNotifications.Length > 0)
|
|
||||||
{
|
|
||||||
prInfo.Body = $"/cc @{string.Join(" @", prNotifications)}";
|
|
||||||
}
|
|
||||||
|
|
||||||
GitHubClient gitHub = new GitHubClient(new ProductHeaderValue("dotnetDependencyUpdater"));
|
|
||||||
|
|
||||||
gitHub.Credentials = new Credentials(s_config.Password);
|
|
||||||
|
|
||||||
PullRequest createdPR = gitHub.PullRequest.Create(s_config.GitHubUpstreamOwner, s_config.GitHubProject, prInfo).Result;
|
|
||||||
c.Info($"Created Pull Request: {createdPR.HtmlUrl}");
|
|
||||||
|
|
||||||
return c.Success();
|
|
||||||
}
|
|
||||||
|
|
||||||
private static string GetRemoteBranchName(this BuildTargetContext c)
|
|
||||||
{
|
|
||||||
return (string)c.BuildContext["RemoteBranchName"];
|
|
||||||
}
|
|
||||||
|
|
||||||
private static void SetRemoteBranchName(this BuildTargetContext c, string value)
|
|
||||||
{
|
|
||||||
c.BuildContext["RemoteBranchName"] = value;
|
|
||||||
}
|
|
||||||
|
|
||||||
private static string GetCommitMessage(this BuildTargetContext c)
|
|
||||||
{
|
|
||||||
const string commitMessagePropertyName = "CommitMessage";
|
|
||||||
|
|
||||||
string message;
|
|
||||||
object messageObject;
|
|
||||||
if (c.BuildContext.Properties.TryGetValue(commitMessagePropertyName, out messageObject))
|
|
||||||
{
|
|
||||||
message = (string)messageObject;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
DependencyInfo[] updatedDependencies = c.GetDependencyInfos()
|
|
||||||
.Where(d => d.IsUpdated)
|
|
||||||
.ToArray();
|
|
||||||
|
|
||||||
string updatedDependencyNames = string.Join(", ", updatedDependencies.Select(d => d.Name));
|
|
||||||
string updatedDependencyVersions = string.Join(", ", updatedDependencies.Select(d => d.NewReleaseVersion));
|
|
||||||
|
|
||||||
message = $"Updating {updatedDependencyNames} to {updatedDependencyVersions}";
|
|
||||||
if (updatedDependencies.Count() > 1)
|
|
||||||
{
|
|
||||||
message += " respectively";
|
|
||||||
}
|
|
||||||
|
|
||||||
c.BuildContext[commitMessagePropertyName] = message;
|
|
||||||
}
|
|
||||||
|
|
||||||
return message;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -1,283 +0,0 @@
|
||||||
// Copyright (c) .NET Foundation and contributors. All rights reserved.
|
|
||||||
// Licensed under the MIT license. See LICENSE file in the project root for full license information.
|
|
||||||
|
|
||||||
using System;
|
|
||||||
using System.Collections.Generic;
|
|
||||||
using System.IO;
|
|
||||||
using System.Linq;
|
|
||||||
using System.Net.Http;
|
|
||||||
using System.Text;
|
|
||||||
using System.Text.RegularExpressions;
|
|
||||||
using System.Threading.Tasks;
|
|
||||||
using Microsoft.DotNet.Cli.Build.Framework;
|
|
||||||
using Newtonsoft.Json;
|
|
||||||
using Newtonsoft.Json.Linq;
|
|
||||||
using NuGet.Versioning;
|
|
||||||
|
|
||||||
namespace Microsoft.DotNet.Scripts
|
|
||||||
{
|
|
||||||
public static class UpdateFilesTargets
|
|
||||||
{
|
|
||||||
private static HttpClient s_client = new HttpClient();
|
|
||||||
|
|
||||||
[Target(nameof(GetDependencies), nameof(ReplaceVersions))]
|
|
||||||
public static BuildTargetResult UpdateFiles(BuildTargetContext c) => c.Success();
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Gets all the dependency information and puts it in the build properties.
|
|
||||||
/// </summary>
|
|
||||||
[Target]
|
|
||||||
public static BuildTargetResult GetDependencies(BuildTargetContext c)
|
|
||||||
{
|
|
||||||
List<DependencyInfo> dependencyInfos = c.GetDependencyInfos();
|
|
||||||
|
|
||||||
dependencyInfos.Add(CreateDependencyInfo("CoreFx", Config.Instance.CoreFxVersionUrl).Result);
|
|
||||||
dependencyInfos.Add(CreateDependencyInfo("CoreClr", Config.Instance.CoreClrVersionUrl).Result);
|
|
||||||
dependencyInfos.Add(CreateDependencyInfo("Roslyn", Config.Instance.RoslynVersionUrl).Result);
|
|
||||||
dependencyInfos.Add(CreateDependencyInfo("CoreSetup", Config.Instance.CoreSetupVersionUrl).Result);
|
|
||||||
|
|
||||||
return c.Success();
|
|
||||||
}
|
|
||||||
|
|
||||||
private static async Task<DependencyInfo> CreateDependencyInfo(string name, string packageVersionsUrl)
|
|
||||||
{
|
|
||||||
List<PackageInfo> newPackageVersions = new List<PackageInfo>();
|
|
||||||
|
|
||||||
using (Stream versionsStream = await s_client.GetStreamAsync(packageVersionsUrl))
|
|
||||||
using (StreamReader reader = new StreamReader(versionsStream))
|
|
||||||
{
|
|
||||||
string currentLine;
|
|
||||||
while ((currentLine = await reader.ReadLineAsync()) != null)
|
|
||||||
{
|
|
||||||
int spaceIndex = currentLine.IndexOf(' ');
|
|
||||||
|
|
||||||
newPackageVersions.Add(new PackageInfo()
|
|
||||||
{
|
|
||||||
Id = currentLine.Substring(0, spaceIndex),
|
|
||||||
Version = new NuGetVersion(currentLine.Substring(spaceIndex + 1))
|
|
||||||
});
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
string newReleaseVersion = newPackageVersions
|
|
||||||
.Where(p => p.Version.IsPrerelease)
|
|
||||||
.Select(p => p.Version.Release)
|
|
||||||
.FirstOrDefault()
|
|
||||||
??
|
|
||||||
// if there are no prerelease versions, just grab the first version
|
|
||||||
newPackageVersions
|
|
||||||
.Select(p => p.Version.ToNormalizedString())
|
|
||||||
.FirstOrDefault();
|
|
||||||
|
|
||||||
return new DependencyInfo()
|
|
||||||
{
|
|
||||||
Name = name,
|
|
||||||
NewVersions = newPackageVersions,
|
|
||||||
NewReleaseVersion = newReleaseVersion
|
|
||||||
};
|
|
||||||
}
|
|
||||||
|
|
||||||
[Target(nameof(ReplaceProjectJson), nameof(ReplaceDependencyVersions))]
|
|
||||||
public static BuildTargetResult ReplaceVersions(BuildTargetContext c) => c.Success();
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Replaces all the dependency versions in the project.json files.
|
|
||||||
/// </summary>
|
|
||||||
[Target]
|
|
||||||
public static BuildTargetResult ReplaceProjectJson(BuildTargetContext c)
|
|
||||||
{
|
|
||||||
List<DependencyInfo> dependencyInfos = c.GetDependencyInfos();
|
|
||||||
|
|
||||||
const string noUpdateFileName = ".noautoupdate";
|
|
||||||
|
|
||||||
IEnumerable<string> projectJsonFiles = Enumerable.Union(
|
|
||||||
Directory.GetFiles(Dirs.RepoRoot, "project.json", SearchOption.AllDirectories),
|
|
||||||
Directory.GetFiles(Path.Combine(Dirs.RepoRoot, @"src\dotnet\commands\dotnet-new"), "project.json.template", SearchOption.AllDirectories))
|
|
||||||
.Where(p => !File.Exists(Path.Combine(Path.GetDirectoryName(p), noUpdateFileName)) &&
|
|
||||||
!Path.GetDirectoryName(p).EndsWith("CSharp_Web", StringComparison.Ordinal));
|
|
||||||
|
|
||||||
JObject projectRoot;
|
|
||||||
foreach (string projectJsonFile in projectJsonFiles)
|
|
||||||
{
|
|
||||||
try
|
|
||||||
{
|
|
||||||
projectRoot = ReadProject(projectJsonFile);
|
|
||||||
}
|
|
||||||
catch (Exception e)
|
|
||||||
{
|
|
||||||
c.Warn($"Non-fatal exception occurred reading '{projectJsonFile}'. Skipping file. Exception: {e}. ");
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (projectRoot == null)
|
|
||||||
{
|
|
||||||
c.Warn($"A non valid JSON file was encountered '{projectJsonFile}'. Skipping file.");
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
|
|
||||||
bool changedAnyPackage = FindAllDependencyProperties(projectRoot)
|
|
||||||
.Select(dependencyProperty => ReplaceDependencyVersion(dependencyProperty, dependencyInfos))
|
|
||||||
.ToArray()
|
|
||||||
.Any(shouldWrite => shouldWrite);
|
|
||||||
|
|
||||||
if (changedAnyPackage)
|
|
||||||
{
|
|
||||||
c.Info($"Writing changes to {projectJsonFile}");
|
|
||||||
WriteProject(projectRoot, projectJsonFile);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return c.Success();
|
|
||||||
}
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Replaces the single dependency with the updated version, if it matches any of the dependencies that need to be updated.
|
|
||||||
/// </summary>
|
|
||||||
private static bool ReplaceDependencyVersion(JProperty dependencyProperty, List<DependencyInfo> dependencyInfos)
|
|
||||||
{
|
|
||||||
string id = dependencyProperty.Name;
|
|
||||||
foreach (DependencyInfo dependencyInfo in dependencyInfos)
|
|
||||||
{
|
|
||||||
foreach (PackageInfo packageInfo in dependencyInfo.NewVersions)
|
|
||||||
{
|
|
||||||
if (id == packageInfo.Id)
|
|
||||||
{
|
|
||||||
string oldVersion;
|
|
||||||
if (dependencyProperty.Value is JObject)
|
|
||||||
{
|
|
||||||
oldVersion = (string)dependencyProperty.Value["version"];
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
oldVersion = (string)dependencyProperty.Value;
|
|
||||||
}
|
|
||||||
|
|
||||||
string newVersion = packageInfo.Version.ToNormalizedString();
|
|
||||||
if (oldVersion != newVersion)
|
|
||||||
{
|
|
||||||
if (dependencyProperty.Value is JObject)
|
|
||||||
{
|
|
||||||
dependencyProperty.Value["version"] = newVersion;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
dependencyProperty.Value = newVersion;
|
|
||||||
}
|
|
||||||
|
|
||||||
// mark the DependencyInfo as updated so we can tell which dependencies were updated
|
|
||||||
dependencyInfo.IsUpdated = true;
|
|
||||||
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
private static JObject ReadProject(string projectJsonPath)
|
|
||||||
{
|
|
||||||
using (TextReader projectFileReader = File.OpenText(projectJsonPath))
|
|
||||||
{
|
|
||||||
var projectJsonReader = new JsonTextReader(projectFileReader);
|
|
||||||
|
|
||||||
var serializer = new JsonSerializer();
|
|
||||||
return serializer.Deserialize<JObject>(projectJsonReader);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
private static void WriteProject(JObject projectRoot, string projectJsonPath)
|
|
||||||
{
|
|
||||||
string projectJson = JsonConvert.SerializeObject(projectRoot, Formatting.Indented);
|
|
||||||
|
|
||||||
File.WriteAllText(projectJsonPath, projectJson + Environment.NewLine);
|
|
||||||
}
|
|
||||||
|
|
||||||
private static IEnumerable<JProperty> FindAllDependencyProperties(JObject projectJsonRoot)
|
|
||||||
{
|
|
||||||
return projectJsonRoot
|
|
||||||
.Descendants()
|
|
||||||
.OfType<JProperty>()
|
|
||||||
.Where(property => property.Name == "dependencies")
|
|
||||||
.Select(property => property.Value)
|
|
||||||
.SelectMany(o => o.Children<JProperty>());
|
|
||||||
}
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Replaces version numbers that are hard-coded in DependencyVersions.cs and CliDependencyVersions.cs.
|
|
||||||
/// </summary>
|
|
||||||
[Target]
|
|
||||||
public static BuildTargetResult ReplaceDependencyVersions(BuildTargetContext c)
|
|
||||||
{
|
|
||||||
ReplaceFileContents(@"build_projects\shared-build-targets-utils\DependencyVersions.cs", fileContents =>
|
|
||||||
{
|
|
||||||
fileContents = ReplaceDependencyVersion(c, fileContents, "CoreCLRVersion", "Microsoft.NETCore.Runtime.CoreCLR");
|
|
||||||
fileContents = ReplaceDependencyVersion(c, fileContents, "JitVersion", "Microsoft.NETCore.Jit");
|
|
||||||
|
|
||||||
return fileContents;
|
|
||||||
});
|
|
||||||
|
|
||||||
ReplaceFileContents(@"build_projects\dotnet-cli-build\CliDependencyVersions.cs", fileContents =>
|
|
||||||
{
|
|
||||||
fileContents = ReplaceDependencyVersion(c, fileContents, "SharedFrameworkVersion", "Microsoft.NETCore.App");
|
|
||||||
fileContents = ReplaceDependencyVersion(c, fileContents, "HostFxrVersion", "Microsoft.NETCore.DotNetHostResolver");
|
|
||||||
fileContents = ReplaceDependencyVersion(c, fileContents, "SharedHostVersion", "Microsoft.NETCore.DotNetHost");
|
|
||||||
|
|
||||||
return fileContents;
|
|
||||||
});
|
|
||||||
|
|
||||||
return c.Success();
|
|
||||||
}
|
|
||||||
|
|
||||||
private static string ReplaceDependencyVersion(BuildTargetContext c, string fileContents, string dependencyPropertyName, string packageId)
|
|
||||||
{
|
|
||||||
Regex regex = new Regex($@"{dependencyPropertyName} = ""(?<version>.*)"";");
|
|
||||||
string newVersion = c.GetNewVersion(packageId);
|
|
||||||
|
|
||||||
return regex.ReplaceGroupValue(fileContents, "version", newVersion);
|
|
||||||
}
|
|
||||||
|
|
||||||
private static string GetNewVersion(this BuildTargetContext c, string packageId)
|
|
||||||
{
|
|
||||||
string newVersion = c.GetDependencyInfos()
|
|
||||||
.SelectMany(d => d.NewVersions)
|
|
||||||
.FirstOrDefault(p => p.Id == packageId)
|
|
||||||
?.Version
|
|
||||||
.ToNormalizedString();
|
|
||||||
|
|
||||||
if (string.IsNullOrEmpty(newVersion))
|
|
||||||
{
|
|
||||||
c.Error($"Could not find package version information for '{packageId}'");
|
|
||||||
return $"DEPENDENCY '{packageId}' NOT FOUND";
|
|
||||||
}
|
|
||||||
|
|
||||||
return newVersion;
|
|
||||||
}
|
|
||||||
|
|
||||||
private static void ReplaceFileContents(string repoRelativePath, Func<string, string> replacement)
|
|
||||||
{
|
|
||||||
string fullPath = Path.Combine(Dirs.RepoRoot, repoRelativePath);
|
|
||||||
string contents = File.ReadAllText(fullPath);
|
|
||||||
|
|
||||||
contents = replacement(contents);
|
|
||||||
|
|
||||||
File.WriteAllText(fullPath, contents, Encoding.UTF8);
|
|
||||||
}
|
|
||||||
|
|
||||||
private static string ReplaceGroupValue(this Regex regex, string input, string groupName, string newValue)
|
|
||||||
{
|
|
||||||
return regex.Replace(input, m =>
|
|
||||||
{
|
|
||||||
string replacedValue = m.Value;
|
|
||||||
Group group = m.Groups[groupName];
|
|
||||||
int startIndex = group.Index - m.Index;
|
|
||||||
|
|
||||||
replacedValue = replacedValue.Remove(startIndex, group.Length);
|
|
||||||
replacedValue = replacedValue.Insert(startIndex, newValue);
|
|
||||||
|
|
||||||
return replacedValue;
|
|
||||||
});
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -2,28 +2,17 @@
|
||||||
"version": "1.0.0-*",
|
"version": "1.0.0-*",
|
||||||
"description": "Updates the repos dependencies",
|
"description": "Updates the repos dependencies",
|
||||||
"buildOptions": {
|
"buildOptions": {
|
||||||
"emitEntryPoint": true
|
"emitEntryPoint": true,
|
||||||
|
"compile": [
|
||||||
|
"../../src/Microsoft.DotNet.Cli.Utils/DebugHelper.cs"
|
||||||
|
]
|
||||||
},
|
},
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"NETStandard.Library": "1.6.0",
|
"Microsoft.NETCore.App": "1.0.0",
|
||||||
"Microsoft.CSharp": "4.0.1",
|
"Microsoft.DotNet.VersionTools": "1.0.26-prerelease-00615-07"
|
||||||
"Microsoft.NETCore.Runtime.CoreCLR": "1.0.2",
|
|
||||||
"System.Runtime.Serialization.Primitives": "4.1.1",
|
|
||||||
"Microsoft.DotNet.Cli.Build.Framework": {
|
|
||||||
"target": "project"
|
|
||||||
},
|
|
||||||
"NuGet.Versioning": "3.5.0-beta2-1484",
|
|
||||||
"Newtonsoft.Json": "9.0.1",
|
|
||||||
"Octokit": "0.18.0",
|
|
||||||
"Microsoft.Net.Http": "2.2.29"
|
|
||||||
},
|
},
|
||||||
"frameworks": {
|
"frameworks": {
|
||||||
"netcoreapp1.0": {
|
"netcoreapp1.0": {}
|
||||||
"imports": [
|
|
||||||
"dnxcore50",
|
|
||||||
"portable-net45+win"
|
|
||||||
]
|
|
||||||
}
|
|
||||||
},
|
},
|
||||||
"runtimes": {
|
"runtimes": {
|
||||||
"win7-x64": {},
|
"win7-x64": {},
|
||||||
|
|
|
@ -4,15 +4,13 @@
|
||||||
#
|
#
|
||||||
|
|
||||||
param(
|
param(
|
||||||
[string[]]$Targets=@("Default"),
|
|
||||||
[switch]$Help)
|
[switch]$Help)
|
||||||
|
|
||||||
if($Help)
|
if($Help)
|
||||||
{
|
{
|
||||||
Write-Host "Usage: .\update-dependencies.ps1 [-Targets <TARGETS...>]"
|
Write-Host "Usage: .\update-dependencies.ps1"
|
||||||
Write-Host ""
|
Write-Host ""
|
||||||
Write-Host "Options:"
|
Write-Host "Options:"
|
||||||
Write-Host " -Targets <TARGETS...> Comma separated build targets to run (UpdateFiles, PushPR; Default is everything)"
|
|
||||||
Write-Host " -Help Display this help message"
|
Write-Host " -Help Display this help message"
|
||||||
exit 0
|
exit 0
|
||||||
}
|
}
|
||||||
|
@ -36,9 +34,9 @@ if($LASTEXITCODE -ne 0) { throw "Failed to install stage0" }
|
||||||
# Put the stage0 on the path
|
# Put the stage0 on the path
|
||||||
$env:PATH = "$env:DOTNET_INSTALL_DIR;$env:PATH"
|
$env:PATH = "$env:DOTNET_INSTALL_DIR;$env:PATH"
|
||||||
|
|
||||||
# Restore the build_projects
|
# Restore the app
|
||||||
Write-Host "Restoring Build projects..."
|
Write-Host "Restoring update-dependencies..."
|
||||||
pushd "$RepoRoot\build_projects"
|
pushd "$AppPath"
|
||||||
dotnet restore
|
dotnet restore
|
||||||
if($LASTEXITCODE -ne 0) { throw "Failed to restore" }
|
if($LASTEXITCODE -ne 0) { throw "Failed to restore" }
|
||||||
popd
|
popd
|
||||||
|
@ -51,5 +49,5 @@ if($LASTEXITCODE -ne 0) { throw "Failed to compile build scripts" }
|
||||||
# Run the app
|
# Run the app
|
||||||
Write-Host "Invoking App $AppPath..."
|
Write-Host "Invoking App $AppPath..."
|
||||||
Write-Host " Configuration: $env:CONFIGURATION"
|
Write-Host " Configuration: $env:CONFIGURATION"
|
||||||
& "$AppPath\bin\update-dependencies.exe" @Targets
|
& "$AppPath\bin\update-dependencies.exe"
|
||||||
if($LASTEXITCODE -ne 0) { throw "Build failed" }
|
if($LASTEXITCODE -ne 0) { throw "Build failed" }
|
||||||
|
|
|
@ -1,16 +1,16 @@
|
||||||
<svg xmlns="http://www.w3.org/2000/svg" width="180" height="20">
|
<svg xmlns="http://www.w3.org/2000/svg" width="200" height="20">
|
||||||
<mask id="a">
|
<mask id="a">
|
||||||
<rect width="180" height="20" rx="0" fill="#fff" />
|
<rect width="200" height="20" rx="0" fill="#fff" />
|
||||||
</mask>
|
</mask>
|
||||||
<g mask="url(#a)">
|
<g mask="url(#a)">
|
||||||
<path fill="#555" d="M0 0h52v20H0z" />
|
<path fill="#555" d="M0 0h52v20H0z" />
|
||||||
<path fill="#007ec6" d="M52 0h115v20H52z" />
|
<path fill="#007ec6" d="M52 0h148v20H52z" />
|
||||||
<path fill="url(#b)" d="M0 0h150v20H0z" />
|
<path fill="url(#b)" d="M0 0h150v20H0z" />
|
||||||
</g>
|
</g>
|
||||||
<g fill="#fff" text-anchor="middle" font-family="DejaVu Sans,Verdana,Geneva,sans-serif" font-size="11">
|
<g fill="#fff" text-anchor="middle" font-family="DejaVu Sans,Verdana,Geneva,sans-serif" font-size="11">
|
||||||
<text x="26" y="15" fill="#010101" fill-opacity=".3">version</text>
|
<text x="26" y="15" fill="#010101" fill-opacity=".3">version</text>
|
||||||
<text x="26" y="14">version</text>
|
<text x="26" y="14">version</text>
|
||||||
<text x="110" y="15" fill="#010101" fill-opacity=".3">ver_number</text>
|
<text x="125" y="15" fill="#010101" fill-opacity=".3">ver_number</text>
|
||||||
<text x="110" y="14">ver_number</text>
|
<text x="125" y="14">ver_number</text>
|
||||||
</g>
|
</g>
|
||||||
</svg>
|
</svg>
|
Before Width: | Height: | Size: 708 B After Width: | Height: | Size: 707 B |
20
scripts/obtain/dotnet-install.sh
vendored
20
scripts/obtain/dotnet-install.sh
vendored
|
@ -27,16 +27,16 @@ if [ -t 1 ]; then
|
||||||
# see if it supports colors
|
# see if it supports colors
|
||||||
ncolors=$(tput colors)
|
ncolors=$(tput colors)
|
||||||
if [ -n "$ncolors" ] && [ $ncolors -ge 8 ]; then
|
if [ -n "$ncolors" ] && [ $ncolors -ge 8 ]; then
|
||||||
bold="$(tput bold)"
|
bold="$(tput bold || echo)"
|
||||||
normal="$(tput sgr0)"
|
normal="$(tput sgr0 || echo)"
|
||||||
black="$(tput setaf 0)"
|
black="$(tput setaf 0 || echo)"
|
||||||
red="$(tput setaf 1)"
|
red="$(tput setaf 1 || echo)"
|
||||||
green="$(tput setaf 2)"
|
green="$(tput setaf 2 || echo)"
|
||||||
yellow="$(tput setaf 3)"
|
yellow="$(tput setaf 3 || echo)"
|
||||||
blue="$(tput setaf 4)"
|
blue="$(tput setaf 4 || echo)"
|
||||||
magenta="$(tput setaf 5)"
|
magenta="$(tput setaf 5 || echo)"
|
||||||
cyan="$(tput setaf 6)"
|
cyan="$(tput setaf 6 || echo)"
|
||||||
white="$(tput setaf 7)"
|
white="$(tput setaf 7 || echo)"
|
||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
|
|
@ -1,6 +1,7 @@
|
||||||
// Copyright (c) .NET Foundation and contributors. All rights reserved.
|
// Copyright (c) .NET Foundation and contributors. All rights reserved.
|
||||||
// Licensed under the MIT license. See LICENSE file in the project root for full license information.
|
// Licensed under the MIT license. See LICENSE file in the project root for full license information.
|
||||||
|
|
||||||
|
using System;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using System.IO;
|
using System.IO;
|
||||||
using System.Linq;
|
using System.Linq;
|
||||||
|
@ -27,7 +28,9 @@ namespace Microsoft.DotNet.Cli.Compiler.Common
|
||||||
|
|
||||||
foreach (var asset in assets)
|
foreach (var asset in assets)
|
||||||
{
|
{
|
||||||
File.Copy(asset.ResolvedPath, Path.Combine(destinationPath, Path.GetFileName(asset.ResolvedPath)), overwrite: true);
|
var file = Path.Combine(destinationPath, Path.GetFileName(asset.ResolvedPath));
|
||||||
|
File.Copy(asset.ResolvedPath, file, overwrite: true);
|
||||||
|
RemoveFileAttribute(file, FileAttributes.ReadOnly);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -44,6 +47,19 @@ namespace Microsoft.DotNet.Cli.Compiler.Common
|
||||||
var transformedFile = asset.GetTransformedFile(tempLocation);
|
var transformedFile = asset.GetTransformedFile(tempLocation);
|
||||||
|
|
||||||
File.Copy(transformedFile, targetName, overwrite: true);
|
File.Copy(transformedFile, targetName, overwrite: true);
|
||||||
|
RemoveFileAttribute(targetName, FileAttributes.ReadOnly);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private static void RemoveFileAttribute(String file, FileAttributes attribute)
|
||||||
|
{
|
||||||
|
if (File.Exists(file))
|
||||||
|
{
|
||||||
|
var fileAttributes = File.GetAttributes(file);
|
||||||
|
if ((fileAttributes & attribute) == attribute)
|
||||||
|
{
|
||||||
|
File.SetAttributes(file, fileAttributes & ~attribute);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -40,7 +40,8 @@ namespace Microsoft.DotNet.ProjectModel.Files
|
||||||
var token = rawObject.Value<JToken>(option);
|
var token = rawObject.Value<JToken>(option);
|
||||||
if (token.Type != JTokenType.Object)
|
if (token.Type != JTokenType.Object)
|
||||||
{
|
{
|
||||||
IncludePatterns = new List<string>(ExtractValues(token));
|
IncludePatterns = CreateCollection(
|
||||||
|
sourceBasePath, option, ExtractValues(token), literalPath: false);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
|
|
@ -150,7 +150,7 @@ namespace Microsoft.DotNet.ProjectModel.Files
|
||||||
file.IsCustomTarget = true;
|
file.IsCustomTarget = true;
|
||||||
|
|
||||||
// Prefer named targets over default ones
|
// Prefer named targets over default ones
|
||||||
includeEntries.RemoveWhere(f => string.Equals(f.SourcePath, file.SourcePath));
|
includeEntries.RemoveWhere(f => string.Equals(f.SourcePath, file.SourcePath) && !f.IsCustomTarget);
|
||||||
includeEntries.Add(file);
|
includeEntries.Add(file);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -156,13 +156,10 @@ namespace Microsoft.DotNet.Cli
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
CommandResult result = Command.Create("dotnet-" + command, appArgs, FrameworkConstants.CommonFrameworks.NetStandardApp15)
|
CommandResult result = Command.Create("dotnet-" + command, appArgs, FrameworkConstants.CommonFrameworks.NetStandardApp15)
|
||||||
.ForwardStdErr()
|
|
||||||
.ForwardStdOut()
|
|
||||||
.Execute();
|
.Execute();
|
||||||
exitCode = result.ExitCode;
|
exitCode = result.ExitCode;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
return exitCode;
|
return exitCode;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,12 +0,0 @@
|
||||||
<?xml version="1.0" encoding="utf-8"?>
|
|
||||||
<configuration>
|
|
||||||
<packageSources>
|
|
||||||
<!--To inherit the global NuGet package sources remove the <clear/> line below -->
|
|
||||||
<clear />
|
|
||||||
<add key="api.nuget.org" value="https://api.nuget.org/v3/index.json" />
|
|
||||||
<add key="fsharp-daily" value="https://www.myget.org/F/fsharp-daily/api/v3/index.json" />
|
|
||||||
|
|
||||||
<!-- Location of dotnet-compile-fsc tool -->
|
|
||||||
<add key="dotnet-cli" value="https://dotnet.myget.org/F/dotnet-cli/api/v3/index.json" />
|
|
||||||
</packageSources>
|
|
||||||
</configuration>
|
|
|
@ -5,5 +5,4 @@ open System
|
||||||
[<EntryPoint>]
|
[<EntryPoint>]
|
||||||
let main argv =
|
let main argv =
|
||||||
printfn "Hello World!"
|
printfn "Hello World!"
|
||||||
printfn "%A" argv
|
|
||||||
0 // return an integer exit code
|
0 // return an integer exit code
|
||||||
|
|
|
@ -1,6 +1,7 @@
|
||||||
{
|
{
|
||||||
"version": "1.0.0-*",
|
"version": "1.0.0-*",
|
||||||
"buildOptions": {
|
"buildOptions": {
|
||||||
|
"debugType": "portable",
|
||||||
"emitEntryPoint": true,
|
"emitEntryPoint": true,
|
||||||
"compilerName": "fsc",
|
"compilerName": "fsc",
|
||||||
"compile": {
|
"compile": {
|
||||||
|
@ -9,18 +10,8 @@
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"dependencies": {
|
|
||||||
"Microsoft.FSharp.Core.netcore": "1.0.0-alpha-160509"
|
|
||||||
},
|
|
||||||
"tools": {
|
"tools": {
|
||||||
"dotnet-compile-fsc": {
|
"dotnet-compile-fsc":"1.0.0-preview2-*"
|
||||||
"version": "1.0.0-preview2-*",
|
|
||||||
"imports": [
|
|
||||||
"dnxcore50",
|
|
||||||
"portable-net45+win81",
|
|
||||||
"netstandard1.3"
|
|
||||||
]
|
|
||||||
}
|
|
||||||
},
|
},
|
||||||
"frameworks": {
|
"frameworks": {
|
||||||
"netcoreapp1.0": {
|
"netcoreapp1.0": {
|
||||||
|
@ -28,12 +19,9 @@
|
||||||
"Microsoft.NETCore.App": {
|
"Microsoft.NETCore.App": {
|
||||||
"type": "platform",
|
"type": "platform",
|
||||||
"version": "1.0.0"
|
"version": "1.0.0"
|
||||||
}
|
},
|
||||||
},
|
"Microsoft.FSharp.Core.netcore": "1.0.0-alpha-160629"
|
||||||
"imports": [
|
}
|
||||||
"portable-net45+win8",
|
|
||||||
"dnxcore50"
|
|
||||||
]
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
5
src/dotnet/commands/dotnet-new/FSharp_Lib/Library.fs
Normal file
5
src/dotnet/commands/dotnet-new/FSharp_Lib/Library.fs
Normal file
|
@ -0,0 +1,5 @@
|
||||||
|
namespace Library
|
||||||
|
|
||||||
|
module Say =
|
||||||
|
let hello name =
|
||||||
|
printfn "Hello %s" name
|
|
@ -0,0 +1,23 @@
|
||||||
|
{
|
||||||
|
"version": "1.0.0-*",
|
||||||
|
"buildOptions": {
|
||||||
|
"debugType": "portable",
|
||||||
|
"compilerName": "fsc",
|
||||||
|
"compile": {
|
||||||
|
"includeFiles": [
|
||||||
|
"Library.fs"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"tools": {
|
||||||
|
"dotnet-compile-fsc":"1.0.0-preview2-*"
|
||||||
|
},
|
||||||
|
"frameworks": {
|
||||||
|
"netstandard1.6": {
|
||||||
|
"dependencies": {
|
||||||
|
"NETStandard.Library":"1.6.0",
|
||||||
|
"Microsoft.FSharp.Core.netcore": "1.0.0-alpha-160629"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
|
@ -100,7 +100,7 @@ namespace Microsoft.DotNet.Tools.New
|
||||||
app.HelpOption("-h|--help");
|
app.HelpOption("-h|--help");
|
||||||
|
|
||||||
var csharp = new { Name = "C#", Alias = new[] { "c#", "cs", "csharp" }, TemplatePrefix = "CSharp", Templates = new[] { "Console", "Web", "Lib", "xunittest" } };
|
var csharp = new { Name = "C#", Alias = new[] { "c#", "cs", "csharp" }, TemplatePrefix = "CSharp", Templates = new[] { "Console", "Web", "Lib", "xunittest" } };
|
||||||
var fsharp = new { Name = "F#", Alias = new[] { "f#", "fs", "fsharp" }, TemplatePrefix = "FSharp", Templates = new[] { "Console" } };
|
var fsharp = new { Name = "F#", Alias = new[] { "f#", "fs", "fsharp" }, TemplatePrefix = "FSharp", Templates = new[] { "Console", "Lib" } };
|
||||||
|
|
||||||
var languages = new[] { csharp, fsharp };
|
var languages = new[] { csharp, fsharp };
|
||||||
|
|
||||||
|
@ -134,7 +134,7 @@ namespace Microsoft.DotNet.Tools.New
|
||||||
if (templateName == null)
|
if (templateName == null)
|
||||||
{
|
{
|
||||||
Reporter.Error.WriteLine($"Unrecognized type: {typeValue}".Red());
|
Reporter.Error.WriteLine($"Unrecognized type: {typeValue}".Red());
|
||||||
Reporter.Error.WriteLine($"Avaiable types for {language.Name} :".Red());
|
Reporter.Error.WriteLine($"Available types for {language.Name} :".Red());
|
||||||
foreach (var t in language.Templates)
|
foreach (var t in language.Templates)
|
||||||
{
|
{
|
||||||
Reporter.Error.WriteLine($"- {t}".Red());
|
Reporter.Error.WriteLine($"- {t}".Red());
|
||||||
|
|
|
@ -22,7 +22,7 @@ After this, the project is ready to be compiled and/or edited further.
|
||||||
|
|
||||||
`-l`, `--lang [C#|F#]`
|
`-l`, `--lang [C#|F#]`
|
||||||
|
|
||||||
Language of the project. Defaults to `C#`. `csharp` (`fsharp`) or `cs` (`fs`) are also valid options.
|
Language of the project. Defaults to `C#`. `csharp` ( or `cs` ) and `fsharp` ( or `fs` ) are also valid options.
|
||||||
|
|
||||||
`-t`, `--type`
|
`-t`, `--type`
|
||||||
|
|
||||||
|
@ -36,20 +36,21 @@ Type of the project. Valid values for C# are:
|
||||||
Valid values for F# are:
|
Valid values for F# are:
|
||||||
|
|
||||||
* `console`
|
* `console`
|
||||||
|
* `lib`
|
||||||
|
|
||||||
## EXAMPLES
|
## EXAMPLES
|
||||||
|
|
||||||
`dotnet new`
|
`dotnet new`
|
||||||
|
|
||||||
Drops a sample C## project in the current directory.
|
Drops a sample C# project in the current directory.
|
||||||
|
|
||||||
`dotnet new --lang f##`
|
`dotnet new --lang f#`
|
||||||
|
|
||||||
Drops a sample F## project in the current directory.
|
Drops a sample F# project in the current directory.
|
||||||
|
|
||||||
`dotnet new --lang c##`
|
`dotnet new --lang c#`
|
||||||
|
|
||||||
Drops a sample C## project in the current directory.
|
Drops a sample C# project in the current directory.
|
||||||
|
|
||||||
# SEE ALSO
|
# SEE ALSO
|
||||||
dotnet-run(1)
|
dotnet-run(1)
|
||||||
|
|
|
@ -24,7 +24,7 @@ Depending on the type of portable app, the resulting directory will contain the
|
||||||
dependency.
|
dependency.
|
||||||
2. **Self-contained application** - same as above plus the entire runtime for the targeted platform.
|
2. **Self-contained application** - same as above plus the entire runtime for the targeted platform.
|
||||||
|
|
||||||
The above types are covered in more details in the [types of portable applications](https://dotnet.github.io/docs/core-concepts/app-types.html) topic.
|
The above types are covered in more details in the [types of portable applications](https://docs.microsoft.com/en-us/dotnet/articles/core/app-types) topic.
|
||||||
|
|
||||||
## OPTIONS
|
## OPTIONS
|
||||||
|
|
||||||
|
|
|
@ -30,7 +30,7 @@ The `dotnet run` command must be used in the context of projects, not built asse
|
||||||
|
|
||||||
`dotnet myapp.dll`
|
`dotnet myapp.dll`
|
||||||
|
|
||||||
For more information about the `dotnet` driver, see the [.NET Core Command Line Tools (CLI)](https://dotnet.github.io/docs/core-concepts/core-sdk/cli/overview.html) topic.
|
For more information about the `dotnet` driver, see the [.NET Core Command Line Tools (CLI)](https://docs.microsoft.com/en-us/dotnet/articles/core/tools/index) topic.
|
||||||
|
|
||||||
|
|
||||||
## OPTIONS
|
## OPTIONS
|
||||||
|
|
|
@ -24,8 +24,6 @@ namespace Microsoft.DotNet.Tools.Test
|
||||||
GetCommandArgs(projectContext, dotnetTestParams),
|
GetCommandArgs(projectContext, dotnetTestParams),
|
||||||
projectContext.TargetFramework,
|
projectContext.TargetFramework,
|
||||||
dotnetTestParams.Config)
|
dotnetTestParams.Config)
|
||||||
.ForwardStdErr()
|
|
||||||
.ForwardStdOut()
|
|
||||||
.Execute()
|
.Execute()
|
||||||
.ExitCode;
|
.ExitCode;
|
||||||
}
|
}
|
||||||
|
|
|
@ -7,8 +7,9 @@
|
||||||
"commands/dotnet-new/CSharp_Console.zip",
|
"commands/dotnet-new/CSharp_Console.zip",
|
||||||
"commands/dotnet-new/CSharp_Lib.zip",
|
"commands/dotnet-new/CSharp_Lib.zip",
|
||||||
"commands/dotnet-new/CSharp_xunittest.zip",
|
"commands/dotnet-new/CSharp_xunittest.zip",
|
||||||
|
"commands/dotnet-new/CSharp_Web.zip",
|
||||||
"commands/dotnet-new/FSharp_Console.zip",
|
"commands/dotnet-new/FSharp_Console.zip",
|
||||||
"commands/dotnet-new/CSharp_Web.zip"
|
"commands/dotnet-new/FSharp_Lib.zip"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"compile": {
|
"compile": {
|
||||||
|
@ -17,6 +18,7 @@
|
||||||
"commands/dotnet-new/FSharp_Console/**",
|
"commands/dotnet-new/FSharp_Console/**",
|
||||||
"commands/dotnet-new/CSharp_Web/**",
|
"commands/dotnet-new/CSharp_Web/**",
|
||||||
"commands/dotnet-new/CSharp_Lib/**",
|
"commands/dotnet-new/CSharp_Lib/**",
|
||||||
|
"commands/dotnet-new/FSharp_Lib/**",
|
||||||
"commands/dotnet-new/CSharp_xunittest/**"
|
"commands/dotnet-new/CSharp_xunittest/**"
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
|
|
|
@ -113,6 +113,7 @@ namespace Microsoft.DotNet.Tools.Compiler.Tests
|
||||||
var zip = ZipFile.Open(outputPackage, ZipArchiveMode.Read);
|
var zip = ZipFile.Open(outputPackage, ZipArchiveMode.Read);
|
||||||
zip.Entries.Should().Contain(e => e.FullName == "packfiles/pack1.txt");
|
zip.Entries.Should().Contain(e => e.FullName == "packfiles/pack1.txt");
|
||||||
zip.Entries.Should().Contain(e => e.FullName == "newpath/pack2.txt");
|
zip.Entries.Should().Contain(e => e.FullName == "newpath/pack2.txt");
|
||||||
|
zip.Entries.Should().Contain(e => e.FullName == "anotherpath/pack2.txt");
|
||||||
}
|
}
|
||||||
|
|
||||||
[Fact]
|
[Fact]
|
||||||
|
|
|
@ -128,6 +128,7 @@ namespace Microsoft.DotNet.Tools.Publish.Tests
|
||||||
|
|
||||||
publishCommand.Execute().Should().Pass();
|
publishCommand.Execute().Should().Pass();
|
||||||
publishCommand.GetOutputDirectory().Should().HaveFile("testpublishfile.txt");
|
publishCommand.GetOutputDirectory().Should().HaveFile("testpublishfile.txt");
|
||||||
|
publishCommand.GetOutputDirectory().Should().HaveFile("publishfiles/anotherpublishfile.txt");
|
||||||
}
|
}
|
||||||
|
|
||||||
[Fact]
|
[Fact]
|
||||||
|
|
Loading…
Add table
Reference in a new issue