A command-line tool for validating input values against specified rules.
valid is a lightweight and flexible tool that validates input values based on character sets, ranges, formats, and custom rules.
It helps ensure data correctness and integrity.
Supported validation rules include:
- Character sets: Restricts input to specific character sets, such as ASCII, digits, or alphanumeric characters.
- Ranges: Ensures values fall within specified numerical, length, or date ranges.
- Formats: Checks if input matches formats, such as timestamps, URLs, or semantic versions.
- Custom rules: Matches user-defined rules like enumerations or regular expressions.
valid simplifies validation in scripts, workflows, and applications.
Use the --value flag to specify the input to validate. For example:
If the input meets all specified rules, the command exits successfully with no output:
valid --value 1234567890 --digit --min-length 10In this case:
- The exit code is
0(indicating success). - No error message or output is displayed.
To confirm the exit code, run:
$ valid --value 1234567890 --digit --min-length 10
$ echo $?
0If the input does not meet the specified rules, the command fails with a non-zero exit code and an error message.
For example, the following command fails because "invalid" does not meet the specified rules (--digit and --min-length 10):
valid --value invalid --digit --min-length 10This command fails with a non-zero exit code, displaying an error message:
Error: Validation error: The specified value "invalid" is invalid. Issues: the length must be no less than 10, must contain digits only.The following is the output of valid --help, showing all available flags and usage details.
Validates that input values meet specified rules
Usage:
valid [flags]
Flags:
--alpha validates that the value contains only English letters (a-zA-Z)
--alphanumeric validates that the value contains only English letters and digits (a-zA-Z0-9)
--ascii validates that the value contains only ASCII characters
--base64 validates that the value is a valid Base64 string
--digit validates that the value contains only digits (0-9)
--domain validates that the value is a valid domain
--email validates that the value is a valid email address
--enum string validates that the value matches one of the specified enumerations (comma-separated list)
--exact-length string validates that the length of value is exactly the specified number
--float validates that the value is a floating-point number
--format string specifies the output format (default, github-actions) (default "default")
-h, --help help for valid
--int validates that the value is an integer
--json validates that the value is a valid JSON string
--lower-case validates that the value contains only lowercase Unicode letters
--mask-value masks the value in error messages to protect sensitive data
--max string validates that the value is less than or equal to the specified maximum
--max-length string validates that the length of value is less than or equal to the specified maximum
--min string validates that the value is greater than or equal to the specified minimum
--min-length string validates that the length of value is greater than or equal to the specified minimum
--not-empty validates that the value is not empty
--pattern string validates that the value matches the specified regular expression
--printable-ascii validates that the value contains only printable ASCII characters
--semver validates that the value is a valid semantic version
--timestamp string validates that the value matches the timestamp format specified in the timestamp input (rfc3339, datetime, date, or time)
--upper-case validates that the value contains only uppercase Unicode letters
--url validates that the value is a valid URL
--uuid validates that the value is a valid UUID
--value string the value to validate against the specified rules
--value-name string the name of the value to include in error messages
-v, --version version for validIf validation succeeds, the command exits with a status code of 0 and produces no output.
If validation fails, the command exits with a non-zero status code (1) and displays an error message.
This behavior follows standard CLI conventions.
Since valid returns 0 on success and a non-zero exit code on failure,
you can use it in shell scripts as follows:
if valid --value 12345 --digit --min-length 10; then
echo "Validation passed"
else
echo "Validation failed"
fiThis is useful in automation, CI/CD pipelines, or when enforcing validation rules in deployment scripts.
All specified rules are evaluated independently, and the value must satisfy all of them to be considered valid.
For example, if you specify --digit and --min-length 10, the value must consist only of digits (0-9) and have a length of at least 10 characters.
Validation rules do not have a fixed evaluation order. If multiple rules are not met, all relevant errors will be included in the final error message, but their order is not guaranteed.
Yes, use the --value-name flag to specify a custom name for the validated value.
Standard error message:
Error: Validation error: The specified value "example" is invalid. Issues: must contain digits only.Customized error message:
Error: Validation error: The specified account-id "example" is invalid. Issues: must contain digits only.This replaces "value" in error messages, making it easier to identify which input caused the issue when validating multiple values in the same script or workflow.
Yes, use the --mask-value to obscure the input as ***.
Standard error message:
Error: Validation error: The specified value "example" is invalid. Issues: must contain English letters only.Customized error message:
Error: Validation error: The specified value "***" is invalid. Issues: must contain English letters only.This is useful in CI/CD environments, where it prevents sensitive data, such as tokens or API keys, from being exposed in logs.
No, you cannot specify a fully custom error message.
The error message format is predefined.
However, you can modify certain parts, such as changing the value name with --value-name or masking sensitive data with --mask-value.
While these options allow for some customization, the overall structure and wording of the error message remain unchanged.
If no validation rules are provided, the command completes successfully without validation. No errors or warnings are generated.
This behavior is intentional for now but may change in the future. Be mindful of this to avoid unintentionally skipping validation.
- validation-action: Composite Action for validating input values against specified rules.
- This action internally uses
validto perform input validation.
- This action internally uses