Skip to content

Commit bb3fb4e

Browse files
committed
Améliorations du code
1 parent ea69d4e commit bb3fb4e

2 files changed

Lines changed: 14 additions & 14 deletions

File tree

core/class/script.class.php

Lines changed: 13 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -229,30 +229,30 @@ public function execute($_options = null) {
229229
return script::$_requet_cache[$request];
230230
}
231231
$first_element = explode(' ', $request)[0];
232-
$use_shebang = false;
233232
$from_path = false;
234-
if (file_exists($first_element)) {
233+
$use_shebang = false;
234+
if (is_readable($first_element)) {
235235
$env_path = explode(PATH_SEPARATOR, getenv('PATH'));
236236
$from_path = in_array(dirname($first_element), $env_path);
237237
if (!$from_path) {
238-
$shebang = trim(file_get_contents($first_element, false, null, 0, 3));
238+
$shebang = file_get_contents($first_element, false, null, 0, 3);
239239
$use_shebang = $shebang == '#!/';
240240
}
241241
if (!is_executable($first_element)) {
242242
$cmd = 'sudo chmod +x ' . $first_element . ' 2>/dev/null;';
243243
}
244244
}
245-
if (!$from_path && !$use_shebang && substr($request, -4) === '.php') {
246-
$cmd .= 'php ' . $request;
247-
} elseif (!$from_path && !$use_shebang && substr($request, -3) === '.pl') {
248-
$cmd .= 'perl ' . $request;
249-
} elseif (!$from_path && !$use_shebang && substr($request, -3) === '.py') {
250-
$cmd .= 'python ' . $request;
251-
} elseif (!$from_path && !$use_shebang && substr($request, -3) === '.rb') {
252-
$cmd .= 'ruby ' . $request;
253-
} else {
254-
$cmd .= $request;
245+
$interpreters = [
246+
'.php' => 'php',
247+
'.py' => 'python',
248+
'.pl' => 'perl',
249+
'.rb' => 'ruby'
250+
];
251+
$extension = substr($first_element, strrpos($first_element, '.', -4));
252+
if (isset($interpreters[$extension]) && !$from_path && !$use_shebang) {
253+
$cmd .= $interpreters[$extension] . ' ';
255254
}
255+
$cmd .= $request;
256256
$request_shell = new com_shell($cmd . ' 2>&1');
257257
if (isset($_options['speedAndNoErrorReport']) && $_options['speedAndNoErrorReport'] == true) {
258258
$request_shell->setBackground(true);

docs/fr_FR/index.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -200,7 +200,7 @@ Le plus sympa mais pas le plus simple à expliquer.
200200
>
201201
> - Si le script en première position de la ligne de commande contient une ligne shebang, le plugin script lancera un shell qui l’exécutera en se basant sur la directive de la 1ère ligne (shebang).
202202
> - Si le premier élément de la ligne de commande est un exécutable reconnu par le système, par exemple `/usr/bin/python3`, le plugin script lancera un shell qui exécutera cette ligne de commande.
203-
> - Si le script en première position de la ligne de commande ne contient pas de ligne shebang ET que le premier élément de laligne de commande n'est pas un exécutable reconnu par le système, l'extension de votre script doit absolument correspondre à son type. En effet le plugin script se base alors sur l'extension du script pour l'exécutable à lancer.
203+
> - Si le script en première position de la ligne de commande ne contient pas de ligne shebang ET que le premier élément de la ligne de commande n'est pas un exécutable reconnu par le système, l'extension de votre script doit absolument correspondre à son type. En effet le plugin script se base alors sur l'extension du script pour l'exécutable à lancer.
204204
205205
Dans ce dernier cas, si le nom de votre fichier ne termine pas par .php .py .pl ou .rb, le plugin script lancera un shell qui l’exécutera comme en ligne de commande.
206206

0 commit comments

Comments
 (0)