/********************************************************************++
Copyright (c) Microsoft Corporation. All rights reserved.
--********************************************************************/
using System.Diagnostics.CodeAnalysis;
using System.Collections.Generic;
using System.Reflection;
using Dbg = System.Management.Automation.Diagnostics;
namespace System.Management.Automation
{
#region VERBS
///
/// Verbs that are commonly used in cmdlet names.
///
///
///
/// These verbs are recommended over their synonyms when used as the verb name
/// for cmdlets.
///
public static class VerbsCommon
{
///
/// Synonyms: Add to, append or attach.
///
public const string Add = "Add";
///
/// Remove all the elements or content of a container
///
public const string Clear = "Clear";
///
/// Change the state of a resource to make it inaccessible, unavailable, or unusable
///
public const string Close = "Close";
///
/// Copy a resource to another name or another container
///
public const string Copy = "Copy";
///
/// Enters a context
///
public const string Enter = "Enter";
///
/// Exits a context
///
public const string Exit = "Exit";
///
/// Search for an object
///
public const string Find = "Find";
///
/// Formats an object for output.
///
public const string Format = "Format";
///
/// Get the contents/object/children/properties/relations/... of a resource
///
public const string Get = "Get";
///
/// Remove from visibility
///
public const string Hide = "Hide";
///
/// Combines resources into one resource
///
public const string Join = "Join";
///
/// Lock a resource.
///
public const string Lock = "Lock";
///
/// Move a resource
///
public const string Move = "Move";
///
/// Create a new resource
///
public const string New = "New";
///
/// Change the state of a resource to make it accessible, available, or usable
///
public const string Open = "Open";
///
/// Increases the effectiveness of a resource
///
public const string Optimize = "Optimize";
///
/// To set as the current context, including the ability
/// to reverse this action
///
public const string Push = "Push";
///
/// To restore a context saved by a Push operation
///
public const string Pop = "Pop";
///
/// Act on a resource again.
///
public const string Redo = "Redo";
///
/// Remove a resource from a container
///
public const string Remove = "Remove";
///
/// Give a resource a new name
///
public const string Rename = "Rename";
///
/// Set/reset the contents/object/properties/relations... of a resource
///
public const string Reset = "Reset";
///
/// Changes the size of a resource
///
public const string Resize = "Resize";
///
/// Get a reference to a resource or summary information about a resource by looking in a specified collection.
/// Does not actually retrieve that resource.
///
public const string Search = "Search";
///
/// To take as a choice from among several; pick out
///
public const string Select = "Select";
///
/// Set the contents/object/properties/relations... of a resource
///
public const string Set = "Set";
///
/// Makes visible, or displays information. Combines get, format, and out verbs.
///
public const string Show = "Show";
///
/// Pass from one resource or point to another while disregarding or omitting intervening resources or points
///
public const string Skip = "Skip";
///
/// Split an object into portions. parts or fragments
///
public const string Split = "Split";
///
/// Move to the next point or resource
///
public const string Step = "Step";
///
///
///
public const string Switch = "Switch";
///
/// Reverse an action or process.
///
public const string Undo = "Undo";
///
/// Unlock a resource.
///
public const string Unlock = "Unlock";
///
/// Continually inspect a resource for changes
///
public const string Watch = "Watch";
}//VerbsCommon
///
/// Verbs that are commonly used in cmdlet names when the cmdlet manipulates data.
///
///
///
/// These verbs are recommended over their synonyms when used as the verb name
/// for cmdlets.
///
public static class VerbsData
{
///
/// backup
///
public const string Backup = "Backup";
///
/// Establish a well defined state to be able to roll back to
///
public const string Checkpoint = "Checkpoint";
///
/// Compare this resource with another one and produce a set of differences
///
public const string Compare = "Compare";
///
/// Reduce in size
///
public const string Compress = "Compress";
///
/// Change from one encoding to another or from one unit base to another (e.g. feet to meters)
///
public const string Convert = "Convert";
///
/// Convert from the format named in the noun to a general-purpose format (e.g. string or int).
///
public const string ConvertFrom = "ConvertFrom";
///
/// Convert from a general-purpose format (e.g. string or int) to the format named in the noun.
///
public const string ConvertTo = "ConvertTo";
///
/// To dismount - to get off. To detach.
///
public const string Dismount = "Dismount";
///
/// Performs an in-place modification of a resource.
///
public const string Edit = "Edit";
///
/// Uncompress or increase in size
///
public const string Expand = "Expand";
///
/// Make a copy of a set of resources using an interchange format
///
public const string Export = "Export";
///
/// Arrange or associate one or more resources
///
public const string Group = "Group";
///
/// Create a set of resources using an interchange format
///
public const string Import = "Import";
///
/// Prepare a resource for use. Assign a beginning value to something
///
public const string Initialize = "Initialize";
///
/// Limit the consumption of a resource or apply a constraint on a resource
///
public const string Limit = "Limit";
///
/// Take multiple instances and create a single instance
///
public const string Merge = "Merge";
///
/// To mount - to attache a named entity to a hierarchy at the pathname location. To set in position.
///
public const string Mount = "Mount";
///
/// Out - direct to a port. Output something to a port.
///
public const string Out = "Out";
///
/// Make known and accessible to another
///
public const string Publish = "Publish";
///
/// Rollback state to a predefined snapshot/checkpoint
///
public const string Restore = "Restore";
///
/// Store state in a permanent location
///
public const string Save = "Save";
///
/// Coerce one or more resources to the same state
///
public const string Sync = "Sync";
///
/// Remove from public access and visibility
///
[SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", MessageId = "Unpublish")]
public const string Unpublish = "Unpublish";
///
/// Update a resource with new elements or refresh from a source of truth
///
public const string Update = "Update";
}//VerbsData
///
/// Verbs that are commonly used in cmdlet names when the cmdlet manipulates the lifecycle of something.
///
///
///
/// These verbs are recommended over their synonyms when used as the verb name
/// for cmdlets.
///
public static class VerbsLifecycle
{
///
/// Agree to the status of a resource or process
///
public const string Approve = "Approve";
///
/// State or affirm the state of an object
///
public const string Assert = "Assert";
///
/// Creates an artifact (usually a binary or document) out of some set of input files (usually source code or declarative documents)
///
public const string Build = "Build";
///
/// Finalize an interruptable activity. Makes pending changes permanent.
///
public const string Complete = "Complete";
///
/// Acknowledge, verify, or validate the state of a resource
///
public const string Confirm = "Confirm";
///
/// Refuse, object, block, or oppose the state of a resource or process
///
public const string Deny = "Deny";
///
/// Sends an application, website, or solution to a remote target[s] in such a way that a consumer of that solution can access it after deployment is complete.
///
public const string Deploy = "Deploy";
///
/// Stop and/or configure something to be unavailable (e.g unable to not start again)
///
public const string Disable = "Disable";
///
/// Configure to be available (e.g. able to start)
///
public const string Enable = "Enable";
///
/// Settle in an indicated place or condition (optionally initializing for use)
///
public const string Install = "Install";
///
/// Calls or launches an activity that cannot be stopped
///
public const string Invoke = "Invoke";
///
/// Record details about an item in a public store or publishing location
///
///
public const string Register = "Register";
///
/// Ask for a resource or permissions
///
public const string Request = "Request";
///
/// Terminate existing activity and begin it again (with the same configuration)
///
public const string Restart = "Restart";
///
/// Begin an activity again after it was suspended
///
public const string Resume = "Resume";
///
/// Begin an activity
///
public const string Start = "Start";
///
///Discontinue or cease an activity
///
public const string Stop = "Stop";
///
/// Present a resource for approval
///
public const string Submit = "Submit";
///
/// Suspend an activity temporarily
///
public const string Suspend = "Suspend";
///
/// Remove or disassociate
///
public const string Uninstall = "Uninstall";
///
/// Remove details of an item from a public store or publishing location
///
///
public const string Unregister = "Unregister";
///
/// Suspend execution until an expected event
///
///
public const string Wait = "Wait";
}
///
/// Verbs that are commonly used in cmdlet names when the cmdlet is used to diagnose the health of something.
///
///
///
/// These verbs are recommended over their synonyms when used as the verb name
/// for cmdlets.
///
public static class VerbsDiagnostic
{
///
/// Iteratively interact with a resource or activity for the purpose finding a flaw or better understanding of what is occurring.
///
public const string Debug = "Debug";
///
/// calculate/identify resources consumed by a specified operation or retrieve statistics about a resource
///
public const string Measure = "Measure";
///
/// Determine whether a resource is alive and responding to requests
///
public const string Ping = "Ping";
///
/// Detect and correct problems
///
public const string Repair = "Repair";
///
/// Map a shorthand name will be bound to a longname
///
public const string Resolve = "Resolve";
///
/// Verify the operational validity or consistency of a resource
///
public const string Test = "Test";
///
/// Trace activities performed by a specified operation
///
public const string Trace = "Trace";
}//VerbsDiagnostic
///
/// Verbs that are commonly used in cmdlet names when the cmdlet is used to communicate with something.
///
///
///
/// These verbs are recommended over their synonyms when used as the verb name
/// for cmdlets.
///
public static class VerbsCommunications
{
///
/// Associate subsequent activities with a resource
///
public const string Connect = "Connect";
///
/// Disassociate from a resource
///
public const string Disconnect = "Disconnect";
///
/// To read - to obtain (data) from a storage medium or port
///
public const string Read = "Read";
///
/// Take or acquire from a source
///
public const string Receive = "Receive";
///
/// Convey by an intermediary to a destination
///
public const string Send = "Send";
///
/// TO write - communicate or express. Display data.
///
public const string Write = "Write";
}//VerbsCommunications
///
/// Verbs that are commonly used in cmdlet names when the cmdlet is used to secure a resource.
///
///
///
/// These verbs are recommended over their synonyms when used as the verb name
/// for cmdlets.
///
public static class VerbsSecurity
{
///
/// Prevent access to or usage of a resource.
///
public const string Block = "Block";
///
/// Gives access to a resource.
///
public const string Grant = "Grant";
///
/// Guard a resource from attack or loss
///
public const string Protect = "Protect";
///
/// Removes access to a resource.
///
public const string Revoke = "Revoke";
///
/// Allow access to or usage of a resource.
///
public const string Unblock = "Unblock";
///
/// Remove guards from a resource that prevent it from attack or loss
///
public const string Unprotect = "Unprotect";
}//VerbsSecurity
///
/// Canonical verbs that don't fit into any of the other categories.
///
public static class VerbsOther
{
///
/// To use or include a resource. To set as the context of an action.
///
public const string Use = "Use";
}
///
/// Class for Verbs and Groups
///
public class VerbInfo
{
///
/// Verb Name
///
public string Verb
{
get;set;
}
///
/// Group Name
///
public string Group
{
get;set;
}
}
internal static class Verbs
{
static Verbs()
{
Type[] verbTypes = new Type[] { typeof(VerbsCommon), typeof(VerbsCommunications), typeof(VerbsData),
typeof(VerbsDiagnostic), typeof(VerbsLifecycle), typeof(VerbsOther), typeof(VerbsSecurity) };
foreach (Type type in verbTypes)
{
foreach (FieldInfo field in type.GetFields())
{
if (field.IsLiteral)
{
s_validVerbs.Add((string)field.GetValue(null), true);
}
}
}
s_recommendedAlternateVerbs.Add("accept", new string[] { "Receive" });
s_recommendedAlternateVerbs.Add("acquire", new string[] { "Get", "Read" });
s_recommendedAlternateVerbs.Add("allocate", new string[] { "New" });
s_recommendedAlternateVerbs.Add("allow", new string[] { "Enable", "Grant", "Unblock" });
s_recommendedAlternateVerbs.Add("amend", new string[] { "Edit" });
s_recommendedAlternateVerbs.Add("analyze", new string[] { "Measure", "Test" });
s_recommendedAlternateVerbs.Add("append", new string[] { "Add" });
s_recommendedAlternateVerbs.Add("assign", new string[] { "Set" });
s_recommendedAlternateVerbs.Add("associate", new string[] { "Join", "Merge" });
s_recommendedAlternateVerbs.Add("attach", new string[] { "Add", "Debug" });
s_recommendedAlternateVerbs.Add("bc", new string[] { "Compare" });
s_recommendedAlternateVerbs.Add("boot", new string[] { "Start" });
s_recommendedAlternateVerbs.Add("break", new string[] { "Disconnect" });
s_recommendedAlternateVerbs.Add("broadcast", new string[] { "Send" });
s_recommendedAlternateVerbs.Add("burn", new string[] { "Backup" });
s_recommendedAlternateVerbs.Add("calculate", new string[] { "Measure" });
s_recommendedAlternateVerbs.Add("cancel", new string[] { "Stop" });
s_recommendedAlternateVerbs.Add("cat", new string[] { "Get" });
s_recommendedAlternateVerbs.Add("change", new string[] { "Convert", "Edit", "Rename" });
s_recommendedAlternateVerbs.Add("clean", new string[] { "Uninstall" });
s_recommendedAlternateVerbs.Add("clone", new string[] { "Copy" });
s_recommendedAlternateVerbs.Add("combine", new string[] { "Join", "Merge" });
s_recommendedAlternateVerbs.Add("compact", new string[] { "Compress" });
s_recommendedAlternateVerbs.Add("compile", new string[] { "Build" });
s_recommendedAlternateVerbs.Add("concatenate", new string[] { "Add" });
s_recommendedAlternateVerbs.Add("configure", new string[] { "Set" });
s_recommendedAlternateVerbs.Add("create", new string[] { "New" });
s_recommendedAlternateVerbs.Add("cut", new string[] { "Remove" });
//recommendedAlternateVerbs.Add("debug", new string[] {"Ping"});
s_recommendedAlternateVerbs.Add("delete", new string[] { "Remove" });
s_recommendedAlternateVerbs.Add("detach", new string[] { "Dismount", "Remove" });
s_recommendedAlternateVerbs.Add("determine", new string[] { "Measure", "Resolve" });
s_recommendedAlternateVerbs.Add("diagnose", new string[] { "Debug", "Test" });
s_recommendedAlternateVerbs.Add("diff", new string[] { "Checkpoint", "Compare" });
s_recommendedAlternateVerbs.Add("difference", new string[] { "Checkpoint", "Compare" });
s_recommendedAlternateVerbs.Add("dig", new string[] { "Trace" });
s_recommendedAlternateVerbs.Add("dir", new string[] { "Get" });
s_recommendedAlternateVerbs.Add("discard", new string[] { "Remove" });
s_recommendedAlternateVerbs.Add("display", new string[] { "Show", "Write" });
s_recommendedAlternateVerbs.Add("dispose", new string[] { "Remove" });
s_recommendedAlternateVerbs.Add("divide", new string[] { "Split" });
s_recommendedAlternateVerbs.Add("dump", new string[] { "Get" });
s_recommendedAlternateVerbs.Add("duplicate", new string[] { "Copy" });
s_recommendedAlternateVerbs.Add("empty", new string[] { "Clear" });
s_recommendedAlternateVerbs.Add("end", new string[] { "Stop" });
s_recommendedAlternateVerbs.Add("erase", new string[] { "Clear", "Remove" });
s_recommendedAlternateVerbs.Add("examine", new string[] { "Get" });
s_recommendedAlternateVerbs.Add("execute", new string[] { "Invoke" });
s_recommendedAlternateVerbs.Add("explode", new string[] { "Expand" });
s_recommendedAlternateVerbs.Add("extract", new string[] { "Export" });
s_recommendedAlternateVerbs.Add("fix", new string[] { "Repair", "Restore" });
s_recommendedAlternateVerbs.Add("flush", new string[] { "Clear" });
s_recommendedAlternateVerbs.Add("follow", new string[] { "Trace" });
s_recommendedAlternateVerbs.Add("generate", new string[] { "New" });
//recommendedAlternateVerbs.Add("get", new string[] {"Read"});
s_recommendedAlternateVerbs.Add("halt", new string[] { "Disable" });
s_recommendedAlternateVerbs.Add("in", new string[] { "ConvertTo" });
s_recommendedAlternateVerbs.Add("index", new string[] { "Update" });
s_recommendedAlternateVerbs.Add("initiate", new string[] { "Start" });
s_recommendedAlternateVerbs.Add("input", new string[] { "ConvertTo", "Unregister" });
s_recommendedAlternateVerbs.Add("insert", new string[] { "Add", "Unregister" });
s_recommendedAlternateVerbs.Add("inspect", new string[] { "Trace" });
s_recommendedAlternateVerbs.Add("kill", new string[] { "Stop" });
s_recommendedAlternateVerbs.Add("launch", new string[] { "Start" });
s_recommendedAlternateVerbs.Add("load", new string[] { "Import" });
s_recommendedAlternateVerbs.Add("locate", new string[] { "Search", "Select" });
s_recommendedAlternateVerbs.Add("logoff", new string[] { "Disconnect" });
s_recommendedAlternateVerbs.Add("mail", new string[] { "Send" });
s_recommendedAlternateVerbs.Add("make", new string[] { "New" });
s_recommendedAlternateVerbs.Add("match", new string[] { "Select" });
s_recommendedAlternateVerbs.Add("migrate", new string[] { "Move" });
s_recommendedAlternateVerbs.Add("modify", new string[] { "Edit" });
s_recommendedAlternateVerbs.Add("name", new string[] { "Move" });
s_recommendedAlternateVerbs.Add("nullify", new string[] { "Clear" });
s_recommendedAlternateVerbs.Add("obtain", new string[] { "Get" });
//recommendedAlternateVerbs.Add("out", new string[] {"ConvertFrom"});
s_recommendedAlternateVerbs.Add("output", new string[] { "ConvertFrom" });
s_recommendedAlternateVerbs.Add("pause", new string[] { "Suspend", "Wait" });
s_recommendedAlternateVerbs.Add("peek", new string[] { "Receive" });
s_recommendedAlternateVerbs.Add("permit", new string[] { "Enable" });
s_recommendedAlternateVerbs.Add("purge", new string[] { "Clear", "Remove" });
s_recommendedAlternateVerbs.Add("pick", new string[] { "Select" });
//recommendedAlternateVerbs.Add("pop", new string[] {"Enter", "Exit"});
s_recommendedAlternateVerbs.Add("prevent", new string[] { "Block" });
s_recommendedAlternateVerbs.Add("print", new string[] { "Write" });
s_recommendedAlternateVerbs.Add("prompt", new string[] { "Read" });
//recommendedAlternateVerbs.Add("push", new string[] {"Enter", "Exit"});
s_recommendedAlternateVerbs.Add("put", new string[] { "Send", "Write" });
s_recommendedAlternateVerbs.Add("puts", new string[] { "Write" });
s_recommendedAlternateVerbs.Add("quota", new string[] { "Limit" });
s_recommendedAlternateVerbs.Add("quote", new string[] { "Limit" });
s_recommendedAlternateVerbs.Add("rebuild", new string[] { "Initialize" });
s_recommendedAlternateVerbs.Add("recycle", new string[] { "Restart" });
s_recommendedAlternateVerbs.Add("refresh", new string[] { "Update" });
s_recommendedAlternateVerbs.Add("reinitialize", new string[] { "Initialize" });
s_recommendedAlternateVerbs.Add("release", new string[] { "Clear", "Install", "Publish", "Unlock" });
s_recommendedAlternateVerbs.Add("reload", new string[] { "Update" });
s_recommendedAlternateVerbs.Add("renew", new string[] { "Initialize", "Update" });
s_recommendedAlternateVerbs.Add("replicate", new string[] { "Copy" });
s_recommendedAlternateVerbs.Add("resample", new string[] { "Convert" });
//recommendedAlternateVerbs.Add("reset", new string[] {"Set"});
//recommendedAlternateVerbs.Add("resize", new string[] {"Convert"});
s_recommendedAlternateVerbs.Add("restrict", new string[] { "Lock" });
s_recommendedAlternateVerbs.Add("return", new string[] { "Repair", "Restore" });
s_recommendedAlternateVerbs.Add("revert", new string[] { "Unpublish" });
s_recommendedAlternateVerbs.Add("revise", new string[] { "Edit" });
s_recommendedAlternateVerbs.Add("run", new string[] { "Invoke", "Start" });
s_recommendedAlternateVerbs.Add("salvage", new string[] { "Test" });
//recommendedAlternateVerbs.Add("save", new string[] {"Backup"});
s_recommendedAlternateVerbs.Add("secure", new string[] { "Lock" });
s_recommendedAlternateVerbs.Add("separate", new string[] { "Split" });
s_recommendedAlternateVerbs.Add("setup", new string[] { "Initialize", "Install" });
s_recommendedAlternateVerbs.Add("sleep", new string[] { "Suspend", "Wait" });
s_recommendedAlternateVerbs.Add("starttransaction", new string[] { "Checkpoint" });
s_recommendedAlternateVerbs.Add("telnet", new string[] { "Connect" });
s_recommendedAlternateVerbs.Add("terminate", new string[] { "Stop" });
s_recommendedAlternateVerbs.Add("track", new string[] { "Trace" });
s_recommendedAlternateVerbs.Add("transfer", new string[] { "Move" });
s_recommendedAlternateVerbs.Add("type", new string[] { "Get" });
//recommendedAlternateVerbs.Add("undo", new string[] {"Repair", "Restore"});
s_recommendedAlternateVerbs.Add("unite", new string[] { "Join", "Merge" });
s_recommendedAlternateVerbs.Add("unlink", new string[] { "Dismount" });
s_recommendedAlternateVerbs.Add("unmark", new string[] { "Clear" });
s_recommendedAlternateVerbs.Add("unrestrict", new string[] { "Unlock" });
s_recommendedAlternateVerbs.Add("unsecure", new string[] { "Unlock" });
s_recommendedAlternateVerbs.Add("unset", new string[] { "Clear" });
s_recommendedAlternateVerbs.Add("verify", new string[] { "Test" });
#if DEBUG
foreach (KeyValuePair entry in s_recommendedAlternateVerbs)
{
Dbg.Assert(!IsStandard(entry.Key), "prohibited verb is standard");
foreach (string suggested in entry.Value)
{
Dbg.Assert(IsStandard(suggested), "suggested verb is not standard");
}
}
#endif
}
private static Dictionary s_validVerbs = new Dictionary(StringComparer.OrdinalIgnoreCase);
private static Dictionary s_recommendedAlternateVerbs = new Dictionary(StringComparer.OrdinalIgnoreCase);
internal static bool IsStandard(string verb)
{
return s_validVerbs.ContainsKey(verb);
}
internal static string[] SuggestedAlternates(string verb)
{
string[] result = null;
s_recommendedAlternateVerbs.TryGetValue(verb, out result);
return result;
}
}
#endregion VERBS
}