generator-rn-toolbox-gv
Version:
React-Native generators to kickstart your project
97 lines (87 loc) • 2.61 kB
JavaScript
/* eslint-disable import/no-extraneous-dependencies */
require('colors');
const path = require('path');
const spawn = require('cross-spawn');
const helpers = require('yeoman-test');
const appName = 'TestApp';
function createProject() {
console.log('## Creating project ##'.cyan);
spawn.sync('react-native', ['init', appName], {
cwd: __dirname,
stdio: 'inherit',
});
}
function installLint() {
console.log('## Installing Lint ##'.cyan);
return helpers
.run(path.join(__dirname, 'generators/lint'))
.cd(path.join(__dirname, appName))
.withOptions({ skipInstall: false })
.toPromise();
}
function installBase() {
console.log('## Installing Base Project ##'.cyan);
return helpers
.run(path.join(__dirname, 'generators/base'))
.cd(path.join(__dirname, appName))
.withOptions({ skipInstall: false })
.withPrompts({ appName })
.toPromise();
}
function installJest() {
console.log('## Installing Jest ##'.cyan);
return helpers
.run(path.join(__dirname, 'generators/jest'))
.cd(path.join(__dirname, appName))
.withOptions({ skipInstall: false })
.withPrompts({ appName })
.toPromise();
}
function installFastlane() {
console.log('## Installing Fastlane ##'.cyan);
return helpers
.run(path.join(__dirname, 'generators/fastlane'))
.cd(path.join(__dirname, appName))
.withOptions({ skipInstall: false })
.withPrompts({
companyName: 'BAM',
appName,
projectName: appName,
stagingAppId: 'tech.bam.rntest.staging',
prodAppId: 'tech.bam.rntest',
matchGit: process.env.RN_MATCH_GIT,
appleId: process.env.RN_APPLE_ID,
stagingAppleTeamId: process.env.RN_STAGING_APPLE_TEAM_ID,
prodAppleTeamId: process.env.RN_PROD_APPLE_TEAM_ID,
itunesTeamId: process.env.RN_ITUNES_TEAM_ID,
keystorePassword: 'TestTest',
hockeyAppToken: process.env.RN_HOCKEY_APP_TOKEN,
})
.toPromise();
}
function installBitrise() {
console.log('## Installing Bitrise ##'.cyan);
return helpers
.run(path.join(__dirname, 'generators/bitrise'))
.cd(path.join(__dirname, appName))
.withOptions({ skipInstall: false })
.withPrompts({
reactNativeDirectory: '.',
androidProdAppId: 'tech.bam.rntest',
})
.toPromise();
}
function testProject() {
console.log('## Testing Project ##'.cyan);
spawn.sync('npm', ['test'], {
cwd: path.join(__dirname, appName),
stdio: 'inherit',
});
}
createProject();
installLint()
.then(installBase)
.then(installJest)
.then(installFastlane)
.then(installBitrise)
.then(testProject);