expo-wakeword
Version:
Voice/Wake-word detection library for Expo (React Native)
59 lines (55 loc) • 2.24 kB
JavaScript
;
const { withProjectBuildGradle, withAppBuildGradle, WarningAggregator, } = require('@expo/config-plugins');
const { mergeContents } = require('@expo/config-plugins/build/utils/generateCode');
const MODULE_NAME = 'react-native-wakeword';
const androidPlugin = (config, props = {}) => {
config = withProjectBuildGradle(config, ({ modResults, ...subConfig }) => {
if (modResults.language !== 'groovy') {
WarningAggregator.addWarningAndroid('withWakeword', `Cannot automatically configure project build.gradle because it's not groovy`);
return { modResults, ...subConfig };
}
modResults.contents = applyMavenUrl(modResults.contents);
return { modResults, ...subConfig };
});
config = withAppBuildGradle(config, ({ modResults, ...subConfig }) => {
if (modResults.language !== 'groovy') {
WarningAggregator.addWarningAndroid('withWakeword', `Cannot automatically configure app build.gradle because it's not groovy`);
return { modResults, ...subConfig };
}
modResults.contents = applyAppGradle(modResults.contents);
return { modResults, ...subConfig };
});
return config;
};
const applyMavenUrl = (buildGradle) => {
const newSrc = `
// react-native-wakeword added
maven { url "\${project(":${MODULE_NAME}").projectDir}/libs" }
maven { url("\${project(':${MODULE_NAME}').projectDir}/libs") }
maven {
url("\${project(':${MODULE_NAME}').projectDir}/libs")
}
// End react-native-wakeword added
`.trim();
return mergeContents({
tag: `${MODULE_NAME}-maven`,
src: buildGradle,
newSrc,
anchor: /allprojects\s*\{[^}]*repositories\s*\{/,
offset: 1,
comment: "//",
}).contents;
};
const applyAppGradle = (buildGradle) => {
const newSrc = `Project wakeword = project(':${MODULE_NAME}')`;
return mergeContents({
tag: `${MODULE_NAME}-project`,
src: buildGradle,
newSrc,
anchor: /android\s?\{/,
offset: 1,
comment: "//",
}).contents;
};
module.exports = androidPlugin;
//# sourceMappingURL=androidPlugin.js.map