@kui-shell/plugin-core-support
Version:
Kui plugin offering core extensions such as help and screenshot commands
78 lines • 2.23 kB
JavaScript
/*
* Copyright 2018 The Kubernetes Authors
*
* 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 Debug from 'debug';
const debug = Debug('plugins/core-support/base64');
/**
* The command usage model
*
*/
const usage = {
command: 'base64',
strict: 'base64',
hidden: true,
required: [{ name: 'string', docs: 'The string to encode or decode' }],
optional: [
{
name: '--decode',
alias: '-d',
boolean: true,
docs: 'Decode the given string'
},
{
name: '--break',
alias: '-b',
numeric: true,
docs: 'break encoded string into num character lines'
}
]
};
/**
* Break the given string into lines with a maximum number of
* characters, if so instructed
*
*/
const breakout = (str, options) => {
if (options.break > 0) {
let dest = '';
for (let idx = 0; idx < str.length; idx += options.break) {
dest = dest + str.slice(idx, Math.min(str.length, idx + options.break)) + '\n';
}
return dest;
}
else {
return str;
}
};
/**
* The command handlers
*
*/
export default (commandTree) => {
debug('init');
commandTree.listen('/base64', ({ argvNoOptions, parsedOptions: options }) => {
const str = argvNoOptions[1];
debug('str', str, argvNoOptions);
if (options.decode) {
debug('decoding');
return breakout(Buffer.from(str, 'base64').toString(), options);
}
else {
debug('encoding');
return breakout(Buffer.from(str).toString('base64'), options);
}
}, { usage });
};
//# sourceMappingURL=base64.js.map