master
h 148 lines 17.1 KB
Raw
1 /*++
2
3 Copyright (c) Microsoft. All rights reserved.
4
5 Module Name:
6
7 ArgumentDefinitions.h
8
9 Abstract:
10
11 Declaration of the available Arguments with their base properties.
12
13 --*/
14 #pragma once
15
16 // Here is where base argument types are defined, with their default name, default alias, kind, conversion type, and
17 // default description. Commands can override the name, alias, required state, limit, and description. The ArgType enum,
18 // kind, and conversion type remain fixed. The ArgType enum and the mapping of ArgType to data type are generated from
19 // this X-Macro, so all arguments must be defined here to be used in the system. The arguments defined here are the basis
20 // for all commands, but not all arguments need to be used by all commands.
21
22 // The Kind determines the data type:
23 // - Kind::Flag -> bool
24 // - Kind::Value -> std::wstring
25 // - Kind::Positional -> std::wstring
26 // - Kind::Forward -> std::vector<std::wstring>
27
28 // No other files other than ArgumentValidation need to be changed when adding a new argument, and that is only
29 // if you wish to add validation for the new argument or have it use existing validation.
30
31 // X-Macro for defining all arguments in one place
32 // Format: ARGUMENT(EnumName, Name, Alias, Kind, ConvertedType, Desc)
33 // ConvertedType is the type the argument's string value is converted to during validation and cached for
34 // execution (see ArgumentConvertedTypes.h). Use NoConversion for arguments that are not converted to a typed value.
35 // clang-format off
36 #define WSLC_ARGUMENTS(_) \
37 _(All, "all", L"a", Kind::Flag, NoConversion, Localization::WSLCCLI_AllArgDescription()) \
38 _(Archive, "archive", L"a", Kind::Flag, NoConversion, Localization::WSLCCLI_ArchiveArgDescription()) \
39 _(Attach, "attach", L"a", Kind::Flag, NoConversion, Localization::WSLCCLI_AttachArgDescription()) \
40 _(BuildArg, "build-arg", NO_ALIAS, Kind::Value, NoConversion, Localization::WSLCCLI_BuildArgDescription()) \
41 _(BuildLabel, "label", L"l", Kind::Value, NoConversion, Localization::WSLCCLI_LabelArgDescription()) \
42 _(BuildOutput, "output", L"o", Kind::Value, BuildOutput, Localization::WSLCCLI_OutputArgDescription()) \
43 _(BuildPull, "pull", NO_ALIAS, Kind::Flag, NoConversion, Localization::WSLCCLI_BuildPullArgDescription()) \
44 _(BuildTarget, "target", NO_ALIAS, Kind::Value, NoConversion, Localization::WSLCCLI_BuildTargetArgDescription()) \
45 _(CIDFile, "cidfile", NO_ALIAS, Kind::Value, NoConversion, Localization::WSLCCLI_CIDFileArgDescription()) \
46 _(Command, "command", NO_ALIAS, Kind::Positional, NoConversion, Localization::WSLCCLI_CommandArgDescription()) \
47 _(ContainerId, "container-id", NO_ALIAS, Kind::Positional, NoConversion, Localization::WSLCCLI_ContainerIdArgDescription()) \
48 _(Cpus, "cpus", NO_ALIAS, Kind::Value, int64_t, Localization::WSLCCLI_CpusArgDescription()) \
49 _(Force, "force", L"f", Kind::Flag, NoConversion, Localization::WSLCCLI_ForceArgDescription()) \
50 _(Detach, "detach", L"d", Kind::Flag, NoConversion, Localization::WSLCCLI_DetachArgDescription()) \
51 _(DNS, "dns", NO_ALIAS, Kind::Value, NoConversion, Localization::WSLCCLI_DNSArgDescription()) \
52 /*_(DNSDomain, "dns-domain", NO_ALIAS, Kind::Value, NoConversion, Localization::WSLCCLI_DNSDomainArgDescription())*/ \
53 _(DNSOption, "dns-option", NO_ALIAS, Kind::Value, NoConversion, Localization::WSLCCLI_DNSOptionArgDescription()) \
54 _(DNSSearch, "dns-search", NO_ALIAS, Kind::Value, NoConversion, Localization::WSLCCLI_DNSSearchArgDescription()) \
55 _(Domainname, "domainname", NO_ALIAS, Kind::Value, NoConversion, Localization::WSLCCLI_DomainnameArgDescription()) \
56 _(Driver, "driver", L"d", Kind::Value, NoConversion, Localization::WSLCCLI_DriverOptionDescription()) \
57 _(DriverOpt, "driver-opt", NO_ALIAS, Kind::Value, NoConversion, Localization::WSLCCLI_DriverOptArgDescription()) \
58 _(Entrypoint, "entrypoint", NO_ALIAS, Kind::Value, NoConversion, Localization::WSLCCLI_EntrypointArgDescription()) \
59 _(Env, "env", L"e", Kind::Value, NoConversion, Localization::WSLCCLI_EnvArgDescription()) \
60 _(EnvFile, "env-file", NO_ALIAS, Kind::Value, NoConversion, Localization::WSLCCLI_EnvFileArgDescription()) \
61 _(File, "file", L"f", Kind::Value, NoConversion, Localization::WSLCCLI_FileArgDescription()) \
62 _(Filter, "filter", L"f", Kind::Value, KeyValuePair, Localization::WSLCCLI_FilterArgDescription()) \
63 _(Follow, "follow", L"f", Kind::Flag, NoConversion, Localization::WSLCCLI_FollowArgDescription()) \
64 _(Timestamps, "timestamps", L"t", Kind::Flag, NoConversion, Localization::WSLCCLI_TimestampsArgDescription()) \
65 _(Since, "since", NO_ALIAS, Kind::Value, LONGLONG, Localization::WSLCCLI_SinceArgDescription()) \
66 _(Until, "until", NO_ALIAS, Kind::Value, LONGLONG, Localization::WSLCCLI_UntilArgDescription()) \
67 _(Format, "format", NO_ALIAS, Kind::Value, FormatType, Localization::WSLCCLI_FormatArgDescription()) \
68 _(ForwardArgs, "arguments", NO_ALIAS, Kind::Forward, NoConversion, Localization::WSLCCLI_ForwardArgsDescription()) \
69 _(Gateway, "gateway", NO_ALIAS, Kind::Value, NoConversion, Localization::WSLCCLI_NetworkGatewayArgDescription()) \
70 _(Gpus, "gpus", NO_ALIAS, Kind::Value, NoConversion, Localization::WSLCCLI_GpusArgDescription()) \
71 /*_(GroupId, "groupid", NO_ALIAS, Kind::Value, NoConversion, Localization::WSLCCLI_GroupIdArgDescription())*/ \
72 _(HealthCmd, "health-cmd", NO_ALIAS, Kind::Value, NoConversion, Localization::WSLCCLI_HealthCmdArgDescription()) \
73 _(HealthInterval, "health-interval", NO_ALIAS, Kind::Value, int64_t, Localization::WSLCCLI_HealthIntervalArgDescription()) \
74 _(HealthRetries, "health-retries", NO_ALIAS, Kind::Value, int, Localization::WSLCCLI_HealthRetriesArgDescription()) \
75 _(HealthStartPeriod,"health-start-period", NO_ALIAS, Kind::Value, int64_t, Localization::WSLCCLI_HealthStartPeriodArgDescription()) \
76 _(HealthTimeout, "health-timeout", NO_ALIAS, Kind::Value, int64_t, Localization::WSLCCLI_HealthTimeoutArgDescription()) \
77 _(Help, "help", WSLC_CLI_HELP_ARG,Kind::Flag, NoConversion, Localization::WSLCCLI_HelpArgDescription()) \
78 _(Hostname, "hostname", L"h", Kind::Value, NoConversion, Localization::WSLCCLI_HostnameArgDescription()) \
79 _(ImageForce, "force", L"f", Kind::Flag, NoConversion, Localization::WSLCCLI_ImageForceArgDescription()) \
80 _(ImageId, "image", NO_ALIAS, Kind::Positional, NoConversion, Localization::WSLCCLI_ImageIdArgDescription()) \
81 _(ImportFile, "file", NO_ALIAS, Kind::Positional, NoConversion, Localization::WSLCCLI_ImportFileArgDescription()) \
82 _(IidFile, "iidfile", NO_ALIAS, Kind::Value, NoConversion, Localization::WSLCCLI_IidFileArgDescription()) \
83 _(Input, "input", L"i", Kind::Value, NoConversion, Localization::WSLCCLI_InputArgDescription()) \
84 _(InspectFormat, "format", L"f", Kind::Value, JsonIndent, Localization::WSLCCLI_InspectFormatArgDescription()) \
85 _(Interactive, "interactive", L"i", Kind::Flag, NoConversion, Localization::WSLCCLI_InteractiveArgDescription()) \
86 _(Internal, "internal", NO_ALIAS, Kind::Flag, NoConversion, Localization::WSLCCLI_NetworkInternalArgDescription()) \
87 _(IpAddress, "ip", NO_ALIAS, Kind::Value, NoConversion, Localization::WSLCCLI_IpAddressArgDescription()) \
88 _(IpRange, "ip-range", NO_ALIAS, Kind::Value, NoConversion, Localization::WSLCCLI_NetworkIpRangeArgDescription()) \
89 _(Label, "label", L"l", Kind::Value, KeyValuePair, Localization::WSLCCLI_LabelArgDescription()) \
90 _(Last, "last", L"n", Kind::Value, int, Localization::WSLCCLI_LastArgDescription()) \
91 _(Latest, "latest", L"l", Kind::Flag, NoConversion, Localization::WSLCCLI_LatestArgDescription()) \
92 _(Link, "link", NO_ALIAS, Kind::Value, NoConversion, Localization::WSLCCLI_LinkArgDescription()) \
93 _(LinkLocalIp, "link-local-ip", NO_ALIAS, Kind::Value, NoConversion, Localization::WSLCCLI_LinkLocalIpArgDescription()) \
94 _(Memory, "memory", L"m", Kind::Value, int64_t, Localization::WSLCCLI_MemoryArgDescription()) \
95 _(Mount, "mount", NO_ALIAS, Kind::Value, ParsedMount, Localization::WSLCCLI_MountArgDescription()) \
96 _(Name, "name", NO_ALIAS, Kind::Value, NoConversion, Localization::WSLCCLI_NameArgDescription()) \
97 _(Network, "network", NO_ALIAS, Kind::Value, ParsedNetworkArgument, Localization::WSLCCLI_NetworkArgDescription()) \
98 _(NetworkAlias, "network-alias", NO_ALIAS, Kind::Value, NoConversion, Localization::WSLCCLI_NetworkAliasArgDescription()) \
99 _(NetworkName, "network-name", NO_ALIAS, Kind::Positional, NoConversion, Localization::WSLCCLI_NetworkNameArgDescription()) \
100 /*_(NoDNS, "no-dns", NO_ALIAS, Kind::Flag, NoConversion, Localization::WSLCCLI_NoDNSArgDescription())*/ \
101 _(NoCache, "no-cache", NO_ALIAS, Kind::Flag, NoConversion, Localization::WSLCCLI_NoCacheArgDescription()) \
102 _(NoColor, "no-color", NO_ALIAS, Kind::Flag, NoConversion, Localization::WSLCCLI_NoColorArgDescription()) \
103 _(NoHealthcheck, "no-healthcheck", NO_ALIAS, Kind::Flag, NoConversion, Localization::WSLCCLI_NoHealthcheckArgDescription()) \
104 _(NoPrune, "no-prune", NO_ALIAS, Kind::Flag, NoConversion, Localization::WSLCCLI_NoPruneArgDescription()) \
105 _(NoTrunc, "no-trunc", NO_ALIAS, Kind::Flag, NoConversion, Localization::WSLCCLI_NoTruncArgDescription()) \
106 _(ObjectId, "object-id", NO_ALIAS, Kind::Positional, NoConversion, Localization::WSLCCLI_ObjectIdArgDescription()) \
107 _(Options, "opt", L"o", Kind::Value, KeyValuePair, Localization::WSLCCLI_OptionsArgDescription()) \
108 _(Output, "output", L"o", Kind::Value, NoConversion, Localization::WSLCCLI_OutputArgDescription()) \
109 _(Password, "password", L"p", Kind::Value, NoConversion, Localization::WSLCCLI_LoginPasswordArgDescription()) \
110 _(PasswordStdin, "password-stdin", NO_ALIAS, Kind::Flag, NoConversion, Localization::WSLCCLI_LoginPasswordStdinArgDescription()) \
111 _(Path, "path", NO_ALIAS, Kind::Positional, NoConversion, Localization::WSLCCLI_PathArgDescription()) \
112 _(Progress, "progress", NO_ALIAS, Kind::Value, ProgressMode, Localization::WSLCCLI_ProgressArgDescription()) \
113 _(Publish, "publish", L"p", Kind::Value, NoConversion, Localization::WSLCCLI_PublishArgDescription()) \
114 _(PublishAll, "publish-all", L"P", Kind::Flag, NoConversion, Localization::WSLCCLI_PublishAllArgDescription()) \
115 _(Pull, "pull", NO_ALIAS, Kind::Value, PullPolicy, Localization::WSLCCLI_PullArgDescription()) \
116 _(Quiet, "quiet", L"q", Kind::Flag, NoConversion, Localization::WSLCCLI_QuietArgDescription()) \
117 _(Remove, "rm", NO_ALIAS, Kind::Flag, NoConversion, Localization::WSLCCLI_RemoveArgDescription()) \
118 /*_(Scheme, "scheme", NO_ALIAS, Kind::Value, NoConversion, Localization::WSLCCLI_SchemeArgDescription())*/ \
119 _(Secret, "secret", NO_ALIAS, Kind::Value, BuildSecret, Localization::WSLCCLI_SecretArgDescription()) \
120 _(Server, "server", NO_ALIAS, Kind::Positional, NoConversion, Localization::WSLCCLI_LoginServerArgDescription()) \
121 _(Session, "session", NO_ALIAS, Kind::Value, NoConversion, Localization::WSLCCLI_SessionIdArgDescription()) \
122 _(ShmSize, "shm-size", NO_ALIAS, Kind::Value, int64_t, Localization::WSLCCLI_ShmSizeArgDescription()) \
123 _(StoragePath, "storage-path", NO_ALIAS, Kind::Positional, NoConversion, Localization::WSLCCLI_StoragePathArgDescription()) \
124 _(Signal, "signal", L"s", Kind::Value, WSLCSignal, Localization::WSLCCLI_SignalArgDescription()) \
125 _(Size, "size", L"s", Kind::Flag, NoConversion, Localization::WSLCCLI_InspectSizeArgDescription()) \
126 _(Source, "source", NO_ALIAS, Kind::Positional, NoConversion, Localization::WSLCCLI_SourceArgDescription()) \
127 _(StopSignal, "stop-signal", NO_ALIAS, Kind::Value, WSLCSignal, Localization::WSLCCLI_StopSignalArgDescription()) \
128 _(StopTimeout, "stop-timeout", NO_ALIAS, Kind::Value, int, Localization::WSLCCLI_StopTimeoutArgDescription()) \
129 _(Subnet, "subnet", NO_ALIAS, Kind::Value, NoConversion, Localization::WSLCCLI_NetworkSubnetArgDescription()) \
130 _(Tail, "tail", L"n", Kind::Value, ULONGLONG, Localization::WSLCCLI_TailArgDescription()) \
131 _(Tag, "tag", L"t", Kind::Value, NoConversion, Localization::WSLCCLI_TagArgDescription()) \
132 _(Target, "target", NO_ALIAS, Kind::Positional, NoConversion, Localization::WSLCCLI_TargetArgDescription()) \
133 _(Time, "time", L"t", Kind::Value, LONG, Localization::WSLCCLI_TimeArgDescription()) \
134 _(Timeout, "timeout", L"t", Kind::Value, LONG, Localization::WSLCCLI_TimeArgDescription()) \
135 _(TMPFS, "tmpfs", NO_ALIAS, Kind::Value, ParsedMount, Localization::WSLCCLI_TMPFSArgDescription()) \
136 _(TTY, "tty", L"t", Kind::Flag, NoConversion, Localization::WSLCCLI_TTYArgDescription()) \
137 _(Type, "type", L"t", Kind::Value, InspectType, Localization::WSLCCLI_TypeArgDescription()) \
138 _(Ulimit, "ulimit", NO_ALIAS, Kind::Value, UlimitValue, Localization::WSLCCLI_UlimitArgDescription()) \
139 _(User, "user", L"u", Kind::Value, NoConversion, Localization::WSLCCLI_UserArgDescription()) \
140 _(Username, "username", L"u", Kind::Value, NoConversion, Localization::WSLCCLI_LoginUsernameArgDescription()) \
141 _(Verbose, "verbose", NO_ALIAS, Kind::Flag, NoConversion, Localization::WSLCCLI_VerboseArgDescription()) \
142 _(Version, "version", L"v", Kind::Flag, NoConversion, Localization::WSLCCLI_VersionArgDescription()) \
143 /*_(Virtual, "virtualization", NO_ALIAS, Kind::Value, NoConversion, Localization::WSLCCLI_VirtualArgDescription())*/ \
144 _(Volume, "volume", L"v", Kind::Value, ParsedMount, Localization::WSLCCLI_VolumeArgDescription()) \
145 _(VolumeName, "volume-name", NO_ALIAS, Kind::Positional, NoConversion, Localization::WSLCCLI_VolumeNameArgDescription()) \
146 _(Volumes, "volumes", L"v", Kind::Flag, NoConversion, Localization::WSLCCLI_RemoveVolumesArgDescription()) \
147 _(WorkDir, "workdir", L"w", Kind::Value, NoConversion, Localization::WSLCCLI_WorkingDirArgDescription()) \
148 // clang-format on