private static Command r(ISupportNuget nugetKernel)
        {
            var rDirective = new Command("#r")
            {
                new Argument <PackageReferenceOrFileInfo>(
                    result =>
                {
                    var token = result.Tokens
                                .Select(t => t.Value)
                                .SingleOrDefault();

                    if (PackageReference.TryParse(token, out var reference))
                    {
                        return(reference);
                    }

                    if (token != null &&
                        !token.StartsWith("nuget:") &&
                        !Path.EndsInDirectorySeparator(token))
                    {
                        return(new FileInfo(token));
                    }

                    result.ErrorMessage = $"Unable to parse package reference: \"{token}\"";

                    return(null);
                })
                {
                    Name = "package"
                }
            };

            rDirective.Handler = CommandHandler.Create <PackageReferenceOrFileInfo, KernelInvocationContext>(HandleAddPackageReference);

            return(rDirective);

            Task HandleAddPackageReference(
                PackageReferenceOrFileInfo package,
                KernelInvocationContext context)
            {
                if (package?.Value is PackageReference pkg)
                {
                    var alreadyGotten = nugetKernel.ResolvedPackageReferences
                                        .Concat(nugetKernel.RequestedPackageReferences)
                                        .FirstOrDefault(r => r.PackageName.Equals(pkg.PackageName, StringComparison.OrdinalIgnoreCase));

                    if (alreadyGotten is { } && !string.IsNullOrWhiteSpace(pkg.PackageVersion) && pkg.PackageVersion != alreadyGotten.PackageVersion)
                    {
                        var errorMessage = GenerateErrorMessage(pkg, alreadyGotten).ToString(OutputMode.NonAnsi);
                        context.Publish(new ErrorProduced(errorMessage));
                    }
        private static Command i(ISupportNuget nugetKernel)
        {
            var iDirective = new Command("#i")
            {
                new Argument <string>("source")
            };

            iDirective.Handler = CommandHandler.Create <string, KernelInvocationContext>((source, context) =>
            {
                nugetKernel.AddRestoreSource(source.Replace("nuget:", ""));

                IHtmlContent content = div(
                    strong("Restore sources"),
                    ul(nugetKernel.RestoreSources
                       .Select(s => li(span(s)))));

                context.DisplayAsync(content);
            });
            return(iDirective);
        }
 public PackageRestoreContext(ISupportNuget iSupportNuget)
 {
     _iSupportNuget = iSupportNuget;
     AppDomain.CurrentDomain.AssemblyLoad += OnAssemblyLoad;
 }