mirror of
https://github.com/balena-io/balena-cli.git
synced 2025-01-18 02:39:49 +00:00
Convert balena api-key generate
to oclif
Change-type: patch Signed-off-by: Scott Lowe <scott@balena.io>
This commit is contained in:
parent
97def08ec5
commit
83286e6729
@ -32,7 +32,7 @@ const capitanoDoc = {
|
||||
categories: [
|
||||
{
|
||||
title: 'API keys',
|
||||
files: ['build/actions/api-key.js'],
|
||||
files: ['build/actions-oclif/api-key/generate.js'],
|
||||
},
|
||||
{
|
||||
title: 'Application',
|
||||
|
@ -258,7 +258,7 @@ If you come across any problems or would like to get in touch:
|
||||
|
||||
## api-key generate <name>
|
||||
|
||||
This command generates a new API key for the current user, with the given
|
||||
Generate a new balenaCloud API key for the current user, with the given
|
||||
name. The key will be logged to the console.
|
||||
|
||||
This key can be used to log into the CLI using 'balena login --token <key>',
|
||||
@ -268,6 +268,14 @@ Examples:
|
||||
|
||||
$ balena api-key generate "Jenkins Key"
|
||||
|
||||
### Arguments
|
||||
|
||||
#### NAME
|
||||
|
||||
the API key name
|
||||
|
||||
### Options
|
||||
|
||||
# Application
|
||||
|
||||
## apps
|
||||
|
86
lib/actions-oclif/api-key/generate.ts
Normal file
86
lib/actions-oclif/api-key/generate.ts
Normal file
@ -0,0 +1,86 @@
|
||||
/**
|
||||
* @license
|
||||
* Copyright 2016-2020 Balena Ltd.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
import { flags } from '@oclif/command';
|
||||
import { stripIndent } from 'common-tags';
|
||||
import Command from '../../command';
|
||||
import { ExpectedError } from '../../errors';
|
||||
import * as cf from '../../utils/common-flags';
|
||||
import { getBalenaSdk } from '../../utils/lazy';
|
||||
|
||||
interface FlagsDef {
|
||||
help: void;
|
||||
}
|
||||
|
||||
interface ArgsDef {
|
||||
name: string;
|
||||
}
|
||||
|
||||
export default class GenerateCmd extends Command {
|
||||
public static description = stripIndent`
|
||||
Generate a new balenaCloud API key.
|
||||
|
||||
Generate a new balenaCloud API key for the current user, with the given
|
||||
name. The key will be logged to the console.
|
||||
|
||||
This key can be used to log into the CLI using 'balena login --token <key>',
|
||||
or to authenticate requests to the API with an 'Authorization: Bearer <key>' header.
|
||||
`;
|
||||
public static examples = ['$ balena api-key generate "Jenkins Key"'];
|
||||
|
||||
public static args = [
|
||||
{
|
||||
name: 'name',
|
||||
description: 'the API key name',
|
||||
required: true,
|
||||
},
|
||||
];
|
||||
|
||||
public static usage = 'api-key generate <name>';
|
||||
|
||||
public static flags: flags.Input<FlagsDef> = {
|
||||
help: cf.help,
|
||||
};
|
||||
|
||||
public static authenticated = true;
|
||||
|
||||
public async run() {
|
||||
const { args: params } = this.parse<FlagsDef, ArgsDef>(GenerateCmd);
|
||||
|
||||
let key;
|
||||
try {
|
||||
key = await getBalenaSdk().models.apiKey.create(params.name);
|
||||
} catch (e) {
|
||||
if (e.name === 'BalenaNotLoggedIn') {
|
||||
throw new ExpectedError(stripIndent`
|
||||
This command cannot be run when logged in with an API key.
|
||||
Please login again with 'balena login' and select an alternative method.
|
||||
`);
|
||||
} else {
|
||||
throw e;
|
||||
}
|
||||
}
|
||||
|
||||
console.log(stripIndent`
|
||||
Registered api key '${params.name}':
|
||||
|
||||
${key}
|
||||
|
||||
This key will not be shown again, so please save it now.
|
||||
`);
|
||||
}
|
||||
}
|
@ -1,34 +0,0 @@
|
||||
import { CommandDefinition } from 'capitano';
|
||||
import { stripIndent } from 'common-tags';
|
||||
import { getBalenaSdk } from '../utils/lazy';
|
||||
|
||||
export const generate: CommandDefinition<{
|
||||
name: string;
|
||||
}> = {
|
||||
signature: 'api-key generate <name>',
|
||||
description: 'Generate a new API key with the given name',
|
||||
help: stripIndent`
|
||||
This command generates a new API key for the current user, with the given
|
||||
name. The key will be logged to the console.
|
||||
|
||||
This key can be used to log into the CLI using 'balena login --token <key>',
|
||||
or to authenticate requests to the API with an 'Authorization: Bearer <key>' header.
|
||||
|
||||
Examples:
|
||||
|
||||
$ balena api-key generate "Jenkins Key"
|
||||
`,
|
||||
async action(params) {
|
||||
await getBalenaSdk()
|
||||
.models.apiKey.create(params.name)
|
||||
.then(key => {
|
||||
console.log(stripIndent`
|
||||
Registered api key '${params.name}':
|
||||
|
||||
${key}
|
||||
|
||||
This key will not be shown again, so please save it now.
|
||||
`);
|
||||
});
|
||||
},
|
||||
};
|
@ -14,7 +14,6 @@ See the License for the specific language governing permissions and
|
||||
limitations under the License.
|
||||
*/
|
||||
|
||||
import * as apiKey from './api-key';
|
||||
import * as auth from './auth';
|
||||
import * as config from './config';
|
||||
import * as device from './device';
|
||||
@ -29,7 +28,6 @@ import * as tunnel from './tunnel';
|
||||
import * as util from './util';
|
||||
|
||||
export {
|
||||
apiKey,
|
||||
auth,
|
||||
device,
|
||||
tags,
|
||||
|
@ -49,9 +49,6 @@ capitano.globalOption({
|
||||
// ---------- Help Module ----------
|
||||
capitano.command(actions.help.help);
|
||||
|
||||
// ---------- Api key module ----------
|
||||
capitano.command(actions.apiKey.generate);
|
||||
|
||||
// ---------- Auth Module ----------
|
||||
capitano.command(actions.auth.login);
|
||||
capitano.command(actions.auth.logout);
|
||||
|
@ -138,6 +138,7 @@ export const convertedCommands = [
|
||||
'app:restart',
|
||||
'app:rm',
|
||||
'apps',
|
||||
'api-key:generate',
|
||||
'devices:supported',
|
||||
'envs',
|
||||
'env:add',
|
||||
|
@ -34,7 +34,7 @@ Primary commands:
|
||||
const ADDITIONAL_HELP = `
|
||||
Additional commands:
|
||||
|
||||
api-key generate <name> Generate a new API key with the given name
|
||||
api-key generate <name> generate a new balenaCloud API key
|
||||
app create <name> create an application
|
||||
app restart <name> restart an application
|
||||
app rm <name> remove an application
|
||||
|
Loading…
Reference in New Issue
Block a user