Ejemplo n.º 1
0
func ReadBuildInfoFiles(buildName, buildNumber string) (BuildInfo, error) {
	var buildInfo []*ArtifactBuildInfoWrapper
	path, err := GetBuildDir(buildName, buildNumber)
	if err != nil {
		return nil, err
	}
	buildFiles, err := ioutils.ListFiles(path)
	if err != nil {
		return nil, err
	}
	for _, buildFile := range buildFiles {
		dir, err := ioutils.IsDir(buildFile)
		if err != nil {
			return nil, err
		}
		if dir {
			continue
		}
		if strings.HasSuffix(buildFile, BUILD_INFO_DETAILS) {
			continue
		}
		content, err := ioutils.ReadFile(buildFile)
		if err != nil {
			return nil, err
		}
		atifactBuildInfoWrapper := new(ArtifactBuildInfoWrapper)
		json.Unmarshal(content, &atifactBuildInfoWrapper)
		buildInfo = append(buildInfo, atifactBuildInfoWrapper)
	}

	return buildInfo, nil
}
Ejemplo n.º 2
0
func getFilesToUpload(localPath, targetPath, packageName string, flags *UploadFlags) ([]cliutils.Artifact, error) {
	var debianDefaultPath string
	if targetPath == "" && flags.Deb != "" {
		debianDefaultPath = getDebianDefaultPath(flags.Deb, packageName)
	}

	rootPath := cliutils.GetRootPathForUpload(localPath, flags.UseRegExp)
	if !ioutils.IsPathExists(rootPath) {
		err := cliutils.CheckError(errors.New("Path does not exist: " + rootPath))
		if err != nil {
			return nil, err
		}
	}
	localPath = cliutils.PrepareLocalPathForUpload(localPath, flags.UseRegExp)

	artifacts := []cliutils.Artifact{}
	// If the path is a single file then return it
	dir, err := ioutils.IsDir(rootPath)
	if err != nil {
		return nil, err
	}

	if !dir {
		artifact := getSingleFileToUpload(rootPath, targetPath, debianDefaultPath, flags.Flat)
		return append(artifacts, artifact), nil
	}

	r, err := regexp.Compile(localPath)
	err = cliutils.CheckError(err)
	if err != nil {
		return nil, err
	}

	spinner := cliutils.NewSpinner("[Info] Collecting files for upload:", time.Second)
	spinner.Start()
	var paths []string
	if flags.Recursive {
		paths, err = ioutils.ListFilesRecursive(rootPath)
	} else {
		paths, err = ioutils.ListFiles(rootPath)
	}
	if err != nil {
		return nil, err
	}

	for _, path := range paths {
		dir, err := ioutils.IsDir(path)
		if err != nil {
			return nil, err
		}
		if dir {
			continue
		}

		groups := r.FindStringSubmatch(path)
		size := len(groups)
		target := targetPath

		if size > 0 {
			for i := 1; i < size; i++ {
				group := strings.Replace(groups[i], "\\", "/", -1)
				target = strings.Replace(target, "{"+strconv.Itoa(i)+"}", group, -1)
			}

			if target == "" || strings.HasSuffix(target, "/") {
				if target == "" {
					target = debianDefaultPath
				}
				if flags.Flat {
					fileName, _ := ioutils.GetFileAndDirFromPath(path)
					target += fileName
				} else {
					uploadPath := cliutils.TrimPath(path)
					target += uploadPath
				}
			}

			artifacts = append(artifacts, cliutils.Artifact{path, target})
		}
	}
	spinner.Stop()
	return artifacts, nil
}