@johnf/react-native-owl
Version:
Visual regression testing for React Native
49 lines (47 loc) • 2.3 kB
JavaScript
;
import path from 'path';
import execa from 'execa';
import { Logger } from "../logger.js";
import { getConfig } from "./config.js";
export const ENTRY_FILE = './node_modules/react-native-owl/lib/commonjs/client/index.app.js';
export const buildIOS = async (config, logger) => {
const buildCommand = config.ios?.buildCommand ? [config.ios?.buildCommand] : [`xcodebuild`, `-workspace ${config.ios?.workspace}`, `-scheme ${config.ios?.scheme?.split(' ').join('\\ ')}`, `-configuration ${config.ios?.configuration}`, `-sdk iphonesimulator`, `-derivedDataPath ios/build`];
if (!config.ios?.buildCommand && config.ios?.quiet) {
buildCommand.push('-quiet');
}
logger.info(`[OWL - CLI] Building the app with: ${buildCommand.join(' ')}.`);
await execa.command(buildCommand.join(' '), {
stdio: 'inherit',
env: {
ENTRY_FILE
}
});
};
export const buildAndroid = async (config, logger) => {
const buildCommand = config.android?.buildCommand ? [config.android?.buildCommand] : [`./gradlew`, config.android?.buildType === 'Debug' ? `assembleDebug` : 'assembleRelease', '--console plain'];
if (!config.android?.buildCommand && config.android?.quiet) {
buildCommand.push('--quiet');
}
// Add a project environmental to tell build.gradle to use a specific Android Manifest that allows WebSocket usage.
// (https://docs.gradle.org/current/userguide/command_line_interface.html#sec:environment_options)
buildCommand.push('-PisOwlBuild=true');
const cwd = config.android?.buildCommand ? undefined : path.join(process.cwd(), 'android');
logger.info(`[OWL - CLI] Building the app with: ${buildCommand.join(' ')}.`);
await execa.command(buildCommand.join(' '), {
stdio: 'inherit',
cwd,
env: {
ENTRY_FILE
}
});
};
export const buildHandler = async args => {
const config = await getConfig(args.config);
const logger = new Logger(config.debug);
const buildProject = args.platform === 'ios' ? buildIOS : buildAndroid;
logger.print(`[OWL - CLI] Building the app on ${args.platform} platform.`);
logger.info(`[OWL - CLI] Using the config file ${args.config}.`);
await buildProject(config, logger);
logger.info(`[OWL - CLI] Successfully built for the ${args.platform} platform.`);
};
//# sourceMappingURL=build.js.map