• Wilken Rivera's avatar
    command/validate: Add support for HCL2 configuration files · f672f5bd
    Wilken Rivera authored
    * Update validate command to use FixConfig for checking against known
    fixers
    * Update validation command flag docs
    * Add ConfigFixer method to PackerHandler Interface
    * Implement ConfigFixer interface in PackerConfig
    * Remove all stdout messaging (i.e calls to c.Ui.Say) in the validate
    command. The command will only display hcl.Diagnotic messaging when there is an error or warning.
    
    HCL2 Configs
    ```
    ⇶  packer validate docker_centos_shell_provisioner.pkr.hcl
    
    ```
    
    JSON Configs
    ```
    ⇶  packer validate vmware-iso_ubuntu_minimal/vmware-iso_ubuntu_minimal.json
    Error: Failed to prepare build: "vmware-iso"
    
    1 error occurred:
            * Deprecated configuration key: 'iso_checksum_type'. Please call `packer fix`
    against your template to update your template to be compatable with the current
    version of Packer. Visit https://www.packer.io/docs/commands/fix/ for more
    detail.
    
    Warning: Fixable configuration found.
    You may need to run `packer fix` to get your build to run correctly.
    See debug log for more information.
    
      map[string]interface{}{
            "builders": []interface{}{
                    map[string]interface{}{
                            ... // 3 identical entries
                            "guest_os_type":     string("ubuntu-64"),
                            "http_directory":    string("http"),
    -                       "iso_checksum":
    string("946a6077af6f5f95a51f82fdc44051c7aa19f9cfc5f737954845a6050543d7c2"),
    +                       "iso_checksum":
    string("sha256:946a6077af6f5f95a51f82fdc44051c7aa19f9cfc5f737954845a6050543d7c2"),
    -                       "iso_checksum_type": string("sha256"),
                            "iso_url":
    string("http://old-releases.ubuntu.com/releases/14.04.1/ubuntu-14.04.1-server-amd64.iso"),
                            "shutdown_command":  string("echo 'vagrant' | sudo -S shutdown -P now"),
                            ... // 4 identical entries
                    },
            },
      }
    ```
    f672f5bd