in cmd/zoekt-archive-index/main.go [117:194]
func do(opts Options, bopts build.Options) error {
opts.SetDefaults()
if opts.Name == "" && opts.RepoURL == "" {
return errors.New("-name or -url required")
}
if opts.Branch == "" {
return errors.New("-branch required")
}
if opts.Name != "" {
bopts.RepositoryDescription.Name = opts.Name
}
if opts.RepoURL != "" {
u, err := url.Parse(opts.RepoURL)
if err != nil {
return err
}
if err := gitindex.SetTemplatesFromOrigin(&bopts.RepositoryDescription, u); err != nil {
return err
}
}
bopts.SetDefaults()
bopts.RepositoryDescription.Branches = []zoekt.RepositoryBranch{{Name: opts.Branch, Version: opts.Commit}}
brs := []string{opts.Branch}
if opts.Incremental && bopts.IncrementalSkipIndexing() {
return nil
}
a, err := openArchive(opts.Archive)
if err != nil {
return err
}
defer a.Close()
bopts.RepositoryDescription.Source = opts.Archive
builder, err := build.NewBuilder(bopts)
if err != nil {
return err
}
add := func(f *File) error {
defer f.Close()
contents, err := ioutil.ReadAll(f)
if err != nil {
return err
}
name := stripComponents(f.Name, opts.Strip)
if name == "" {
return nil
}
return builder.Add(zoekt.Document{
Name: name,
Content: contents,
Branches: brs,
})
}
for {
f, err := a.Next()
if err == io.EOF {
break
}
if err != nil {
return err
}
if err := add(f); err != nil {
return err
}
}
return builder.Finish()
}