(value: string | boolean, type: T)
| 108 | // this is coming from `mri`'s parse function'), to the correct type based on |
| 109 | // the `type` of the argument. |
| 110 | function convert<T extends keyof Types>(value: string | boolean, type: T) { |
| 111 | switch (type) { |
| 112 | case 'string': |
| 113 | return convertString(value) |
| 114 | case 'boolean': |
| 115 | return convertBoolean(value) |
| 116 | case 'number': |
| 117 | return convertNumber(value) |
| 118 | case 'boolean | string': |
| 119 | return convertBoolean(value) ?? convertString(value) |
| 120 | case 'number | string': |
| 121 | return convertNumber(value) ?? convertString(value) |
| 122 | case 'boolean | number': |
| 123 | return convertBoolean(value) ?? convertNumber(value) |
| 124 | case 'boolean | number | string': |
| 125 | return convertBoolean(value) ?? convertNumber(value) ?? convertString(value) |
| 126 | default: |
| 127 | throw new Error(`Unhandled type: ${type}`) |
| 128 | } |
| 129 | } |
| 130 | |
| 131 | function convertBoolean(value: ArgumentType) { |
| 132 | if (value === true || value === false) { |
no test coverage detected