package libraries import ( "github.com/databricks/cli/bundle" "github.com/databricks/databricks-sdk-go/service/jobs" ) func findAllTasks(b *bundle.Bundle) map[string]([]jobs.Task) { r := b.Config.Resources result := make(map[string]([]jobs.Task), 0) for k := range b.Config.Resources.Jobs { result[k] = append(result[k], r.Jobs[k].JobSettings.Tasks...) } return result } func FindAllEnvironments(b *bundle.Bundle) map[string]([]jobs.JobEnvironment) { jobEnvs := make(map[string]([]jobs.JobEnvironment), 0) for jobKey, job := range b.Config.Resources.Jobs { if len(job.Environments) == 0 { continue } jobEnvs[jobKey] = job.Environments } return jobEnvs } func isEnvsWithLocalLibraries(envs []jobs.JobEnvironment) bool { for _, e := range envs { if e.Spec == nil { continue } for _, l := range e.Spec.Dependencies { if IsLibraryLocal(l) { return true } } } return false } func FindTasksWithLocalLibraries(b *bundle.Bundle) []jobs.Task { tasks := findAllTasks(b) envs := FindAllEnvironments(b) allTasks := make([]jobs.Task, 0) for k, jobTasks := range tasks { for i := range jobTasks { task := jobTasks[i] if isTaskWithLocalLibraries(task) { allTasks = append(allTasks, task) } } if envs[k] != nil && isEnvsWithLocalLibraries(envs[k]) { allTasks = append(allTasks, jobTasks...) } } return allTasks } func isTaskWithLocalLibraries(task jobs.Task) bool { for _, l := range task.Libraries { if IsLibraryLocal(libraryPath(&l)) { return true } } return false } func IsTaskWithWorkspaceLibraries(task jobs.Task) bool { for _, l := range task.Libraries { if IsWorkspaceLibrary(&l) { return true } } return false }