Files
obitools4/cmd/obitools/obifind/main.go

68 lines
1.5 KiB
Go
Raw Normal View History

2022-01-13 23:27:39 +01:00
package main
import (
2024-11-24 19:33:24 +01:00
"log"
2022-01-13 23:27:39 +01:00
"os"
2024-11-24 19:33:24 +01:00
"git.metabarcoding.org/obitools/obitools4/obitools4/pkg/obiiter"
"git.metabarcoding.org/obitools/obitools4/obitools4/pkg/obioptions"
2024-11-16 10:01:07 +01:00
"git.metabarcoding.org/obitools/obitools4/obitools4/pkg/obitax"
"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
_, args := optionParser(os.Args)
2022-01-13 23:27:39 +01:00
2024-11-24 19:33:24 +01:00
var iterator *obitax.ITaxon
2022-01-13 23:27:39 +01:00
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 {
2024-11-24 19:33:24 +01:00
log.Fatalf("Cannot identify the requested taxon: %s",
obifind.CLIRequestsPathForTaxid())
2022-01-13 23:27:39 +01:00
}
2024-11-14 19:10:23 +01:00
s := taxon.Path()
2022-01-13 23:27:39 +01:00
2024-11-24 19:33:24 +01:00
if s == nil {
log.Fatalf("Cannot extract taxonomic path describing %s", taxon.String())
2022-01-13 23:27:39 +01:00
}
2024-11-24 19:33:24 +01:00
iterator = s.Iterator()
2022-01-13 23:27:39 +01:00
2024-11-24 19:33:24 +01:00
if obifind.CLIWithQuery() {
iterator = iterator.AddMetadata("query", taxon.String())
}
2022-01-13 23:27:39 +01:00
2024-11-24 19:33:24 +01:00
case len(args) == 0:
iterator = obitax.DefaultTaxonomy().Iterator()
2022-01-13 23:27:39 +01:00
default:
2024-11-24 19:33:24 +01:00
iters := make([]*obitax.ITaxon, len(args))
for i, pat := range args {
ii := obitax.DefaultTaxonomy().IFilterOnName(pat, obifind.CLIFixedPattern(), true)
if obifind.CLIWithQuery() {
ii = ii.AddMetadata("query", pat)
}
iters[i] = ii
2022-01-13 23:27:39 +01:00
}
2024-11-24 19:33:24 +01:00
iterator = iters[0]
if len(iters) > 1 {
iterator = iterator.Concat(iters[1:]...)
2022-01-13 23:27:39 +01:00
}
}
2024-11-24 19:33:24 +01:00
iterator = obifind.CLITaxonRestrictions(iterator)
obifind.CLICSVTaxaWriter(iterator, true)
obiiter.WaitForLastPipe()
2022-01-13 23:27:39 +01:00
}