mirror of
https://github.com/koloml/furbooru-tagging-assistant.git
synced 2025-12-23 23:02:58 +00:00
Added modifications to manifest for Derpibooru variant of the extension
This commit is contained in:
@@ -86,6 +86,53 @@ class ManifestProcessor {
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Find all patterns in content scripts and host permissions and replace the hostname to the different one.
|
||||
*
|
||||
* @param {string|string[]} singleOrMultipleHostnames One or multiple hostnames to replace the original hostname with.
|
||||
*/
|
||||
replaceHostTo(singleOrMultipleHostnames) {
|
||||
if (typeof singleOrMultipleHostnames === 'string') {
|
||||
singleOrMultipleHostnames = [singleOrMultipleHostnames];
|
||||
}
|
||||
|
||||
this.#manifestObject.host_permissions = singleOrMultipleHostnames.map(hostname => `*://*.${hostname}/`);
|
||||
|
||||
this.#manifestObject.content_scripts?.forEach(entry => {
|
||||
entry.matches = entry.matches.reduce((resultMatches, originalMatchPattern) => {
|
||||
for (const updatedHostname of singleOrMultipleHostnames) {
|
||||
resultMatches.push(
|
||||
originalMatchPattern.replace(
|
||||
/\*:\/\/\*\.[a-z]+\.[a-z]+\//,
|
||||
`*://*.${updatedHostname}/`
|
||||
),
|
||||
);
|
||||
}
|
||||
|
||||
return resultMatches;
|
||||
}, []);
|
||||
})
|
||||
}
|
||||
|
||||
/**
|
||||
* Set different identifier for Gecko-based browsers (Firefox).
|
||||
*
|
||||
* @param {string} id ID of the extension to use.
|
||||
*/
|
||||
setGeckoIdentifier(id) {
|
||||
this.#manifestObject.browser_specific_settings.gecko.id = id;
|
||||
}
|
||||
|
||||
/**
|
||||
* Set the different extension name.
|
||||
*
|
||||
* @param {string} booruName
|
||||
*/
|
||||
replaceBooruNameWith(booruName) {
|
||||
this.#manifestObject.name = this.#manifestObject.name.replaceAll('Furbooru', booruName);
|
||||
this.#manifestObject.description = this.#manifestObject.description.replaceAll('Furbooru', booruName);
|
||||
}
|
||||
|
||||
/**
|
||||
* Save the current state of the manifest into the selected file.
|
||||
*
|
||||
@@ -118,10 +165,24 @@ export function loadManifest(filePath) {
|
||||
|
||||
/**
|
||||
* @typedef {Object} Manifest
|
||||
* @property {string} name
|
||||
* @property {string} description
|
||||
* @property {string} version
|
||||
* @property {BrowserSpecificSettings} browser_specific_settings
|
||||
* @property {string[]} host_permissions
|
||||
* @property {ContentScriptsEntry[]|undefined} content_scripts
|
||||
*/
|
||||
|
||||
/**
|
||||
* @typedef {Object} BrowserSpecificSettings
|
||||
* @property {GeckoSettings} gecko
|
||||
*/
|
||||
|
||||
/**
|
||||
* @typedef {Object} GeckoSettings
|
||||
* @property {string} id
|
||||
*/
|
||||
|
||||
/**
|
||||
* @typedef {Object} ContentScriptsEntry
|
||||
* @property {string[]} matches
|
||||
|
||||
@@ -67,6 +67,15 @@ export async function packExtension(settings) {
|
||||
return entry;
|
||||
})
|
||||
|
||||
if (process.env.SITE === 'derpibooru') {
|
||||
manifest.replaceHostTo([
|
||||
'derpibooru.org',
|
||||
'trixiebooru.org'
|
||||
]);
|
||||
manifest.replaceBooruNameWith('Derpibooru');
|
||||
manifest.setGeckoIdentifier('derpibooru-tagging-assistant@thecore.city');
|
||||
}
|
||||
|
||||
manifest.passVersionFromPackage(path.resolve(settings.rootDir, 'package.json'));
|
||||
manifest.saveTo(path.resolve(settings.exportDir, 'manifest.json'));
|
||||
|
||||
|
||||
Reference in New Issue
Block a user