require_relative 'mastodon/emoji_cli'
require_relative 'mastodon/accounts_cli'
require_relative 'mastodon/feeds_cli'
+require_relative 'mastodon/search_cli'
require_relative 'mastodon/settings_cli'
require_relative 'mastodon/statuses_cli'
require_relative 'mastodon/domains_cli'
desc 'feeds SUBCOMMAND ...ARGS', 'Manage feeds'
subcommand 'feeds', Mastodon::FeedsCLI
+ desc 'search SUBCOMMAND ...ARGS', 'Manage the search engine'
+ subcommand 'search', Mastodon::SearchCLI
+
desc 'settings SUBCOMMAND ...ARGS', 'Manage dynamic settings'
subcommand 'settings', Mastodon::SettingsCLI
--- /dev/null
+# frozen_string_literal: true
+
+require_relative '../../config/boot'
+require_relative '../../config/environment'
+require_relative 'cli_helper'
+
+module Mastodon
+ class SearchCLI < Thor
+ 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.
+ LONG_DESC
+ def deploy
+ processed = Chewy::RakeHelper.upgrade
+ Chewy::RakeHelper.sync(except: processed)
+ end
+ end
+end