balena app create: fix application existence check

Resolves: #1824
Change-type: patch
This commit is contained in:
Paulo Castro 2020-05-13 15:44:57 +01:00
parent 052c8d138e
commit 5b33826309
2 changed files with 17 additions and 13 deletions

View File

@ -78,22 +78,25 @@ export default class AppCreateCmd extends Command {
const balena = getBalenaSdk();
const patterns = await import('../../utils/patterns');
// First make sure they don't already have an app with this name
if (await balena.models.application.has(params.name)) {
throw new ExpectedError(
'You already have an application with that name!',
);
}
// Create application
const deviceType = options.type || (await patterns.selectDeviceType());
const application = await balena.models.application.create({
name: params.name,
deviceType,
});
let application: import('balena-sdk').Application;
try {
application = await balena.models.application.create({
name: params.name,
deviceType,
});
} catch (err) {
// BalenaRequestError: Request error: Unique key constraint violated
if ((err.message || '').toLowerCase().includes('unique')) {
throw new ExpectedError(
`Error: application "${params.name}" already exists`,
);
}
throw err;
}
console.info(
`Application created: ${application.app_name} (${application.device_type}, id ${application.id})`,
`Application created: ${application.slug} (${application.device_type}, id ${application.id})`,
);
}
}

View File

@ -132,6 +132,7 @@ const messages: {
};
const EXPECTED_ERROR_REGEXES = [
/^BalenaAmbiguousApplication:/, // balena-sdk
/^BalenaApplicationNotFound:/, // balena-sdk
/^BalenaDeviceNotFound:/, // balena-sdk
/^Missing \w+$/, // Capitano, oclif parser: RequiredArgsError, RequiredFlagError