- # frozen_string_literal: true
-
- require_relative '../../config/boot'
- require_relative '../../config/environment'
- require_relative 'cli_helper'
-
- module Mastodon
- class SearchCLI < Thor
- option :processes, default: 2, aliases: [:p]
- desc 'deploy', 'Create or update an ElasticSearch index and populate it'
- long_desc <<~LONG_DESC
- If ElasticSearch is empty, this command will create the necessary indices
- and then import data from the database into those indices.
-
- This command will also upgrade indices if the underlying schema has been
- changed since the last run.
-
- With the --processes option, parallelize execution of the command. The
- default is 2. If "auto" is specified, the number is automatically
- derived from available CPUs.
- LONG_DESC
- def deploy
- processed = Chewy::RakeHelper.upgrade(parallel: processes)
- Chewy::RakeHelper.sync(except: processed, parallel: processes)
- end
-
- private
-
- def processes
- return true if options[:processes] == 'auto'
-
- num = options[:processes].to_i
-
- if num < 2
- nil
- else
- num
- end
- end
- end
- end
|