# USM Manifest Validate Command ## Overview The `usm manifest validate` command performs comprehensive validation of USM packages by building and installing them in a temporary environment, then verifying that all declared resources are present and correctly located. ## Usage ```bash usm manifest validate [build path] ``` ### Parameters - **build path** (optional): Directory where the package will be built. If not specified, a temporary directory will be created automatically. ## Validation Process The validate command performs the following checks in sequence: 1. **Manifest Validation**: Verifies that MANIFEST.usm can be read and parsed correctly 2. **Dependency Check**: Ensures all required dependencies are available 3. **License Check**: Warns if no license has been provided 4. **Build Execution**: Runs the build script with progress reporting 5. **Install Execution**: Runs the install script to a temporary directory 6. **Resource Validation**: Verifies all declared resources exist at their expected locations 7. **Unexpected Resource Detection**: Warns about resources found in install directory but not declared ## Resource Validation The command validates each resource based on its path base type: - **as-expected**: Checks if the file exists at the expected location in the install directory - **build:**: Checks if the file exists at the specified path in the build directory - **source:**: Checks if the file exists at the specified path in the source directory - **install:**: Checks if the file exists at the specified path in the install directory ## Exit Codes - **0**: Validation completed successfully - **247**: Error validating installation result - **248**: Expected resources not found - **249**: Error running install exec - **250**: Could not create temporary install directory - **251**: Error running build exec - **252**: Missing dependencies - **253**: Could not read MANIFEST.usm - **254**: No MANIFEST.usm file found - **255**: Could not create temporary build directory ## Examples ### Basic validation with automatic temporary directory: ```bash usm manifest validate ``` ### Validation with specified build directory: ```bash usm manifest validate /tmp/usm-build ``` ## Output The command provides detailed feedback about: - Missing dependencies - License warnings - Build progress - Missing expected resources with location details - Unexpected resources found in install directory - Final validation status ## Integration with CI/CD The validate command is designed for use in continuous integration environments: - Non-zero exit codes indicate validation failures - Detailed error messages help identify issues quickly - Progress reporting works well with CI logging systems - Temporary directory cleanup ensures no side effects ## Comparison with Other Commands - **autoprovides**: Scans and generates the provides section, while validate checks if existing provides are correct - **test**: Runs package tests, while validate verifies the package structure and resources - **install**: Installs to the system, while validate installs to a temporary directory for verification only