mirror of
https://github.com/balena-io/balena-cli.git
synced 2025-01-30 08:03:55 +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: [
|
categories: [
|
||||||
{
|
{
|
||||||
title: 'API keys',
|
title: 'API keys',
|
||||||
files: ['build/actions/api-key.js'],
|
files: ['build/actions-oclif/api-key/generate.js'],
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
title: 'Application',
|
title: 'Application',
|
||||||
|
@ -258,7 +258,7 @@ If you come across any problems or would like to get in touch:
|
|||||||
|
|
||||||
## api-key generate <name>
|
## 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.
|
name. The key will be logged to the console.
|
||||||
|
|
||||||
This key can be used to log into the CLI using 'balena login --token <key>',
|
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"
|
$ balena api-key generate "Jenkins Key"
|
||||||
|
|
||||||
|
### Arguments
|
||||||
|
|
||||||
|
#### NAME
|
||||||
|
|
||||||
|
the API key name
|
||||||
|
|
||||||
|
### Options
|
||||||
|
|
||||||
# Application
|
# Application
|
||||||
|
|
||||||
## apps
|
## 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.
|
limitations under the License.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
import * as apiKey from './api-key';
|
|
||||||
import * as auth from './auth';
|
import * as auth from './auth';
|
||||||
import * as config from './config';
|
import * as config from './config';
|
||||||
import * as device from './device';
|
import * as device from './device';
|
||||||
@ -29,7 +28,6 @@ import * as tunnel from './tunnel';
|
|||||||
import * as util from './util';
|
import * as util from './util';
|
||||||
|
|
||||||
export {
|
export {
|
||||||
apiKey,
|
|
||||||
auth,
|
auth,
|
||||||
device,
|
device,
|
||||||
tags,
|
tags,
|
||||||
|
@ -49,9 +49,6 @@ capitano.globalOption({
|
|||||||
// ---------- Help Module ----------
|
// ---------- Help Module ----------
|
||||||
capitano.command(actions.help.help);
|
capitano.command(actions.help.help);
|
||||||
|
|
||||||
// ---------- Api key module ----------
|
|
||||||
capitano.command(actions.apiKey.generate);
|
|
||||||
|
|
||||||
// ---------- Auth Module ----------
|
// ---------- Auth Module ----------
|
||||||
capitano.command(actions.auth.login);
|
capitano.command(actions.auth.login);
|
||||||
capitano.command(actions.auth.logout);
|
capitano.command(actions.auth.logout);
|
||||||
|
@ -138,6 +138,7 @@ export const convertedCommands = [
|
|||||||
'app:restart',
|
'app:restart',
|
||||||
'app:rm',
|
'app:rm',
|
||||||
'apps',
|
'apps',
|
||||||
|
'api-key:generate',
|
||||||
'devices:supported',
|
'devices:supported',
|
||||||
'envs',
|
'envs',
|
||||||
'env:add',
|
'env:add',
|
||||||
|
@ -34,7 +34,7 @@ Primary commands:
|
|||||||
const ADDITIONAL_HELP = `
|
const ADDITIONAL_HELP = `
|
||||||
Additional commands:
|
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 create <name> create an application
|
||||||
app restart <name> restart an application
|
app restart <name> restart an application
|
||||||
app rm <name> remove an application
|
app rm <name> remove an application
|
||||||
|
Loading…
x
Reference in New Issue
Block a user