2022-01-13 23:27:39 +01:00
|
|
|
package main
|
|
|
|
|
|
|
|
import (
|
|
|
|
"fmt"
|
|
|
|
"os"
|
|
|
|
|
2023-11-29 12:14:37 +01:00
|
|
|
"git.metabarcoding.org/obitools/obitools4/obitools4/pkg/obioptions"
|
2024-11-16 10:01:07 +01:00
|
|
|
"git.metabarcoding.org/obitools/obitools4/obitools4/pkg/obitax"
|
2023-11-29 12:14:37 +01:00
|
|
|
"git.metabarcoding.org/obitools/obitools4/obitools4/pkg/obitools/obifind"
|
2022-01-13 23:27:39 +01:00
|
|
|
)
|
|
|
|
|
|
|
|
func main() {
|
2022-01-14 15:16:41 +01:00
|
|
|
optionParser := obioptions.GenerateOptionParser(obifind.OptionSet)
|
2022-01-13 23:27:39 +01:00
|
|
|
|
2023-03-07 11:06:08 +07:00
|
|
|
_, args := optionParser(os.Args)
|
2022-01-13 23:27:39 +01:00
|
|
|
|
|
|
|
//prof, _ := os.Create("obifind.prof")
|
|
|
|
//pprof.StartCPUProfile(prof)
|
|
|
|
|
|
|
|
restrictions, err := obifind.ITaxonRestrictions()
|
|
|
|
if err != nil {
|
|
|
|
fmt.Printf("%+v", err)
|
|
|
|
}
|
|
|
|
|
|
|
|
switch {
|
2024-11-14 19:10:23 +01:00
|
|
|
case obifind.CLIRequestsPathForTaxid() != "NA":
|
2022-01-13 23:27:39 +01:00
|
|
|
|
2024-11-16 10:01:07 +01:00
|
|
|
taxon := obitax.DefaultTaxonomy().Taxon(obifind.CLIRequestsPathForTaxid())
|
2022-01-13 23:27:39 +01:00
|
|
|
|
2024-11-14 19:10:23 +01:00
|
|
|
if taxon == nil {
|
2022-01-13 23:27:39 +01:00
|
|
|
fmt.Printf("%+v", err)
|
|
|
|
}
|
|
|
|
|
2024-11-14 19:10:23 +01:00
|
|
|
s := taxon.Path()
|
2022-01-13 23:27:39 +01:00
|
|
|
|
|
|
|
if err != nil {
|
|
|
|
fmt.Printf("%+v", err)
|
|
|
|
}
|
|
|
|
|
|
|
|
obifind.TaxonWriter(s.Iterator(),
|
2024-11-14 19:10:23 +01:00
|
|
|
fmt.Sprintf("path:%s", taxon.String()))
|
2022-01-13 23:27:39 +01:00
|
|
|
|
|
|
|
case len(args) == 0:
|
2024-11-16 10:01:07 +01:00
|
|
|
taxonomy := obitax.DefaultTaxonomy()
|
2022-01-13 23:27:39 +01:00
|
|
|
obifind.TaxonWriter(restrictions(taxonomy.Iterator()), "")
|
|
|
|
|
|
|
|
default:
|
|
|
|
matcher, err := obifind.ITaxonNameMatcher()
|
|
|
|
|
|
|
|
if err != nil {
|
|
|
|
fmt.Printf("%+v", err)
|
|
|
|
}
|
|
|
|
|
|
|
|
for _, pattern := range args {
|
|
|
|
s := restrictions(matcher(pattern))
|
|
|
|
obifind.TaxonWriter(s, pattern)
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
//pprof.StopCPUProfile()
|
|
|
|
}
|