func LoaderForBinary()

in plugin/step/install/linux/dnf/dnf.go [137:181]


func LoaderForBinary(binary string) go2chef.StepLoader {
	return func(config map[string]interface{}) (go2chef.Step, error) {
		step := &Step{
			StepName:               "",
			DNFBinary:              "/usr/bin/" + binary,
			RPMBinary:              "/usr/bin/rpm",
			PackageName:            DefaultPackageName,
			RPMCheckTimeoutSeconds: 60,
			InstallTimeoutSeconds:  300,

			installWithRPM: binary == "rpm",

			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-.*.rpm$", 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-%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
	}
}