Skip to content

Instantly share code, notes, and snippets.

@AnneTee
Last active June 29, 2021 19:32
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save AnneTee/13c0ba441bed8316ac4bdf531910fc05 to your computer and use it in GitHub Desktop.
Save AnneTee/13c0ba441bed8316ac4bdf531910fc05 to your computer and use it in GitHub Desktop.
# #!/usr/bin/env bash
# # After following the instructions in DEVELOPERS.md run this script to install dependencies relevant to MediaSearch
# set -eu
git clone https://gerrit.wikimedia.org/r/mediawiki/skins/Vector ./skins/Vector
git clone https://gerrit.wikimedia.org/r/mediawiki/skins/MinervaNeue ./skins/MinervaNeue
git clone https://gerrit.wikimedia.org/r/mediawiki/extensions/CirrusSearch ./extensions/CirrusSearch
git clone https://gerrit.wikimedia.org/r/mediawiki/extensions/CommonsMetadata ./extensions/CommonsMetadata
git clone https://gerrit.wikimedia.org/r/mediawiki/extensions/Elastica ./extensions/Elastica
git clone https://gerrit.wikimedia.org/r/mediawiki/extensions/EventBus ./extensions/EventBus
git clone https://gerrit.wikimedia.org/r/mediawiki/extensions/EventLogging ./extensions/EventLogging
git clone https://gerrit.wikimedia.org/r/mediawiki/extensions/EventStreamConfig ./extensions/EventStreamConfig
git clone https://gerrit.wikimedia.org/r/mediawiki/extensions/JsonConfig ./extensions/JsonConfig
git clone https://gerrit.wikimedia.org/r/mediawiki/extensions/MediaSearch ./extensions/MediaSearch
git clone https://gerrit.wikimedia.org/r/mediawiki/extensions/MobileFrontend ./extensions/MobileFrontend
git clone https://gerrit.wikimedia.org/r/mediawiki/extensions/ParserFunctions ./extensions/ParserFunctions
git clone https://gerrit.wikimedia.org/r/mediawiki/extensions/Scribunto ./extensions/Scribunto
git clone https://gerrit.wikimedia.org/r/mediawiki/extensions/TemplateData ./extensions/TemplateData
git clone https://gerrit.wikimedia.org/r/mediawiki/extensions/TemplateStyles ./extensions/TemplateStyles
git clone https://gerrit.wikimedia.org/r/mediawiki/extensions/UniversalLanguageSelector ./extensions/UniversalLanguageSelector
git clone https://gerrit.wikimedia.org/r/mediawiki/extensions/Wikibase ./extensions/Wikibase
git clone https://gerrit.wikimedia.org/r/mediawiki/extensions/WikibaseCirrusSearch ./extensions/WikibaseCirrusSearch
git clone https://gerrit.wikimedia.org/r/mediawiki/extensions/WikibaseMediaInfo ./extensions/WikibaseMediaInfo
# Save the default settings from the Mediawiki installation to be added back later.
defaultSettings=`cat LocalSettings.php`
cat <<EOL >> LocalSettings.php
wfLoadSkin( 'Vector' );
wfLoadSkin( 'MinervaNeue' );
wfLoadExtension( 'CirrusSearch' );
wfLoadExtension( 'Elastica' );
wfLoadExtension( 'MobileFrontend' );
wfLoadExtension( 'UniversalLanguageSelector' );
\$wgDisableSearchUpdate = true;
require_once "\$IP/extensions/CirrusSearch/tests/jenkins/FullyFeaturedConfig.php";
\$wgCirrusSearchServers = [ "elasticsearch" ];
EOL
# Search
docker-compose exec mediawiki composer --working-dir=/var/www/html/w/extensions/Elastica install
docker-compose exec mediawiki composer --working-dir=/var/www/html/w/extensions/CirrusSearch install
docker-compose exec mediawiki php maintenance/update.php
# Configure the search index and populate it with content
docker-compose exec mediawiki php extensions/CirrusSearch/maintenance/UpdateSearchIndexConfig.php
echo "$defaultSettings" > LocalSettings.php
cat <<EOL >> LocalSettings.php
wfLoadSkin( 'Vector' );
wfLoadSkin( 'MinervaNeue' );
wfLoadExtension( 'CirrusSearch' );
wfLoadExtension( 'Elastica' );
wfLoadExtension( 'MobileFrontend' );
wfLoadExtension( 'UniversalLanguageSelector' );
require_once "\$IP/extensions/CirrusSearch/tests/jenkins/FullyFeaturedConfig.php";
\$wgCirrusSearchServers = [ "elasticsearch" ];
EOL
docker-compose exec mediawiki php extensions/CirrusSearch/maintenance/ForceSearchIndex.php --skipLinks --indexOnSkip
docker-compose exec mediawiki php extensions/CirrusSearch/maintenance/ForceSearchIndex.php --skipParse
# Process the job queue. You need to do this any time you add/update content and want it updated in ElasticSearch
docker-compose exec mediawiki php maintenance/runJobs.php
cat <<EOL >> LocalSettings.php
\$wgSearchType = 'CirrusSearch';
EOL
# Wikibase
touch composer.local.json
cat > composer.local.json <<EOL
{
"extra": {
"merge-plugin": {
"include": [
"extensions/Wikibase/composer.json"
]
}
}
}
EOL
docker-compose exec mediawiki composer require wikimedia/composer-merge-plugin:1.4.1
docker-compose exec mediawiki php maintenance/update.php
# Create final LocalSettings file with default settings and (organized) custom settings.
echo "$defaultSettings" > LocalSettings.php
cat <<EOL >> LocalSettings.php
wfLoadSkin( 'Vector' );
wfLoadSkin( 'MinervaNeue' );
wfLoadExtension( 'CirrusSearch' );
wfLoadExtension( 'CommonsMetadata' );
wfLoadExtension( 'Elastica' );
wfLoadExtension( 'EventBus' );
wfLoadExtension( 'EventLogging' );
wfLoadExtension( 'EventStreamConfig' );
wfLoadExtension( 'JsonConfig' );
wfLoadExtension( 'MediaSearch' );
wfLoadExtension( 'MobileFrontend' );
wfLoadExtension( 'ParserFunctions' );
wfLoadExtension( 'Scribunto' );
wfLoadExtension( 'TemplateData' );
wfLoadExtension( 'TemplateStyles' );
wfLoadExtension( 'UniversalLanguageSelector' );
wfLoadExtension( 'WikibaseCirrusSearch' );
wfLoadExtension( 'WikibaseMediaInfo' );
\$wgUseInstantCommons = true;
\$wgEnableUploads = true;
\$wgUseImageMagick = true;
\$wgScribuntoDefaultEngine = 'luastandalone';
\$wgMediaViewerEnableByDefault = true;
\$wgPFEnableStringFunctions = true;
\$wgApiFrameOptions = 'SAMEORIGIN';
\$wgCacheDirectory = "\$IP/cache";
// Cirrus Search
require_once "\$IP/extensions/CirrusSearch/tests/jenkins/FullyFeaturedConfig.php";
\$wgCirrusSearchServers = [ "elasticsearch" ];
\$wgSearchType = 'CirrusSearch';
// Wikibase
\$wgEnableWikibaseRepo = true;
\$wgEnableWikibaseClient = true;
require_once "\$IP/extensions/Wikibase/repo/Wikibase.php";
require_once "\$IP/extensions/Wikibase/repo/ExampleSettings.php";
require_once "\$IP/extensions/Wikibase/client/WikibaseClient.php";
require_once "\$IP/extensions/Wikibase/client/ExampleSettings.php";
// WikibaseMediaInfo
\$wgMediaInfoEnableFilePageDepicts = true;
\$wgMediaInfoEnableOtherStatements = true;
\$wgMediaInfoShowQualifiers = true;
\$wgMediaInfoProperties = [
'depicts' => 'P1',
];
\$wgDepictsQualifierProperties = [
'depicts' => 'P1',
];
// MediaSearch
\$isLocalDev = true;
\$wgMediaSearchExternalSearchUri = \$isLocalDev ? 'https://commons.wikimedia.org/w/api.php' : '';
\$wgMediaSearchExternalEntitySearchBaseUri = \$isLocalDev ? 'https://www.wikidata.org/w/api.php' : '';
EOL
cd extensions/Wikibase
git submodule update --init --recursive
cd ../..
docker-compose exec mediawiki composer --working-dir=/var/www/html/w/extensions/WikibaseCirrusSearch install
docker-compose exec mediawiki php maintenance/update.php
docker-compose exec mediawiki php --working-dir=/var/www/html/w/extensions/Wikibase lib/maintenance/populateSitesTable.php
docker-compose exec mediawiki php --working-dir=/var/www/html/w/extensions/Wikibase repo/maintenance/rebuildItemsPerSite.php
docker-compose exec mediawiki php --working-dir=/var/www/html/w/extensions/Wikibase client/maintenance/populateInterwiki.php
# Other extensions
docker-compose exec mediawiki composer --working-dir=/var/www/html/w/extensions/CommonsMetadata install
docker-compose exec mediawiki composer --working-dir=/var/www/html/w/extensions/EventBus install
docker-compose exec mediawiki composer --working-dir=/var/www/html/w/extensions/EventLogging install
docker-compose exec mediawiki composer --working-dir=/var/www/html/w/extensions/EventStreamConfig install
docker-compose exec mediawiki composer --working-dir=/var/www/html/w/extensions/JsonConfig install
docker-compose exec mediawiki composer --working-dir=/var/www/html/w/extensions/MediaSearch install
docker-compose exec mediawiki composer --working-dir=/var/www/html/w/extensions/MobileFrontend install
docker-compose exec mediawiki composer --working-dir=/var/www/html/w/extensions/ParserFunctions install
docker-compose exec mediawiki composer --working-dir=/var/www/html/w/extensions/Scribunto install
docker-compose exec mediawiki composer --working-dir=/var/www/html/w/extensions/TemplateData install
docker-compose exec mediawiki composer --working-dir=/var/www/html/w/extensions/TemplateStyles install
docker-compose exec mediawiki composer --working-dir=/var/www/html/w/extensions/UniversalLanguageSelector install
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment