diff --git a/src/Tempest/Console/src/Actions/ExecuteConsoleCommand.php b/src/Tempest/Console/src/Actions/ExecuteConsoleCommand.php index a799c3105..7ec3e0f3c 100644 --- a/src/Tempest/Console/src/Actions/ExecuteConsoleCommand.php +++ b/src/Tempest/Console/src/Actions/ExecuteConsoleCommand.php @@ -10,6 +10,7 @@ use Tempest\Console\ExitCode; use Tempest\Console\Initializers\Invocation; use Tempest\Console\Input\ConsoleArgumentBag; +use Tempest\Console\InvalidExitCode; use Tempest\Container\Container; final readonly class ExecuteConsoleCommand @@ -48,14 +49,20 @@ private function getCallable(array $commandMiddleware): ConsoleMiddlewareCallabl $inputBuilder->build(), ); - return $exitCode ?? ExitCode::SUCCESS; + if ($exitCode === null) { + $exitCode = ExitCode::SUCCESS; + } elseif (is_int($exitCode)) { + $exitCode = ExitCode::tryFrom($exitCode) ?? throw new InvalidExitCode($exitCode); + } + + return $exitCode; }); $middlewareStack = [...$this->consoleConfig->middleware, ...$commandMiddleware]; while ($middlewareClass = array_pop($middlewareStack)) { $callable = new ConsoleMiddlewareCallable( - fn (Invocation $invocation) => $this->container->get($middlewareClass)($invocation, $callable) + fn (Invocation $invocation) => $this->container->get($middlewareClass)($invocation, $callable), ); } diff --git a/src/Tempest/Console/src/ExitCode.php b/src/Tempest/Console/src/ExitCode.php index 4fe2807ec..0efa46a13 100644 --- a/src/Tempest/Console/src/ExitCode.php +++ b/src/Tempest/Console/src/ExitCode.php @@ -10,4 +10,272 @@ enum ExitCode: int case ERROR = 1; case INVALID = 2; case CANCELLED = 25; + + // Aliased + // case STATUS_0 = 0; + // case STATUS_1 = 0; + // case STATUS_2 = 0; + + case STATUS_3 = 3; + case STATUS_4 = 4; + case STATUS_5 = 5; + case STATUS_6 = 6; + case STATUS_7 = 7; + case STATUS_8 = 8; + case STATUS_9 = 9; + case STATUS_10 = 10; + case STATUS_11 = 11; + case STATUS_12 = 12; + case STATUS_13 = 13; + case STATUS_14 = 14; + case STATUS_15 = 15; + case STATUS_16 = 16; + case STATUS_17 = 17; + case STATUS_18 = 18; + case STATUS_19 = 19; + case STATUS_20 = 20; + case STATUS_21 = 21; + case STATUS_22 = 22; + case STATUS_23 = 23; + case STATUS_24 = 24; + + // Aliased + // case STATUS_25 = 25; + + case STATUS_26 = 26; + case STATUS_27 = 27; + case STATUS_28 = 28; + case STATUS_29 = 29; + case STATUS_30 = 30; + case STATUS_31 = 31; + case STATUS_32 = 32; + case STATUS_33 = 33; + case STATUS_34 = 34; + case STATUS_35 = 35; + case STATUS_36 = 36; + case STATUS_37 = 37; + case STATUS_38 = 38; + case STATUS_39 = 39; + case STATUS_40 = 40; + case STATUS_41 = 41; + case STATUS_42 = 42; + case STATUS_43 = 43; + case STATUS_44 = 44; + case STATUS_45 = 45; + case STATUS_46 = 46; + case STATUS_47 = 47; + case STATUS_48 = 48; + case STATUS_49 = 49; + case STATUS_50 = 50; + case STATUS_51 = 51; + case STATUS_52 = 52; + case STATUS_53 = 53; + case STATUS_54 = 54; + case STATUS_55 = 55; + case STATUS_56 = 56; + case STATUS_57 = 57; + case STATUS_58 = 58; + case STATUS_59 = 59; + case STATUS_60 = 60; + case STATUS_61 = 61; + case STATUS_62 = 62; + case STATUS_63 = 63; + case STATUS_64 = 64; + case STATUS_65 = 65; + case STATUS_66 = 66; + case STATUS_67 = 67; + case STATUS_68 = 68; + case STATUS_69 = 69; + case STATUS_70 = 70; + case STATUS_71 = 71; + case STATUS_72 = 72; + case STATUS_73 = 73; + case STATUS_74 = 74; + case STATUS_75 = 75; + case STATUS_76 = 76; + case STATUS_77 = 77; + case STATUS_78 = 78; + case STATUS_79 = 79; + case STATUS_80 = 80; + case STATUS_81 = 81; + case STATUS_82 = 82; + case STATUS_83 = 83; + case STATUS_84 = 84; + case STATUS_85 = 85; + case STATUS_86 = 86; + case STATUS_87 = 87; + case STATUS_88 = 88; + case STATUS_89 = 89; + case STATUS_90 = 90; + case STATUS_91 = 91; + case STATUS_92 = 92; + case STATUS_93 = 93; + case STATUS_94 = 94; + case STATUS_95 = 95; + case STATUS_96 = 96; + case STATUS_97 = 97; + case STATUS_98 = 98; + case STATUS_99 = 99; + case STATUS_100 = 100; + case STATUS_101 = 101; + case STATUS_102 = 102; + case STATUS_103 = 103; + case STATUS_104 = 104; + case STATUS_105 = 105; + case STATUS_106 = 106; + case STATUS_107 = 107; + case STATUS_108 = 108; + case STATUS_109 = 109; + case STATUS_110 = 110; + case STATUS_111 = 111; + case STATUS_112 = 112; + case STATUS_113 = 113; + case STATUS_114 = 114; + case STATUS_115 = 115; + case STATUS_116 = 116; + case STATUS_117 = 117; + case STATUS_118 = 118; + case STATUS_119 = 119; + case STATUS_120 = 120; + case STATUS_121 = 121; + case STATUS_122 = 122; + case STATUS_123 = 123; + case STATUS_124 = 124; + case STATUS_125 = 125; + + // Reserved + // case STATUS_126 = 126; + // case STATUS_127 = 127; + // case STATUS_128 = 128; + + case STATUS_129 = 129; + + // Reserved + // case STATUS_130 = 130; + + case STATUS_131 = 131; + case STATUS_132 = 132; + case STATUS_133 = 133; + case STATUS_134 = 134; + case STATUS_135 = 135; + case STATUS_136 = 136; + case STATUS_137 = 137; + case STATUS_138 = 138; + case STATUS_139 = 139; + case STATUS_140 = 140; + case STATUS_141 = 141; + case STATUS_142 = 142; + case STATUS_143 = 143; + case STATUS_144 = 144; + case STATUS_145 = 145; + case STATUS_146 = 146; + case STATUS_147 = 147; + case STATUS_148 = 148; + case STATUS_149 = 149; + case STATUS_150 = 150; + case STATUS_151 = 151; + case STATUS_152 = 152; + case STATUS_153 = 153; + case STATUS_154 = 154; + case STATUS_155 = 155; + case STATUS_156 = 156; + case STATUS_157 = 157; + case STATUS_158 = 158; + case STATUS_159 = 159; + case STATUS_160 = 160; + case STATUS_161 = 161; + case STATUS_162 = 162; + case STATUS_163 = 163; + case STATUS_164 = 164; + case STATUS_165 = 165; + case STATUS_166 = 166; + case STATUS_167 = 167; + case STATUS_168 = 168; + case STATUS_169 = 169; + case STATUS_170 = 170; + case STATUS_171 = 171; + case STATUS_172 = 172; + case STATUS_173 = 173; + case STATUS_174 = 174; + case STATUS_175 = 175; + case STATUS_176 = 176; + case STATUS_177 = 177; + case STATUS_178 = 178; + case STATUS_179 = 179; + case STATUS_180 = 180; + case STATUS_181 = 181; + case STATUS_182 = 182; + case STATUS_183 = 183; + case STATUS_184 = 184; + case STATUS_185 = 185; + case STATUS_186 = 186; + case STATUS_187 = 187; + case STATUS_188 = 188; + case STATUS_189 = 189; + case STATUS_190 = 190; + case STATUS_191 = 191; + case STATUS_192 = 192; + case STATUS_193 = 193; + case STATUS_194 = 194; + case STATUS_195 = 195; + case STATUS_196 = 196; + case STATUS_197 = 197; + case STATUS_198 = 198; + case STATUS_199 = 199; + case STATUS_200 = 200; + case STATUS_201 = 201; + case STATUS_202 = 202; + case STATUS_203 = 203; + case STATUS_204 = 204; + case STATUS_205 = 205; + case STATUS_206 = 206; + case STATUS_207 = 207; + case STATUS_208 = 208; + case STATUS_209 = 209; + case STATUS_210 = 210; + case STATUS_211 = 211; + case STATUS_212 = 212; + case STATUS_213 = 213; + case STATUS_214 = 214; + case STATUS_215 = 215; + case STATUS_216 = 216; + case STATUS_217 = 217; + case STATUS_218 = 218; + case STATUS_219 = 219; + case STATUS_220 = 220; + case STATUS_221 = 221; + case STATUS_222 = 222; + case STATUS_223 = 223; + case STATUS_224 = 224; + case STATUS_225 = 225; + case STATUS_226 = 226; + case STATUS_227 = 227; + case STATUS_228 = 228; + case STATUS_229 = 229; + case STATUS_230 = 230; + case STATUS_231 = 231; + case STATUS_232 = 232; + case STATUS_233 = 233; + case STATUS_234 = 234; + case STATUS_235 = 235; + case STATUS_236 = 236; + case STATUS_237 = 237; + case STATUS_238 = 238; + case STATUS_239 = 239; + case STATUS_240 = 240; + case STATUS_241 = 241; + case STATUS_242 = 242; + case STATUS_243 = 243; + case STATUS_244 = 244; + case STATUS_245 = 245; + case STATUS_246 = 246; + case STATUS_247 = 247; + case STATUS_248 = 248; + case STATUS_249 = 249; + case STATUS_250 = 250; + case STATUS_251 = 251; + case STATUS_252 = 252; + case STATUS_253 = 253; + case STATUS_254 = 254; + case STATUS_255 = 255; } diff --git a/src/Tempest/Console/src/InvalidExitCode.php b/src/Tempest/Console/src/InvalidExitCode.php new file mode 100644 index 000000000..4e866cbbc --- /dev/null +++ b/src/Tempest/Console/src/InvalidExitCode.php @@ -0,0 +1,15 @@ +