Skip to content

Commit

Permalink
Change emojiRegex to load lazily
Browse files Browse the repository at this point in the history
  • Loading branch information
backspace committed Feb 3, 2021
1 parent 01746ed commit 1cbd75f
Show file tree
Hide file tree
Showing 4 changed files with 11 additions and 10 deletions.
2 changes: 1 addition & 1 deletion ui/app/controllers/exec.js
Original file line number Diff line number Diff line change
Expand Up @@ -100,7 +100,7 @@ export default class ExecController extends Controller {
this.terminal.writeln('Customize your command, then hit ‘return’ to run.');
this.terminal.writeln('');
this.terminal.write(
`$ nomad alloc exec -i -t -task ${escapeTaskName(taskName)} ${
`$ nomad alloc exec -i -t -task ${escapeTaskName(this.emojiRegex, taskName)} ${
this.taskState.allocation.shortId
} `
);
Expand Down
6 changes: 4 additions & 2 deletions ui/app/routes/exec.js
Original file line number Diff line number Diff line change
Expand Up @@ -28,12 +28,14 @@ export default class ExecRoute extends Route.extend(WithWatchers) {
.catch(notifyError(this));

const xtermImport = import('xterm').then(module => module.Terminal);
const emojiRegexImport = import('emoji-regex').then(module => module.default);

return Promise.all([jobPromise, xtermImport]);
return Promise.all([jobPromise, emojiRegexImport, xtermImport]);
}

setupController(controller, [job, Terminal]) {
setupController(controller, [job, emojiRegex, Terminal]) {
super.setupController(controller, job);
controller.emojiRegex = emojiRegex;
controller.setUpTerminal(Terminal);
}

Expand Down
4 changes: 1 addition & 3 deletions ui/app/utils/escape-task-name.js
Original file line number Diff line number Diff line change
@@ -1,6 +1,4 @@
import emojiRegex from 'emoji-regex';

export default function escapeTaskName(taskName) {
export default function escapeTaskName(emojiRegex, taskName) {
// Store emoji character components differently to bypass escaping:
// "string🥳" becomes "stringUNICODE55358.UNICODE56691."
const taskNameWithTransformedEmoji = taskName.replace(emojiRegex(), emoji => {
Expand Down
9 changes: 5 additions & 4 deletions ui/tests/unit/utils/escape-task-name-test.js
Original file line number Diff line number Diff line change
@@ -1,11 +1,12 @@
import emojiRegex from 'emoji-regex';
import escapeTaskName from 'nomad-ui/utils/escape-task-name';
import { module, test } from 'qunit';

module('Unit | Utility | escape-task-name', function() {
test('it escapes task names for the faux exec CLI', function(assert) {
assert.equal(escapeTaskName('plain'), 'plain');
assert.equal(escapeTaskName('a space'), 'a\\ space');
assert.equal(escapeTaskName('dollar $ign'), 'dollar\\ \\$ign');
assert.equal(escapeTaskName('emoji🥳'), 'emoji🥳');
assert.equal(escapeTaskName(emojiRegex, 'plain'), 'plain');
assert.equal(escapeTaskName(emojiRegex, 'a space'), 'a\\ space');
assert.equal(escapeTaskName(emojiRegex, 'dollar $ign'), 'dollar\\ \\$ign');
assert.equal(escapeTaskName(emojiRegex, 'emoji🥳'), 'emoji🥳');
});
});

0 comments on commit 1cbd75f

Please sign in to comment.