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 }