VALIDATE
Valida la estructura e integridad de un archivo de intercambio.
Sintaxis
$ cardak help validate
usage: cardak validate [<flags>] <files>...
Validate the IPM files
Flags:
--help Show context-sensitive help (also try --help-long and --help-man).
-v, --verbose Add more information displayed on some commands.
--mono Supress color on output.
--ignore Try to ignore some errors and continue processing the file
-W, --width Ignore small terminal width check and force execution
-z, --silent Suppress all output (banner, headers, summary) except the results. Specially useful for DESCRIBE command piped to a search
utility like fzf
-T, --file-type=FILE-TYPE Filter by file type when supplying several files. File types are represented by a single letter as: I-IPM files, M-MPE files
--mcc Check that MCC values are valid (incomplete list, use with caution)
--fail Just display the list of file names that have errors
--pass Just display the list of file names that don't have errors
Args:
<files> List of files to validate.
Descripción
Este comando hace una verificación de la integridad y correctitud de los datos contenidos en un archivo IPM. Es una versión mas avanzada al comando IDENTIFY cuando se usa con el flag --analyze, y esta pensado para ser utilizado en cadenas de automatización para hacer una verificación de integridad.
El comando analiza los archivos indicados y presenta los resultados de cada uno de los archivos, indicando la validación como PASS o FAIL. Además se devuelve al sistema operativo un código que es cero si todos los archivos pasan la prueba correctamente, o con valor 1 si alguno de los archivos contiene errores, lo que facilita la integración a sistemas automatizados.
También se muestra si los errores encontrados pueden ser corregidos automáticamente (con el comando FIX por ejemplo) o no, ademas de mostrar la cantidad de registros que contienen errores.
Ejemplo:

Flags disponibles
--silent (-z)
Podemos utilizar el flag global --silent (-z) para tener una salida compacta que es útil para ser analizada por procesos externos.

La salida consiste en una lista separada por comas para cada archivo, donde se muestran el estado, nombre del archivo, cantidad de registros con errores y un indicador de si el problema puede ser corregido automáticamente o no.
--pass
Si usamos este flag, solamente se va a incluir en la salida la lista de archivos que no tienen errores.
--fail
Este flag es lo contrario al anterior, y solamente muestra la lista de archivos que contienen errores.
Estos flags pueden ser útiles en sistemas de automatización para tomar acciones como mover archivos a diferentes carpetas o enviar alertas dependiendo de si contienen o no errores.
Ejemplo:

--mcc
Este flag es experimental y todavía presenta falsos positivos. La idea es verificar que el valor de los MCC que están presentes sean válidos.
El problema es que la lista de valores correctos puede variar y todavía no está implementada la funcionalidad de poder cargar listas actualizadas de valores, por ejemplo procesando un archivo MPE. Pero puede servir para mostrar los valores sospechosos y decidir si son válidos o no.
Por ejemplo:

--verbose
Si queremos ver más detalles sobre los errores encontrados, podemos usar este flag que nos presentará un detalle de esos errores, mostrando el número de registro, descripción del error y si es posible o no corregirlo automáticamente.
