package hyperone import ( "context" "fmt" "github.com/hashicorp/packer/helper/multistep" "github.com/hashicorp/packer/packer" ) type stepMountExtra struct{} func (s *stepMountExtra) Run(ctx context.Context, state multistep.StateBag) multistep.StepAction { config := state.Get("config").(*Config) mountPath := state.Get("mount_path").(string) ui := state.Get("ui").(packer.Ui) ui.Say("Mounting additional paths within the chroot...") for _, mountInfo := range config.ChrootMounts { innerPath := mountPath + mountInfo[2] flags := "-t " + mountInfo[0] if mountInfo[0] == "bind" { flags = "--bind" } ui.Message(fmt.Sprintf("Mounting: %s", mountInfo[2])) commands := []string{ fmt.Sprintf("mkdir -m 755 -p %s", innerPath), fmt.Sprintf("mount %s %s %s", flags, mountInfo[1], innerPath), } err := runCommands(commands, config.ctx, state) if err != nil { state.Put("error", err) ui.Error(err.Error()) return multistep.ActionHalt } } return multistep.ActionContinue } func (s *stepMountExtra) Cleanup(state multistep.StateBag) {}