|
@@ -6,6 +6,7 @@ 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
|
|
@@ -13,10 +14,28 @@ module Mastodon
|
|
|
|
|
|
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
|
|
|
- Chewy::RakeHelper.sync(except: processed)
|
|
|
+ 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
|