2016-08-05 23:54:41 +00:00
|
|
|
using Microsoft.DotNet.PlatformAbstractions;
|
2016-02-25 00:05:55 +00:00
|
|
|
|
|
|
|
namespace Microsoft.DotNet.Cli.Utils
|
|
|
|
{
|
2016-10-04 04:40:24 +00:00
|
|
|
public class DefaultCommandResolverPolicy : ICommandResolverPolicy
|
2016-02-25 00:05:55 +00:00
|
|
|
{
|
2016-10-04 04:40:24 +00:00
|
|
|
public CompositeCommandResolver CreateCommandResolver()
|
|
|
|
{
|
|
|
|
return Create();
|
|
|
|
}
|
|
|
|
|
2016-03-07 19:50:52 +00:00
|
|
|
public static CompositeCommandResolver Create()
|
2016-02-25 00:05:55 +00:00
|
|
|
{
|
|
|
|
var environment = new EnvironmentProvider();
|
2016-11-22 21:56:13 +00:00
|
|
|
var packagedCommandSpecFactory = new PackagedCommandSpecFactoryWithCliRuntime();
|
2016-08-25 23:01:32 +00:00
|
|
|
var publishedPathCommandSpecFactory = new PublishPathCommandSpecFactory();
|
2016-02-25 00:05:55 +00:00
|
|
|
|
|
|
|
var platformCommandSpecFactory = default(IPlatformCommandSpecFactory);
|
2016-04-28 23:30:32 +00:00
|
|
|
if (RuntimeEnvironment.OperatingSystemPlatform == Platform.Windows)
|
2016-02-25 00:05:55 +00:00
|
|
|
{
|
|
|
|
platformCommandSpecFactory = new WindowsExePreferredCommandSpecFactory();
|
|
|
|
}
|
|
|
|
else
|
|
|
|
{
|
|
|
|
platformCommandSpecFactory = new GenericPlatformCommandSpecFactory();
|
|
|
|
}
|
|
|
|
|
2016-08-25 23:01:32 +00:00
|
|
|
return CreateDefaultCommandResolver(
|
|
|
|
environment,
|
|
|
|
packagedCommandSpecFactory,
|
|
|
|
platformCommandSpecFactory,
|
|
|
|
publishedPathCommandSpecFactory);
|
2016-02-25 00:05:55 +00:00
|
|
|
}
|
|
|
|
|
2016-03-07 19:50:52 +00:00
|
|
|
public static CompositeCommandResolver CreateDefaultCommandResolver(
|
2016-02-25 00:05:55 +00:00
|
|
|
IEnvironmentProvider environment,
|
|
|
|
IPackagedCommandSpecFactory packagedCommandSpecFactory,
|
2016-08-25 23:01:32 +00:00
|
|
|
IPlatformCommandSpecFactory platformCommandSpecFactory,
|
|
|
|
IPublishedPathCommandSpecFactory publishedPathCommandSpecFactory)
|
2016-02-25 00:05:55 +00:00
|
|
|
{
|
2016-03-07 19:50:52 +00:00
|
|
|
var compositeCommandResolver = new CompositeCommandResolver();
|
|
|
|
|
2016-03-24 16:36:05 +00:00
|
|
|
compositeCommandResolver.AddCommandResolver(new MuxerCommandResolver());
|
2016-03-07 19:50:52 +00:00
|
|
|
compositeCommandResolver.AddCommandResolver(new RootedCommandResolver());
|
2016-10-11 00:13:46 +00:00
|
|
|
compositeCommandResolver.AddCommandResolver(
|
|
|
|
new ProjectToolsCommandResolver(packagedCommandSpecFactory, environment));
|
2016-03-24 16:36:05 +00:00
|
|
|
compositeCommandResolver.AddCommandResolver(new AppBaseDllCommandResolver());
|
2016-08-25 23:01:32 +00:00
|
|
|
compositeCommandResolver.AddCommandResolver(
|
|
|
|
new AppBaseCommandResolver(environment, platformCommandSpecFactory));
|
|
|
|
compositeCommandResolver.AddCommandResolver(
|
|
|
|
new PathCommandResolver(environment, platformCommandSpecFactory));
|
|
|
|
compositeCommandResolver.AddCommandResolver(
|
2016-10-11 00:13:46 +00:00
|
|
|
new PublishedPathCommandResolver(environment, publishedPathCommandSpecFactory));
|
2016-03-24 16:36:05 +00:00
|
|
|
|
2016-03-07 19:50:52 +00:00
|
|
|
return compositeCommandResolver;
|
2016-02-25 00:05:55 +00:00
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|