func()

in scan/context.go [49:79]


func (s *Scanner) getContext(ctx context.Context, scContext string) (workingDir string, err error) {
	isSourceControlURL := util.IsSourceControlURL(scContext)
	isURL := util.IsURL(scContext)
	isRegistryArtifact := util.IsRegistryArtifact(scContext)

	// If the context is remote, make the destination folder to clone or untar into.
	if isSourceControlURL || isURL || isRegistryArtifact {
		if _, err := os.Stat(s.destinationFolder); os.IsNotExist(err) {
			// Creates the destination folder if necessary, granting full permissions to the owner.
			if innerErr := os.Mkdir(s.destinationFolder, 0700); innerErr != nil {
				return scContext, innerErr
			}
		}
	}

	if isSourceControlURL {
		fmt.Println("Getting context from Git URL")
		workingDir, err := s.getContextFromGitURL(scContext)
		return workingDir, err
	} else if isURL {
		fmt.Println("Getting context from URL")
		err := s.getContextFromURL(scContext)
		return s.destinationFolder, err
	} else if isRegistryArtifact {
		fmt.Println("Getting context from registry")
		err := s.getContextFromRegistry(ctx, util.TrimArtifactPrefix(scContext))
		return s.destinationFolder, err
	}

	return scContext, nil
}