/// <summary> /// Checks the existence of a given key on <see cref="PackageReference"/> and supplies the value in <paramref name="value"/>. /// </summary> /// <param name="package">The <see cref="PackageReference"/> to check.</param> /// <param name="key">The key to search for.</param> /// <param name="value">The value of the key, if it was set. <c>string.empty</c> otherwise.</param> /// <returns><c>true</c> if the key was set.</returns> internal static bool HasValue(this PackageReference package, string key, out string value) { var hasValue = package.HasValue(key); value = package.GetValue(key) ?? string.Empty; return(hasValue); }
private static string GetValue(this PackageReference package, string key, params char[] trimChars) { var hasValue = package.HasValue(key); if (!hasValue) { return(string.Empty); } var value = package.Parameters[key].FirstOrDefault(); return(value != null && trimChars.Any() ? value.Trim(trimChars) : value); }
private ProcessArgumentBuilder GetArguments( PackageReference definition, ICakeConfiguration config) { var arguments = new ProcessArgumentBuilder(); arguments.Append("install"); if (_log.Verbosity == Verbosity.Verbose || _log.Verbosity == Verbosity.Diagnostic) { arguments.Append("--verbose"); } if (definition.Address != null) { arguments.Append($"--registry \"{definition.Address}\""); } else { var npmSource = config.GetValue(Constants.ConfigKey); if (!string.IsNullOrWhiteSpace(npmSource)) { arguments.Append($"--registry \"{npmSource}\""); } } if (definition.GetSwitch("force")) { arguments.Append("--force"); } if (definition.GetSwitch("global")) { arguments.Append("--global"); } if (definition.GetSwitch("ignore-scripts")) { arguments.Append("--ignore-scripts"); } if (definition.GetSwitch("no-optional")) { arguments.Append("--no-optional"); } if (definition.GetSwitch("save")) { GetSaveArguments(arguments, definition); } var packageString = new StringBuilder(); if (definition.HasValue("source", out string source)) { packageString.Append(source.Trim(':') + ":"); } if (definition.HasValue("scope", out string scope)) { packageString.Append("@" + scope.Trim('@') + "/"); } packageString.Append(definition.Package); if (definition.HasValue("version", out string version)) { packageString.Append(("@" + version.Trim(':', '=', '@')).Quote()); } arguments.Append(packageString.ToString()); return(arguments); }