func LoaderForBinary()

in plugin/step/install/linux/apt/apt.go [128:169]


func LoaderForBinary(binary string) go2chef.StepLoader {
	return func(config map[string]interface{}) (go2chef.Step, error) {
		step := &Step{
			StepName:                "",
			APTBinary:               "/usr/bin/" + binary,
			DPKGBinary:              "/usr/bin/dpkg-query",
			PackageName:             DefaultPackageName,
			DpkgCheckTimeoutSeconds: 60,
			InstallTimeoutSeconds:   300,
			logger:                  go2chef.GetGlobalLogger(),
			source:                  nil,
			downloadPath:            "",
		}

		if err := mapstructure.Decode(config, step); err != nil {
			return nil, err
		}

		source, err := go2chef.GetSourceFromStepConfig(config)
		if err != nil {
			return nil, err
		}
		step.source = source

		reStr := fmt.Sprintf("^%s.*.deb$", step.PackageName)
		regex, err := regexp.Compile(reStr)
		if err != nil {
			step.logger.Errorf("failed to compile package matching regex %s", reStr)
			return nil, err
		}
		step.packageRegex = regex

		vreStr := fmt.Sprintf("^%s\t%s.*", step.PackageName, step.Version)
		vRegex, err := regexp.Compile(vreStr)
		if err != nil {
			step.logger.Errorf("failed to compile package version match regex %s", vreStr)
		}
		step.packageVersionRegex = vRegex

		return step, nil
	}
}