in src/commands/distribute/release.ts [236:271]
private validateParameters(): void {
debug("Checking for invalid parameter combinations");
if (!_.isNil(this.releaseNotes) && !_.isNil(this.releaseNotesFile)) {
throw failure(ErrorCodes.InvalidParameter, "'--release-notes' and '--release-notes-file' switches are mutually exclusive");
}
if (_.isNil(this.distributionGroup) && _.isNil(this.storeName)) {
throw failure(ErrorCodes.InvalidParameter, "At least one of '--group' or '--store' must be specified");
}
if (!_.isNil(this.storeName)) {
if (![".aab", ".apk", ".ipa"].includes(this.fileExtension)) {
throw failure(ErrorCodes.InvalidParameter, `Files of type '${this.fileExtension}' can not be distributed to stores`);
}
}
if (_.isNil(this.buildVersion)) {
if ([".zip", ".msi"].includes(this.fileExtension)) {
throw failure(
ErrorCodes.InvalidParameter,
`--build-version parameter must be specified when uploading ${this.fileExtension} files`
);
}
}
if (_.isNil(this.buildNumber) || _.isNil(this.buildVersion)) {
if ([".pkg", ".dmg"].includes(this.fileExtension)) {
throw failure(
ErrorCodes.InvalidParameter,
`--build-version and --build-number must both be specified when uploading ${this.fileExtension} files`
);
}
}
if (!_.isNil(this.filePath)) {
const binary = new ACFile(this.filePath);
if (!binary || binary.size <= 0) {
throw failure(ErrorCodes.InvalidParameter, `File '${this.filePath}' does not exist.`);
}
}
}