1
0
mirror of https://gitcode.com/github-mirrors/react-native-update-cli.git synced 2025-11-23 08:43:37 +08:00
Code Issues Packages Projects Releases Wiki Activity GitHub Gitee

Compare commits

...

9 Commits

12 changed files with 144 additions and 170 deletions

View File

@@ -213,7 +213,7 @@
"rncli": { "rncli": {
"default": false "default": false
}, },
"disableHermes": { "hermes": {
"default": false "default": false
}, },
"name": { "name": {
@@ -299,15 +299,6 @@
} }
} }
}, },
"hdiffFromPPK": {
"description": "Create hdiff patch from a Prepare package(.ppk)",
"options": {
"output": {
"default": "${tempDir}/output/hdiff-${time}.ppk-patch",
"hasValue": true
}
}
},
"hdiffFromApp": { "hdiffFromApp": {
"description": "Create hdiff patch from a Harmony package(.app)", "description": "Create hdiff patch from a Harmony package(.app)",
"options": { "options": {
@@ -343,6 +334,10 @@
"hasValue": true "hasValue": true
} }
} }
},
"install": {
"description": "Install optional dependencies to the CLI",
"options": {}
} }
}, },
"globalOptions": { "globalOptions": {

View File

@@ -1,6 +1,6 @@
{ {
"name": "react-native-update-cli", "name": "react-native-update-cli",
"version": "2.2.3", "version": "2.4.0",
"description": "command line tool for react-native-update (remote updates for react native)", "description": "command line tool for react-native-update (remote updates for react native)",
"main": "index.js", "main": "index.js",
"bin": { "bin": {

View File

@@ -16,7 +16,7 @@ import os from 'os';
const properties = require('properties'); const properties = require('properties');
import { addGitIgnore } from './utils/add-gitignore'; import { addGitIgnore } from './utils/add-gitignore';
import { checkLockFiles } from './utils/check-lockfile'; import { checkLockFiles } from './utils/check-lockfile';
import { tempDir } from './utils/constants'; import { isPPKBundleFileName, scriptName, tempDir } from './utils/constants';
import { depVersions } from './utils/dep-versions'; import { depVersions } from './utils/dep-versions';
import { t } from './utils/i18n'; import { t } from './utils/i18n';
import { versionCommands } from './versions'; import { versionCommands } from './versions';
@@ -42,7 +42,7 @@ async function runReactNativeBundleCommand({
platform, platform,
sourcemapOutput, sourcemapOutput,
config, config,
disableHermes, forceHermes,
cli, cli,
}: { }: {
bundleName: string; bundleName: string;
@@ -52,7 +52,7 @@ async function runReactNativeBundleCommand({
platform: string; platform: string;
sourcemapOutput: string; sourcemapOutput: string;
config?: string; config?: string;
disableHermes?: boolean; forceHermes?: boolean;
cli: { cli: {
taro?: boolean; taro?: boolean;
expo?: boolean; expo?: boolean;
@@ -85,14 +85,30 @@ async function runReactNativeBundleCommand({
const getExpoCli = () => { const getExpoCli = () => {
try { try {
cliPath = require.resolve('@expo/cli', { const searchPaths = [process.cwd()];
// 尝试添加 expo 包的路径作为额外的搜索路径
try {
const expoPath = require.resolve('expo/package.json', {
paths: [process.cwd()], paths: [process.cwd()],
}); });
// 获取 expo 包的目录路径
const expoDir = expoPath.replace(/\/package\.json$/, '');
searchPaths.push(expoDir);
} catch {
// expo 包不存在,忽略
}
// 尝试从搜索路径中解析 @expo/cli
cliPath = require.resolve('@expo/cli', {
paths: searchPaths,
});
const expoCliVersion = JSON.parse( const expoCliVersion = JSON.parse(
fs fs
.readFileSync( .readFileSync(
require.resolve('@expo/cli/package.json', { require.resolve('@expo/cli/package.json', {
paths: [process.cwd()], paths: searchPaths,
}), }),
) )
.toString(), .toString(),
@@ -163,18 +179,25 @@ async function runReactNativeBundleCommand({
bundleCommand = 'build'; bundleCommand = 'build';
} }
reactNativeBundleArgs.push(cliPath, bundleCommand); if (platform === 'harmony') {
bundleName = 'bundle.harmony.js';
if (forceHermes === undefined) {
// enable hermes by default for harmony
forceHermes = true;
}
}
if (platform !== 'harmony') {
reactNativeBundleArgs.push( reactNativeBundleArgs.push(
'--platform', cliPath,
platform, bundleCommand,
'--assets-dest', '--assets-dest',
outputFolder, outputFolder,
'--bundle-output', '--bundle-output',
path.join(outputFolder, bundleName), path.join(outputFolder, bundleName),
'--reset-cache',
); );
if (platform !== 'harmony') {
reactNativeBundleArgs.push('--platform', platform, '--reset-cache');
} }
if (cli.taro) { if (cli.taro) {
@@ -211,9 +234,9 @@ async function runReactNativeBundleCommand({
} else { } else {
let hermesEnabled: boolean | undefined = false; let hermesEnabled: boolean | undefined = false;
if (disableHermes) { if (forceHermes) {
hermesEnabled = false; hermesEnabled = true;
console.log(t('hermesDisabled')); console.log(t('forceHermes'));
} else if (platform === 'android') { } else if (platform === 'android') {
const gradlePropeties = await new Promise<{ const gradlePropeties = await new Promise<{
hermesEnabled?: boolean; hermesEnabled?: boolean;
@@ -240,8 +263,6 @@ async function runReactNativeBundleCommand({
fs.existsSync('ios/Pods/hermes-engine') fs.existsSync('ios/Pods/hermes-engine')
) { ) {
hermesEnabled = true; hermesEnabled = true;
} else if (platform === 'harmony') {
await copyHarmonyBundle(outputFolder);
} }
if (hermesEnabled) { if (hermesEnabled) {
await compileHermesByteCode( await compileHermesByteCode(
@@ -251,72 +272,25 @@ async function runReactNativeBundleCommand({
!isSentry, !isSentry,
); );
} }
if (platform === 'harmony') {
const harmonyRawAssetsPath =
'harmony/entry/src/main/resources/rawfile/assets';
// copy all files in outputFolder to harmonyRawPath
// assets should be in rawfile/assets
fs.ensureDirSync(harmonyRawAssetsPath);
fs.copySync(outputFolder, harmonyRawAssetsPath, { overwrite: true });
fs.moveSync(
`${harmonyRawAssetsPath}/bundle.harmony.js`,
`${harmonyRawAssetsPath}/../bundle.harmony.js`,
{ overwrite: true },
);
}
resolve(null); resolve(null);
} }
}); });
}); });
} }
async function copyHarmonyBundle(outputFolder: string) {
const harmonyRawPath = 'harmony/entry/src/main/resources/rawfile';
try {
await fs.ensureDir(harmonyRawPath);
try {
await fs.access(harmonyRawPath, fs.constants.W_OK);
} catch (error) {
await fs.chmod(harmonyRawPath, 0o755);
}
await fs.remove(path.join(harmonyRawPath, 'update.json'));
await fs.copy('update.json', path.join(harmonyRawPath, 'update.json'));
await fs.ensureDir(outputFolder);
// Recursively copy files with special handling for assets directory
async function copyFilesRecursively(
srcDir: string,
destDir: string,
relativePath = '',
) {
const fullSrcPath = path.join(srcDir, relativePath);
const items = await fs.readdir(fullSrcPath);
for (const item of items) {
const itemRelativePath = path.join(relativePath, item);
const itemSrcPath = path.join(srcDir, itemRelativePath);
// Skip update.json and meta.json at root level
if (!relativePath && (item === 'update.json' || item === 'meta.json')) {
continue;
}
const stat = await fs.stat(itemSrcPath);
if (stat.isFile()) {
// Special handling: remove 'assets/' prefix to move files up one level
let itemDestPath = itemRelativePath;
if (
itemDestPath.startsWith('assets/') ||
itemDestPath.startsWith('assets\\')
) {
itemDestPath = itemDestPath.replace(/^assets[\\/]/, '');
}
const fullDestPath = path.join(destDir, itemDestPath);
await fs.ensureDir(path.dirname(fullDestPath));
await fs.copy(itemSrcPath, fullDestPath);
} else if (stat.isDirectory()) {
// Recursively process subdirectories
await copyFilesRecursively(srcDir, destDir, itemRelativePath);
}
}
}
await copyFilesRecursively(harmonyRawPath, outputFolder);
} catch (error: any) {
console.error(t('copyHarmonyBundleError', { error }));
throw new Error(t('copyFileFailed', { error: error.message }));
}
}
function getHermesOSBin() { function getHermesOSBin() {
if (os.platform() === 'win32') return 'win64-bin'; if (os.platform() === 'win32') return 'win64-bin';
if (os.platform() === 'darwin') return 'osx-bin'; if (os.platform() === 'darwin') return 'osx-bin';
@@ -505,7 +479,12 @@ async function uploadSourcemapForSentry(
} }
} }
const ignorePackingFileNames = ['.', '..', 'index.bundlejs.map']; const ignorePackingFileNames = [
'.',
'..',
'index.bundlejs.map',
'bundle.harmony.js.map',
];
const ignorePackingExtensions = ['DS_Store', 'txt.map']; const ignorePackingExtensions = ['DS_Store', 'txt.map'];
async function pack(dir: string, output: string) { async function pack(dir: string, output: string) {
console.log(t('packing')); console.log(t('packing'));
@@ -587,10 +566,7 @@ async function diffFromPPK(origin: string, next: string, output: string) {
// isFile // isFile
originMap[entry.crc32] = entry.fileName; originMap[entry.crc32] = entry.fileName;
if ( if (isPPKBundleFileName(entry.fileName)) {
entry.fileName === 'index.bundlejs' ||
entry.fileName === 'bundle.harmony.js'
) {
// This is source. // This is source.
return readEntry(entry, zipFile).then((v) => (originSource = v)); return readEntry(entry, zipFile).then((v) => (originSource = v));
} }
@@ -598,9 +574,7 @@ async function diffFromPPK(origin: string, next: string, output: string) {
}); });
if (!originSource) { if (!originSource) {
throw new Error( throw new Error(t('bundleFileNotFound'));
'Bundle file not found! Please use default bundle file name and path.',
);
} }
const copies = {}; const copies = {};
@@ -641,23 +615,13 @@ async function diffFromPPK(origin: string, next: string, output: string) {
if (!originEntries[entry.fileName]) { if (!originEntries[entry.fileName]) {
addEntry(entry.fileName); addEntry(entry.fileName);
} }
} else if (entry.fileName === 'index.bundlejs') { } else if (isPPKBundleFileName(entry.fileName)) {
//console.log('Found bundle'); //console.log('Found bundle');
return readEntry(entry, nextZipfile).then((newSource) => { return readEntry(entry, nextZipfile).then((newSource) => {
//console.log('Begin diff'); //console.log('Begin diff');
zipfile.addBuffer( zipfile.addBuffer(
diff(originSource, newSource), diff(originSource, newSource),
'index.bundlejs.patch', `${entry.fileName}.patch`,
);
//console.log('End diff');
});
} else if (entry.fileName === 'bundle.harmony.js') {
//console.log('Found bundle');
return readEntry(entry, nextZipfile).then((newSource) => {
//console.log('Begin diff');
zipfile.addBuffer(
diff(originSource, newSource),
'bundle.harmony.js.patch',
); );
//console.log('End diff'); //console.log('End diff');
}); });
@@ -750,9 +714,7 @@ async function diffFromPackage(
}); });
if (!originSource) { if (!originSource) {
throw new Error( throw new Error(t('bundleFileNotFound'));
'Bundle file not found! Please use default bundle file name and path.',
);
} }
const copies = {}; const copies = {};
@@ -773,23 +735,13 @@ async function diffFromPackage(
if (/\/$/.test(entry.fileName)) { if (/\/$/.test(entry.fileName)) {
// Directory // Directory
zipfile.addEmptyDirectory(entry.fileName); zipfile.addEmptyDirectory(entry.fileName);
} else if (entry.fileName === 'index.bundlejs') { } else if (isPPKBundleFileName(entry.fileName)) {
//console.log('Found bundle'); //console.log('Found bundle');
return readEntry(entry, nextZipfile).then((newSource) => { return readEntry(entry, nextZipfile).then((newSource) => {
//console.log('Begin diff'); //console.log('Begin diff');
zipfile.addBuffer( zipfile.addBuffer(
diff(originSource, newSource), diff(originSource, newSource),
'index.bundlejs.patch', `${entry.fileName}.patch`,
);
//console.log('End diff');
});
} else if (entry.fileName === 'bundle.harmony.js') {
//console.log('Found bundle');
return readEntry(entry, nextZipfile).then((newSource) => {
//console.log('Begin diff');
zipfile.addBuffer(
diff(originSource, newSource),
'bundle.harmony.js.patch',
); );
//console.log('End diff'); //console.log('End diff');
}); });
@@ -906,24 +858,21 @@ function diffArgsCheck(args: string[], options: any, diffFn: string) {
if (diffFn.startsWith('hdiff')) { if (diffFn.startsWith('hdiff')) {
if (!hdiff) { if (!hdiff) {
console.error( console.error(t('nodeHdiffpatchRequired', { scriptName }));
`This function needs "node-hdiffpatch".
Please run "npm i node-hdiffpatch" to install`,
);
process.exit(1); process.exit(1);
} }
diff = hdiff; diff = hdiff;
} else { } else {
if (!bsdiff) { if (!bsdiff) {
console.error( console.error(t('nodeBsdiffRequired', { scriptName }));
`This function needs "node-bsdiff".
Please run "npm i node-bsdiff" to install`,
);
process.exit(1); process.exit(1);
} }
diff = bsdiff; diff = bsdiff;
} }
const { output } = options; const { output } = translateOptions({
...options,
tempDir,
});
return { return {
origin, origin,
@@ -946,7 +895,7 @@ export const bundleCommands = {
taro, taro,
expo, expo,
rncli, rncli,
disableHermes, hermes,
name, name,
description, description,
metaInfo, metaInfo,
@@ -987,7 +936,7 @@ export const bundleCommands = {
outputFolder: intermediaDir, outputFolder: intermediaDir,
platform, platform,
sourcemapOutput: sourcemap || sourcemapPlugin ? sourcemapOutput : '', sourcemapOutput: sourcemap || sourcemapPlugin ? sourcemapOutput : '',
disableHermes: !!disableHermes, forceHermes: hermes as unknown as boolean,
cli: { cli: {
taro: !!taro, taro: !!taro,
expo: !!expo, expo: !!expo,
@@ -1054,14 +1003,14 @@ export const bundleCommands = {
const { origin, next, realOutput } = diffArgsCheck(args, options, 'diff'); const { origin, next, realOutput } = diffArgsCheck(args, options, 'diff');
await diffFromPPK(origin, next, realOutput); await diffFromPPK(origin, next, realOutput);
console.log(`${realOutput} generated.`); console.log(t('diffPackageGenerated', { output: realOutput }));
}, },
async hdiff({ args, options }) { async hdiff({ args, options }) {
const { origin, next, realOutput } = diffArgsCheck(args, options, 'hdiff'); const { origin, next, realOutput } = diffArgsCheck(args, options, 'hdiff');
await diffFromPPK(origin, next, realOutput); await diffFromPPK(origin, next, realOutput);
console.log(`${realOutput} generated.`); console.log(t('diffPackageGenerated', { output: realOutput }));
}, },
async diffFromApk({ args, options }) { async diffFromApk({ args, options }) {
@@ -1077,7 +1026,7 @@ export const bundleCommands = {
realOutput, realOutput,
'assets/index.android.bundle', 'assets/index.android.bundle',
); );
console.log(`${realOutput} generated.`); console.log(t('diffPackageGenerated', { output: realOutput }));
}, },
async hdiffFromApk({ args, options }) { async hdiffFromApk({ args, options }) {
@@ -1093,7 +1042,7 @@ export const bundleCommands = {
realOutput, realOutput,
'assets/index.android.bundle', 'assets/index.android.bundle',
); );
console.log(`${realOutput} generated.`); console.log(t('diffPackageGenerated', { output: realOutput }));
}, },
async diffFromApp({ args, options }) { async diffFromApp({ args, options }) {
@@ -1108,7 +1057,7 @@ export const bundleCommands = {
realOutput, realOutput,
'resources/rawfile/bundle.harmony.js', 'resources/rawfile/bundle.harmony.js',
); );
console.log(`${realOutput} generated.`); console.log(t('diffPackageGenerated', { output: realOutput }));
}, },
async hdiffFromApp({ args, options }) { async hdiffFromApp({ args, options }) {
@@ -1123,7 +1072,7 @@ export const bundleCommands = {
realOutput, realOutput,
'resources/rawfile/bundle.harmony.js', 'resources/rawfile/bundle.harmony.js',
); );
console.log(`${realOutput} generated.`); console.log(t('diffPackageGenerated', { output: realOutput }));
}, },
async diffFromIpa({ args, options }) { async diffFromIpa({ args, options }) {
@@ -1138,7 +1087,7 @@ export const bundleCommands = {
return m?.[1]; return m?.[1];
}); });
console.log(`${realOutput} generated.`); console.log(t('diffPackageGenerated', { output: realOutput }));
}, },
async hdiffFromIpa({ args, options }) { async hdiffFromIpa({ args, options }) {
@@ -1153,6 +1102,6 @@ export const bundleCommands = {
return m?.[1]; return m?.[1];
}); });
console.log(`${realOutput} generated.`); console.log(t('diffPackageGenerated', { output: realOutput }));
}, },
}; };

View File

@@ -3,6 +3,7 @@
import { loadSession } from './api'; import { loadSession } from './api';
import { appCommands } from './app'; import { appCommands } from './app';
import { bundleCommands } from './bundle'; import { bundleCommands } from './bundle';
import { installCommands } from './install';
import { moduleManager } from './module-manager'; import { moduleManager } from './module-manager';
import { builtinModules } from './modules'; import { builtinModules } from './modules';
import { packageCommands } from './package'; import { packageCommands } from './package';
@@ -33,6 +34,7 @@ function printUsage() {
...appCommands, ...appCommands,
...packageCommands, ...packageCommands,
...versionCommands, ...versionCommands,
...installCommands,
}; };
for (const [name, handler] of Object.entries(legacyCommands)) { for (const [name, handler] of Object.entries(legacyCommands)) {
@@ -76,6 +78,7 @@ const legacyCommands = {
...appCommands, ...appCommands,
...packageCommands, ...packageCommands,
...versionCommands, ...versionCommands,
...installCommands,
help: printUsage, help: printUsage,
}; };

19
src/install.ts Normal file
View File

@@ -0,0 +1,19 @@
import { spawnSync } from 'child_process';
import path from 'path';
import type { CommandContext } from './types';
export const installCommands = {
install: async ({ args }: CommandContext) => {
if (args.length === 0) {
return;
}
const cliDir = path.resolve(__dirname, '..');
spawnSync('npm', ['install', ...args], {
cwd: cliDir,
stdio: 'inherit',
shell: true,
});
},
};

View File

@@ -49,7 +49,7 @@ export default {
fileGenerated: '{{- file}} generated.', fileGenerated: '{{- file}} generated.',
fileSizeExceeded: fileSizeExceeded:
'This file size is {{fileSize}} , exceeding the current quota {{maxSize}} . You may consider upgrading to a higher plan to increase this quota. Details can be found at: {{- pricingPageUrl}}', 'This file size is {{fileSize}} , exceeding the current quota {{maxSize}} . You may consider upgrading to a higher plan to increase this quota. Details can be found at: {{- pricingPageUrl}}',
hermesDisabled: 'Hermes disabled', forceHermes: 'Forcing Hermes enabled for this build',
hermesEnabledCompiling: 'Hermes enabled, now compiling to hermes bytecode:\n', hermesEnabledCompiling: 'Hermes enabled, now compiling to hermes bytecode:\n',
ipaUploadSuccess: ipaUploadSuccess:
'Successfully uploaded IPA native package (id: {{id}}, version: {{version}}, buildTime: {{buildTime}})', 'Successfully uploaded IPA native package (id: {{id}}, version: {{version}}, buildTime: {{buildTime}})',
@@ -137,4 +137,11 @@ This can reduce the risk of inconsistent dependencies and supply chain attacks.
deletePackageError: deletePackageError:
'Failed to delete native package {{packageId}}: {{error}}', 'Failed to delete native package {{packageId}}: {{error}}',
usageDeletePackage: 'Usage: cresc deletePackage [packageId] --appId [appId]', usageDeletePackage: 'Usage: cresc deletePackage [packageId] --appId [appId]',
bundleFileNotFound:
'Bundle file not found! Please use default bundle file name and path.',
diffPackageGenerated: '{{- output}} generated.',
nodeBsdiffRequired:
'This function needs "node-bsdiff". Please run "{{scriptName}} install node-bsdiff" to install',
nodeHdiffpatchRequired:
'This function needs "node-hdiffpatch". Please run "{{scriptName}} install node-hdiffpatch" to install',
}; };

View File

@@ -47,7 +47,7 @@ export default {
fileGenerated: '已生成 {{- file}}', fileGenerated: '已生成 {{- file}}',
fileSizeExceeded: fileSizeExceeded:
'此文件大小 {{fileSize}} , 超出当前额度 {{maxSize}} 。您可以考虑升级付费业务以提升此额度。详情请访问: {{- pricingPageUrl}}', '此文件大小 {{fileSize}} , 超出当前额度 {{maxSize}} 。您可以考虑升级付费业务以提升此额度。详情请访问: {{- pricingPageUrl}}',
hermesDisabled: 'Hermes 已禁用', forceHermes: '强制启用 Hermes 编译',
hermesEnabledCompiling: 'Hermes 已启用,正在编译为 hermes 字节码:\n', hermesEnabledCompiling: 'Hermes 已启用,正在编译为 hermes 字节码:\n',
ipaUploadSuccess: ipaUploadSuccess:
'已成功上传ipa原生包id: {{id}}, version: {{version}}, buildTime: {{buildTime}}', '已成功上传ipa原生包id: {{id}}, version: {{version}}, buildTime: {{buildTime}}',
@@ -129,4 +129,10 @@ export default {
deletePackageError: '删除原生包 {{packageId}} 失败: {{error}}', deletePackageError: '删除原生包 {{packageId}} 失败: {{error}}',
usageDeletePackage: usageDeletePackage:
'使用方法: pushy deletePackage [packageId] --appId [appId]', '使用方法: pushy deletePackage [packageId] --appId [appId]',
bundleFileNotFound: '未找到 bundle 文件!请使用默认的 bundle 文件名和路径。',
diffPackageGenerated: '{{- output}} 已生成。',
nodeBsdiffRequired:
'此功能需要 "node-bsdiff"。请运行 "{{scriptName}} install node-bsdiff" 来安装',
nodeHdiffpatchRequired:
'此功能需要 "node-hdiffpatch"。请运行 "{{scriptName}} install node-hdiffpatch" 来安装',
}; };

View File

@@ -53,7 +53,7 @@ export const bundleModule: CLIModule = {
taro = false, taro = false,
expo = false, expo = false,
rncli = false, rncli = false,
disableHermes = false, hermes = false,
output, output,
} = context.options; } = context.options;
@@ -73,7 +73,7 @@ export const bundleModule: CLIModule = {
taro, taro,
expo, expo,
rncli, rncli,
disableHermes, hermes,
intermediaDir: '${tempDir}/intermedia/${platform}', intermediaDir: '${tempDir}/intermedia/${platform}',
output: '${tempDir}/output/${platform}.${time}.ppk', output: '${tempDir}/output/${platform}.${time}.ppk',
}; };
@@ -170,10 +170,10 @@ export const bundleModule: CLIModule = {
default: false, default: false,
description: 'Use React Native CLI', description: 'Use React Native CLI',
}, },
disableHermes: { hermes: {
hasValue: false, hasValue: false,
default: false, default: false,
description: 'Disable Hermes', description: 'Force enable Hermes',
}, },
name: { name: {
hasValue: true, hasValue: true,

View File

@@ -42,7 +42,7 @@ export class CLIProviderImpl implements CLIProvider {
taro: options.taro || false, taro: options.taro || false,
expo: options.expo || false, expo: options.expo || false,
rncli: options.rncli || false, rncli: options.rncli || false,
disableHermes: options.disableHermes || false, hermes: options.hermes || false,
}, },
}; };

View File

@@ -65,7 +65,7 @@ export interface BundleOptions {
taro?: boolean; taro?: boolean;
expo?: boolean; expo?: boolean;
rncli?: boolean; rncli?: boolean;
disableHermes?: boolean; hermes?: boolean;
} }
export interface PublishOptions { export interface PublishOptions {

View File

@@ -1,8 +1,12 @@
import path from 'path'; import path from 'path';
const scriptName = path.basename(process.argv[1]) as 'cresc' | 'pushy'; export const scriptName = path.basename(process.argv[1]) as 'cresc' | 'pushy';
export const IS_CRESC = scriptName === 'cresc'; export const IS_CRESC = scriptName === 'cresc';
export const ppkBundleFileNames = ['index.bundlejs', 'bundle.harmony.js'];
export const isPPKBundleFileName = (fileName: string) =>
ppkBundleFileNames.includes(fileName);
export const credentialFile = IS_CRESC ? '.cresc.token' : '.update'; export const credentialFile = IS_CRESC ? '.cresc.token' : '.update';
export const updateJson = IS_CRESC ? 'cresc.config.json' : 'update.json'; export const updateJson = IS_CRESC ? 'cresc.config.json' : 'update.json';
export const tempDir = IS_CRESC ? '.cresc.temp' : '.pushy'; export const tempDir = IS_CRESC ? '.cresc.temp' : '.pushy';

View File

@@ -122,17 +122,6 @@ export const bindVersionToPackages = async ({
console.log(chalk.yellow(t('dryRun'))); console.log(chalk.yellow(t('dryRun')));
} }
if (rollout !== undefined) { if (rollout !== undefined) {
const rolloutConfig: Record<string, number> = {};
for (const pkg of pkgs) {
rolloutConfig[pkg.name] = rollout;
}
if (!dryRun) {
await put(`/app/${appId}/version/${versionId}`, {
config: {
rollout: rolloutConfig,
},
});
}
console.log( console.log(
`${t('rolloutConfigSet', { `${t('rolloutConfigSet', {
versions: pkgs.map((pkg: Package) => pkg.name).join(', '), versions: pkgs.map((pkg: Package) => pkg.name).join(', '),
@@ -142,8 +131,10 @@ export const bindVersionToPackages = async ({
} }
for (const pkg of pkgs) { for (const pkg of pkgs) {
if (!dryRun) { if (!dryRun) {
await put(`/app/${appId}/package/${pkg.id}`, { await post(`/app/${appId}/binding`, {
versionId, versionId,
rollout,
packageId: pkg.id,
}); });
} }
console.log( console.log(