#!/usr/bin/env node import CodePush from 'code-push' import { build } from 'vite' import { MobileProject } from '@trapezedev/project' import fs from 'fs' import path from 'path' import inquirer from 'inquirer' import { sync } from '@capacitor/cli/dist/tasks/sync.js' import { loadConfig } from '@capacitor/cli/dist/config.js' import ProgressBar from 'progress' const token = '064853a8cdbfb94ed9b62ce30da17f162a1444a0' const androidName = 'ASNFTNGFHP-Android' const iosName = 'ASNFTNGFHP-iOS' inquirer .prompt([ { name: 'platform', type: 'checkbox', message: 'Platform', choices: ['Android', 'iOS'], default: ['Android', 'iOS'] }, { name: 'build', type: 'list', message: 'build', choices: ['YES', 'NO'], default: 'YES' } ]) .then(async answers => { console.log(answers) const capacitorConfig = await loadConfig() const codePush = new CodePush(token) const projectConfig = { ios: { path: 'ios/App' }, android: { path: 'android' } } const project = new MobileProject(process.cwd(), projectConfig) await project.load() await project.android.incrementVersionCode() await project.ios.incrementBuild('App') project.commit() let version = JSON.parse(fs.readFileSync(path.resolve(process.cwd(), 'src', 'version.json'))) version.android.version = await project.android.getVersionName() version.android.build = await project.android.getVersionCode() version.ios.version = await project.ios.getVersion('App') version.ios.build = await project.ios.getBuild('App') if (answers.build === 'YES') { version.www++ fs.writeFileSync(path.resolve(process.cwd(), 'src', 'version.json'), JSON.stringify(version, null, 4)) await build({ configFile: 'vite.config.js', mode: 'app' }) } if (answers.platform.includes('Android')) { var bar1 = new ProgressBar('Upload Android Bundle [:bar] :percent', { total: 100 }) await sync(capacitorConfig, 'android', null, false) await codePush .release(androidName, 'Release', 'android/app/src/main/assets/public/', '~1.0.0', {}, percent => { bar1.tick(percent) }) .then(res => { console.log('Upload Android Bundle Success', res) }) } if (answers.platform.includes('iOS')) { var bar2 = new ProgressBar('Upload iOS Bundle [:bar] :percent', { total: 100 }) await sync(capacitorConfig, 'ios', null, false) await codePush .release(androidName, 'Release', 'ios/App/App/public/', '~1.0.0', {}, percent => { bar2.tick(percent) }) .then(res => { console.log('Upload iOS Bundle Success', res) }) } fs.readdirSync(process.cwd()).forEach(file => { if (/^\w+\.zip$/.test(file)) { fs.unlinkSync(path.resolve(process.cwd(), file)) } }) }) .catch(error => { console.log(error) if (error.isTtyError) { // Prompt couldn't be rendered in the current environment } else { // Something else went wrong } })