code: func NewInstaller(image string, scriptsURL string, proxyConfig *api.ProxyConfig, docker docker.Docker, auth api.AuthConfig, fs fs.FileSystem) Installer {
  	m := DefaultScriptSourceManager{
  		Image:      image,
  		ScriptsURL: scriptsURL,
  		dockerAuth: auth,
  		docker:     docker,
  		fs:         fs,
  		download:   NewDownloader(proxyConfig),
  	}
  	// Order is important here, first we try to get the scripts from provided URL,
  	// then we look into sources and check for .s2i/bin scripts.
  	if len(m.ScriptsURL) > 0 {
  		m.Add(&URLScriptHandler{URL: m.ScriptsURL, Download: m.download, FS: m.fs, Name: ScriptURLHandler})
  	}
  
  	m.Add(&SourceScriptHandler{fs: m.fs})
  
  	if m.docker != nil {
  		// If the detection handlers above fail, try to get the script url from the
  		// docker image itself.
  		defaultURL, err := m.docker.GetScriptsURL(m.Image)
  		if err == nil && defaultURL != "" {
  			m.Add(&URLScriptHandler{URL: defaultURL, Download: m.download, FS: m.fs, Name: ImageURLHandler})
  		}
  	}
  	return &m
  }
docs: // NewInstaller returns a new instance of the default Installer implementation