Esempio n. 1
0
func (git Git) Extract(creativeWork *schema.CreativeWork, path string) error {
	if "" == gitPath {
		return nil
	}

	cmd := exec.Command(gitPath, "log", "--format=%an;%ae;%aI", path)
	stdout, err := cmd.StdoutPipe()
	if nil != err {
		return err
	}

	if err := cmd.Start(); err != nil {
		return err
	}

	scanner := bufio.NewScanner(stdout)
	for scanner.Scan() {
		parts := strings.Split(strings.TrimSpace(scanner.Text()), ";")

		author := schema.NewPerson(parts[0], parts[1])
		creativeWork.Author = append([]schema.Person{*author}, creativeWork.Author...)

		creativeWork.DateCreated = parts[2]
		if "" == creativeWork.DateModified {
			creativeWork.DateModified = parts[2]
		}
	}

	if err := scanner.Err(); err != nil {
		return err
	}

	if err := cmd.Wait(); err != nil {
		log.Fatalln("You are not in a git repository.")
		return err
	}

	return nil
}