diff options
Diffstat (limited to 'internal/search/indexer.go')
-rw-r--r-- | internal/search/indexer.go | 29 |
1 files changed, 23 insertions, 6 deletions
diff --git a/internal/search/indexer.go b/internal/search/indexer.go index fc0214b..ad891ff 100644 --- a/internal/search/indexer.go +++ b/internal/search/indexer.go @@ -29,19 +29,33 @@ type WriteIndex struct { indexMapping *mapping.IndexMappingImpl } -func NewIndexer(dir string, force bool) (*WriteIndex, error) { +const ExpectedIndexExtension = ".bleve" + +func NewIndexer(indexPath string, force bool) (*WriteIndex, error) { var err error bleve.SetLog(log.Default()) - indexPath := path.Join(dir, indexFilename) - exists, err := file.Exists(indexPath) if err != nil { - return nil, errors.WithMessagef(err, "could not check if index exists at path %s", indexPath) + return nil, errors.WithMessagef( + err, + "could not check if index exists at path %s", + indexPath, + ) } if exists { if !force { - return nil, errors.Errorf("index file %s already exists (use --force to replace)", indexPath) + return nil, errors.Errorf( + "index file %s already exists (use --force to replace)", + indexPath, + ) + } + if path.Ext(indexPath) != ExpectedIndexExtension { + return nil, errors.Errorf( + "cowardly refusing to delete path %s (it doesn't end in '%s')", + indexPath, + ExpectedIndexExtension, + ) } err := os.RemoveAll(indexPath) if err != nil { @@ -130,7 +144,10 @@ func NewIndexer(dir string, force bool) (*WriteIndex, error) { }, nil } -func (i *WriteIndex) ImportOptions(ctx context.Context, objects <-chan *options.NixOption) <-chan error { +func (i *WriteIndex) ImportOptions( + ctx context.Context, + objects <-chan *options.NixOption, +) <-chan error { var err error errs := make(chan error) |