Plugin Script : PR documentation + remarque lien Market

Hello

j’ai repris la documentation avec la mise a jour des copie d’écran afin de prendre en compte la présentation V4 et surtout le nouveau chemin des scripts

@Alexandre @Loic
Par contre, j’ai vu qu’il restait encore les liens vers le market. Faudrait-il pas les supprimer vu que cela n’existe plus (surtout pour le partage)

A disposition pour toutes questions

Tant que l’on y est dans la documentation du plugin-script

IMPORTANT

L’extension de votre script doit absolument correspondre à son type. Ex .php pour un type php. En effet Jeedom se base sur l’extension du script pour l’executable à lancer (php si .php, python si .py….)

a ajouter :
Toute fois si aucune de ces extensions n’est donné le plugin script tentera d’exécuter celui-ci. (pratique pour exécuter du python3 par exemple)

Le PR est passé, je veux bien en faire un autre

ou tu le fait ?

Salut,
A mon avis en l’état ça manque de détails. L’important c’est aussi "comment il tente de l’exécuter, sur quoi ça se base, ou le type par défaut)
On imagine tous que jeedom tente d’exécuter un script quand on lui demande

je veux bien faire le PR pour faire la correction

mais je change par quoi ?

Je n’ai pas tout corriger peut-être car je l’ai jamais utilisé
comme par exemple l’option « Délai avant d’actualiser les infos suite à une action » à mon avis c’est du numérique que l’on doit saisir et là on peut mettre des lettres

Si @olive précise un peu son idée on trouvera bien une formulation.
Là de mon point de vue (presque exterieur), on parle de .py = python et python3 arrive par surprise.
Sachant que pour l’un et l’autre partagent l’extension .py …
J’ai lu le sujet à ce propos, donc j’ai bien quelques références en tête mais le « novice » va être largué

Je me tente à une reformulation
Toutefois si aucune de ces extensions n’est reconnue par le plugin script, celui-ci tentera de l’exécuter en se basant sur son contenu.

Non c’est justement .py ==> Python2 et pas de python3 possible
alors que pas d’extension (connue par plugin-script) permet l’exécution selon la directive de 1er ligne …

comme le problème n’existe pratiquement que pour python d’ou :

(pratique pour exécuter du python3 par exemple)

Le code est clair au niveau du dernier else

Donc la contexte Jeedom, uniquement… Mais partout ailleurs c’est juste le python par défaut…

C’est ça l’important dans le sujet. Sous réserve qu’elle existe et que l’utilisateur sache ce qu’est une directive.

Le code, c’est pas une base pour le commun des mortels … Là encore, c’est uniquement parce que le shell employé par jeedom (il y en a plusieurs sous unix) sait prendre en compte l’info de la première ligne…
Quant à « aucune de ses extensions » comme la liste n’est pas précisée… c’est pas plus facile

On est d’accord sur le fond, mon avis reste que ça mérite d’être encore plus clair… :
donc il faut préciser le tableau de correspondance extension/executable…

Et on notera aussi que le python2 à la fin de l’année, ça sera très largement minoritaire

ben si tu veut préciser pour du python3 c’est :

#! /usr/bin/env python3

que pour le python3… Pourquoi tu veux rester aussi spécifique ?
il y en a des tas d’autres, moi j’aime bien celles-ci aussi

#!/bin/csh -f
#!/bin/ksh

Oui bien sur …

Sur ces csh et ksh quel est l’extension naturel du fichier ?

souvent .sh … exactement comme le cas du python.
C’est pour ça qu’il faut éviter de trop détailler quand même sinon on va se tapper la liste de tous les shell exotiques unix et autres (yaml …)

On s’approche d’un consensus ?

Version markdown

>**IMPORTANT**
>
> L'extension de votre script doit absolument correspondre à son type. En effet Jeedom se base sur l'extension du script pour l'exécutable à lancer :

| Extension | Exécutable |
| :-: | :-: |
| .rb | Ruby |
| .php |  PHP |
| .py | Python2 |
| .pl | PERL |

Toutefois si votre extension ne fait pas partie de cette liste, le plugin script tentera de l’exécuter en se basant sur son contenu, notament la première ligne du fichier comme pour un script unix classique.

Il n’y a pas que dans l’extension c’est tout le contenu du nom de fichier
ex:

fichier.py3
fic.py.toto.pl

seront lancer en phython 2

Oui et c’est un ânerie dans le code…
Autant le py3 c’est presqu’une norme… pour les autres notations c’est un user sadique

ou on retape le code pour qu’il corresponde a la doc
ou on corrige la doc pour bien expliqué ce qu’il se passe.

la 3iéme est corriger le code et la doc …

Mettre .py et .py3 dans le tableau ça va pas faire avancer le truc…

Ben non car .py3 ca marche pas …

.py3 je suis pas certain que ce soit un véritable convention de nommage …

De toute façon, il faut corriger le code… pathinfo, ça fait très bien le taff

			case 'script':
			if($this->getType() == 'info' && isset(script::$_requet_cache[$request])){
				$result = script::$_requet_cache[$request];
			}else{
				$file= explode(' ',trim($request));
				$info = pathinfo($file[0]);
				switch(strtolower($info['extension'])) {
					case 'php':
						$request_shell = new com_shell('php ' . $request . ' 2>&1');
						break;
					case 'rb':
						$request_shell = new com_shell('ruby ' . $request . ' 2>&1');
						break;
					case 'py':
						$request_shell = new com_shell('python ' . $request . ' 2>&1');
						break;
					case 'py3':
						$request_shell = new com_shell('python3 ' . $request . ' 2>&1');
						break;
					case 'pl':
						$request_shell = new com_shell('perl ' . $request . ' 2>&1');
						break;
					default:
						$request_shell = new com_shell($request . ' 2>&1');
				}
				log::add('script', 'debug', 'Execution de : ' . $request_shell->getCmd());
				if (isset($_options['speedAndNoErrorReport']) && $_options['speedAndNoErrorReport'] == true) {
					$request_shell->setBackground(true);
				}
				$result = trim($request_shell->exec());
				if($this->getType() == 'info'){
					script::$_requet_cache[$request] = $result;
				}
			}

ça fera le tri dans les nommages à la con et ça resoudra sans doute le souci de python3

J’ai pas testé mais ça doit pas être loin d’une soluce