public void GetDynamicOptions(string category, ChocolateyRequest request)
        {
            request.Debug("Calling '{0}::GetDynamicOptions' '{1}'", PackageProviderName, category);

            switch ((category ?? string.Empty).ToLowerInvariant())
            {
            case "package":
                request.YieldDynamicOption("FilterOnTag", Constants.OptionType.StringArray, false);
                request.YieldDynamicOption("Contains", Constants.OptionType.String, false);
                request.YieldDynamicOption("AllowPrereleaseVersions", Constants.OptionType.Switch, false);
                break;

            case "source":
                request.YieldDynamicOption("ConfigFile", Constants.OptionType.String, false);
                request.YieldDynamicOption("SkipValidate", Constants.OptionType.Switch, false);
                break;

            case "install":
                request.YieldDynamicOption("SkipDependencies", Constants.OptionType.Switch, false);
                request.YieldDynamicOption("ContinueOnFailure", Constants.OptionType.Switch, false);
                request.YieldDynamicOption("ExcludeVersion", Constants.OptionType.Switch, false);
                request.YieldDynamicOption("ForceX86", Constants.OptionType.Switch, false);
                request.YieldDynamicOption("PackageSaveMode", Constants.OptionType.String, false, new[] {
                    "nuspec", "nupkg", "nuspec;nupkg"
                });
                break;
            }
        }
 /// <summary>
 ///     Returns a collection of strings to the client advertizing features this provider supports.
 /// </summary>
 /// <param name="request">
 ///     An object passed in from the CORE that contains functions that can be used to interact with the
 ///     CORE and HOST
 /// </param>
 public void GetFeatures(ChocolateyRequest request)
 {
     // Nice-to-have put a debug message in that tells what's going on.
     request.Debug("Calling '{0}::GetFeatures' ", PackageProviderName);
     request.Yield(Features);
 }
 /// <summary>
 ///     Returns the packages that are installed
 /// </summary>
 /// <param name="name">the package name to match. Empty or null means match everything</param>
 /// <param name="requiredVersion">
 ///     the specific version asked for. If this parameter is specified (ie, not null or empty
 ///     string) then the minimum and maximum values are ignored
 /// </param>
 /// <param name="minimumVersion">
 ///     the minimum version of packages to return . If the <code>requiredVersion</code> parameter
 ///     is specified (ie, not null or empty string) this should be ignored
 /// </param>
 /// <param name="maximumVersion">
 ///     the maximum version of packages to return . If the <code>requiredVersion</code> parameter
 ///     is specified (ie, not null or empty string) this should be ignored
 /// </param>
 /// <param name="request">
 ///     An object passed in from the CORE that contains functions that can be used to interact with
 ///     the CORE and HOST
 /// </param>
 public void GetInstalledPackages(string name, string requiredVersion, string minimumVersion, string maximumVersion, ChocolateyRequest request)
 {
     GetInstalledPackagesImpl(name, requiredVersion, minimumVersion, maximumVersion, request);
 }
 /// <summary>
 ///     Performs one-time initialization of the PROVIDER.
 /// </summary>
 /// <param name="request">
 ///     An object passed in from the CORE that contains functions that can be used to interact with the
 ///     CORE and HOST
 /// </param>
 public void InitializeProvider(ChocolateyRequest request)
 {
     // Nice-to-have put a debug message in that tells what's going on.
     request.Debug("Calling '{0}::InitializeProvider'", PackageProviderName);
 }
 /// <summary>
 ///     Downloads a remote package file to a local location.
 /// </summary>
 /// <param name="fastPackageReference"></param>
 /// <param name="location"></param>
 /// <param name="request">
 ///     An object passed in from the CORE that contains functions that can be used to interact with the
 ///     CORE and HOST
 /// </param>
 /// <returns></returns>
 public void DownloadPackage(string fastPackageReference, string location, ChocolateyRequest request)
 {
     DownloadPackageImpl(fastPackageReference, location, request);
 }
 /// <summary>
 ///     Finds a package given a local filename
 /// </summary>
 /// <param name="file"></param>
 /// <param name="id"></param>
 /// <param name="request"></param>
 public void FindPackageByFile(string file, int id, ChocolateyRequest request)
 {
     FindPackageByFileImpl(file, id, request);
 }
 /// <summary>
 ///     Uninstalls a package
 /// </summary>
 /// <param name="fastPackageReference"></param>
 /// <param name="request">
 ///     An object passed in from the CORE that contains functions that can be used to interact with the
 ///     CORE and HOST
 /// </param>
 public void UninstallPackage(string fastPackageReference, ChocolateyRequest request)
 {
     UninstallPackageImpl(fastPackageReference, request);
 }
 /// <summary>
 /// </summary>
 /// <param name="name"></param>
 /// <param name="requiredVersion"></param>
 /// <param name="minimumVersion"></param>
 /// <param name="maximumVersion"></param>
 /// <param name="id"></param>
 /// <param name="request"></param>
 /// <returns></returns>
 public void FindPackage(string name, string requiredVersion, string minimumVersion, string maximumVersion, int id, ChocolateyRequest request)
 {
     FindPackageImpl(name, requiredVersion, minimumVersion, maximumVersion, id, request);
 }
 /// <summary>
 ///     Removes/Unregisters a package source
 /// </summary>
 /// <param name="name">The name or location of a package source to remove.</param>
 /// <param name="request">
 ///     An object passed in from the CORE that contains functions that can be used to interact with the
 ///     CORE and HOST
 /// </param>
 public void RemovePackageSource(string name, ChocolateyRequest request)
 {
     RemovePackageSourceImpl(name, request);
 }
 /// <summary>
 /// </summary>
 /// <param name="request">
 ///     An object passed in from the CORE that contains functions that can be used to interact with the
 ///     CORE and HOST
 /// </param>
 public void ResolvePackageSources(ChocolateyRequest request)
 {
     ResolvePackageSourcesImpl(request);
 }
 /// <summary>
 ///     This is called when the user is adding (or updating) a package source
 ///     If this PROVIDER doesn't support user-defined package sources, remove this method.
 /// </summary>
 /// <param name="name">
 ///     The name of the package source. If this parameter is null or empty the PROVIDER should use the
 ///     location as the name (if the PROVIDER actually stores names of package sources)
 /// </param>
 /// <param name="location">
 ///     The location (ie, directory, URL, etc) of the package source. If this is null or empty, the
 ///     PROVIDER should use the name as the location (if valid)
 /// </param>
 /// <param name="trusted">
 ///     A boolean indicating that the user trusts this package source. Packages returned from this source
 ///     should be marked as 'trusted'
 /// </param>
 /// <param name="request">
 ///     An object passed in from the CORE that contains functions that can be used to interact with the
 ///     CORE and HOST
 /// </param>
 public void AddPackageSource(string name, string location, bool trusted, ChocolateyRequest request)
 {
     AddPackageSourceImpl(name, location, trusted, request);
 }