refactor: use GLib.find_program_in_path()

Use the more efficient built-in for checking if a program is in
the PATH.
This commit is contained in:
Andy Holmes
2023-09-21 22:55:42 -07:00
parent f3257803fa
commit 3c7eac5f23
2 changed files with 1 additions and 26 deletions

View File

@@ -1833,7 +1833,7 @@ export const MyShowAppsIconMenu = class extends PopupMenu.PopupMenu {
// Only add menu entries for commands that exist in path
_appendItem(info) {
if (Utils.checkIfCommandExists(info.cmd[0])) {
if (GLib.find_program_in_path(info.cmd[0])) {
let item = this._appendMenuItem(_(info.title));
item.connect('activate', function() {

View File

@@ -893,28 +893,3 @@ export const drawRoundedLine = function(cr, x, y, width, height, isRoundLeft, is
cr.setSource(stroke);
cr.stroke();
}
/**
* Check if an app exists in the system.
*/
var checkedCommandsMap = new Map();
export function checkIfCommandExists(app) {
let answer = checkedCommandsMap.get(app);
if (answer === undefined) {
// Command is a shell built in, use shell to call it.
// Quotes around app value are important. They let command operate
// on the whole value, instead of having shell interpret it.
let cmd = "sh -c 'command -v \"" + app + "\"'";
try {
let out = GLib.spawn_command_line_sync(cmd);
// out contains 1: stdout, 2: stderr, 3: exit code
answer = out[3] == 0;
} catch (ex) {
answer = false;
}
checkedCommandsMap.set(app, answer);
}
return answer;
}