Secure your code as it's written. Use Snyk Code to scan source code in minutes - no build needed - and fix issues immediately.
// If there is no argument, use the cursor position
var message = '<strong>' + this.param.name + '</strong>: ';
if (this.param.description) {
// TODO: This should be a short description - do we need to trim?
message += this.param.description.trim();
// Ensure the help text ends with '. '
if (message.charAt(message.length - 1) !== '.') {
message += '.';
}
if (message.charAt(message.length - 1) !== ' ') {
message += ' ';
}
}
var status = Status.VALID;
var start = this.arg ? this.arg.start : Argument.AT_CURSOR;
var end = this.arg ? this.arg.end : Argument.AT_CURSOR;
var predictions;
// Non-valid conversions will have useful information to pass on
if (this.conversion) {
status = this.conversion.status;
if (this.conversion.message) {
message += this.conversion.message;
}
predictions = this.conversion.predictions;
}
// Hint if the param is required, but not provided
var argProvided = this.arg && this.arg.text !== '';
var dataProvided = this.value !== undefined || argProvided;
// If there is no argument, use the cursor position
var message = '<strong>' + this.param.name + '</strong>: ';
if (this.param.description) {
// TODO: This should be a short description - do we need to trim?
message += this.param.description.trim();
// Ensure the help text ends with '. '
if (message.charAt(message.length - 1) !== '.') {
message += '.';
}
if (message.charAt(message.length - 1) !== ' ') {
message += ' ';
}
}
var status = Status.VALID;
var start = this.arg ? this.arg.start : Argument.AT_CURSOR;
var end = this.arg ? this.arg.end : Argument.AT_CURSOR;
var predictions;
// Non-valid conversions will have useful information to pass on
if (this.conversion) {
status = this.conversion.status;
if (this.conversion.message) {
message += this.conversion.message;
}
predictions = this.conversion.predictions;
}
// Hint if the param is required, but not provided
var argProvided = this.arg && this.arg.text !== '';
var dataProvided = this.value !== undefined || argProvided;
Request.prototype.getParamStatus = function(param) {
var args = this.args || {};
// Check if there is already a value for this parameter.
if (param.name in args) {
// If there is no value set and then the value is VALID if it's not
// required or INCOMPLETE if not set yet.
if (args[param.name] == null) {
if (param.defaultValue === null) {
return Status.VALID;
} else {
return Status.INCOMPLETE;
}
}
// Check if the parameter value is valid.
var reply,
// The passed in value when parsing a type is a string.
argsValue = args[param.name].toString();
// Type.parse can throw errors.
try {
reply = param.type.parse(argsValue);
} catch (e) {
return Status.INVALID;
}
// implied by the fact that we're asking the assignments in turn, and
// we want to avoid thing falling between the cracks, but we do need
// to check that the argument does have a position
if (this.arg.start === -1) {
return false;
}
// We're clearly done if the position is past the end of the text
if (position > this.arg.end) {
return false;
}
// If we're AT the end, the position is captured if either the status
// is not valid or if there are other valid options including current
if (position === this.arg.end) {
return this.conversion.status !== Status.VALID ||
this.conversion.predictions.length !== 0;
}
// Otherwise we're clearly inside
return true;
},
function defaultArgsProvider(request, callback) {
var args = request.args,
params = request.command.params;
for (var i = 0; i < params.length; i++) {
var param = params[i];
// If the parameter is already valid, then don't ask for it anymore.
if (request.getParamStatus(param) != Status.VALID ||
// Ask for optional parameters as well.
param.defaultValue === null)
{
var paramPrompt = param.description;
if (param.defaultValue === null) {
paramPrompt += " (optional)";
}
var value = prompt(paramPrompt, param.defaultValue || "");
// No value but required -> nope.
if (!value) {
callback();
return;
} else {
args[param.name] = value;
}
}
// implied by the fact that we're asking the assignments in turn, and
// we want to avoid thing falling between the cracks, but we do need
// to check that the argument does have a position
if (this.arg.start === -1) {
return false;
}
// We're clearly done if the position is past the end of the text
if (position > this.arg.end) {
return false;
}
// If we're AT the end, the position is captured if either the status
// is not valid or if there are other valid options including current
if (position === this.arg.end) {
return this.conversion.status !== Status.VALID ||
this.conversion.predictions.length !== 0;
}
// Otherwise we're clearly inside
return true;
},
// If there is no argument, use the cursor position
var message = '<strong>' + this.param.name + '</strong>: ';
if (this.param.description) {
// TODO: This should be a short description - do we need to trim?
message += this.param.description.trim();
// Ensure the help text ends with '. '
if (message.charAt(message.length - 1) !== '.') {
message += '.';
}
if (message.charAt(message.length - 1) !== ' ') {
message += ' ';
}
}
var status = Status.VALID;
var start = this.arg ? this.arg.start : Argument.AT_CURSOR;
var end = this.arg ? this.arg.end : Argument.AT_CURSOR;
var predictions;
// Non-valid conversions will have useful information to pass on
if (this.conversion) {
status = this.conversion.status;
if (this.conversion.message) {
message += this.conversion.message;
}
predictions = this.conversion.predictions;
}
// Hint if the param is required, but not provided
var argProvided = this.arg && this.arg.text !== '';
var dataProvided = this.value !== undefined || argProvided;
var editorCss = require("text!cockpit/ui/cli_view.css");
var event = require("pilot/event");
var dom = require("pilot/dom");
dom.importCssString(editorCss);
var event = require("pilot/event");
var keys = require("pilot/keys");
var canon = require("pilot/canon");
var Status = require('pilot/types').Status;
var CliRequisition = require('cockpit/cli').CliRequisition;
var Hint = require('cockpit/cli').Hint;
var RequestView = require('cockpit/ui/request_view').RequestView;
var NO_HINT = new Hint(Status.VALID, '', 0, 0);
/**
* On startup we need to:
* 1. Add 3 sets of elements to the DOM for:
* - command line output
* - input hints
* - completion
* 2. Attach a set of events so the command line works
*/
exports.startup = function(data, reason) {
var cli = new CliRequisition(data.env);
var cliView = new CliView(cli, data.env);
};
/**
* A class to handle the simplest UI implementation
docs.push(param.description ? param.description : '(No description)');
if (param.defaultValue === undefined) {
docs.push(' <em>[Required]</em>');
}
else if (param.defaultValue === null) {
docs.push(' <em>[Optional]</em>');
}
else {
docs.push(' <em>[Default: ' + param.defaultValue + ']</em>');
}
docs.push('');
}, this);
docs.push('');
}
return new Hint(Status.VALID, docs.join(''), arg);
}
};
var editorCss = require("text!cockpit/ui/cli_view.css");
var event = require("pilot/event");
var dom = require("pilot/dom");
dom.importCssString(editorCss);
var event = require("pilot/event");
var keys = require("pilot/keys");
var canon = require("pilot/canon");
var Status = require('pilot/types').Status;
var CliRequisition = require('cockpit/cli').CliRequisition;
var Hint = require('cockpit/cli').Hint;
var RequestView = require('cockpit/ui/request_view').RequestView;
var NO_HINT = new Hint(Status.VALID, '', 0, 0);
/**
* On startup we need to:
* 1. Add 3 sets of elements to the DOM for:
* - command line output
* - input hints
* - completion
* 2. Attach a set of events so the command line works
*/
exports.startup = function(data, reason) {
var cli = new CliRequisition(data.env);
var cliView = new CliView(cli, data.env);
data.env.cli = cli;
};
/**