Edito

Evidemment, s'il n'y a pas de solution, c'est qu'il n'y a pas de problème. ;o))

mercredi 4 mars 2015

PIMP my Script ( osX )


Le terminal, c'est assez Génial, on le dégaine, on tape sa petite ligne et poum après 2 ou 3 planages, une relecture : ça marche ….. Yessssss !!!! Mais bon c'est pas super sexy, & puis y'a plein de gens qui veulent pas le dégainer : Ou le vilain truc à la MS-DOS, c'est pas moderne ça monsieur, on a fait des jolis trucs avec bouton depuis les années 20 ( je vous raconte pas mes gosses, si y'a pas un système de briques Lego pour programmer, c'est déja trop dur !! ) .
Okok pour faire plus sexy, on met tout ça dans un script bash, genre #bin/bash avec la ligne de commande à la suite, on enregistre en monscript.sh ( on peu alors le mettre dans un cron ou les launchdaemons personne ne voit rien, impec ), et si c'est pas un truc a automatiser on va chercher Platypus & on recarrosse le .sh sous forme d'une belle App avec un joli nom et une jolie icône, ha ben c'est mieux ça mahame Michu, une App, un gros bouton on appuie & ça fonctionne = tiptop .
Ca reste quand même un script monolithique, et pour les interactions nada, faut tout mettre dans le .sh et l'adapter machines par machines, c'est mieux, ok, mais pas encore topmoumoute . Comment donc faire une jolie fenêtre avec des trucs à cocher ou à choisir qui pourraient interagir avec notre script ?? Ben, tu fais de l'automator ( j'ai essayé, c'est un peu limite qd même … ) ou de l'applescript ( boeurk …) . Alors si vous avez pas envie de vous casser a apprendre un truc compliqué, j'ai trouvé qque chose de 'terrible' : Pashua .
Alors là, c'est l'ami de l'Homme : Tour du proprio .

Pashua va nous permettre de construire des fenêtres, en utilisant les entrées d'interface graphique plus courantes ( Boutons, liste, menu, texte, sélection de fichier ou autre ). Cherchez pas, si vous cliquez sur Pashua l'app directement vous aurez un beau message d'erreur qui vous dira : c'est pas comme ça = va voir la doc, guy !! L'idéal dans un premier temps est de glisser Pashua dans les Applications & de renseigner l'emplacement du binaire ( Pashua.app/Contents/MacOS/ Pashua ) dans votre $PATH le binaire de Pashua .
Lancez votre éditeur de texte favori et entrez ceci:

uname.type = textfield
uname.label = Entrez l'ID utilisateur
uname.default = ID de l'utilisateur
uname.width = 340

Enregistrez : test.sh . Cela indique à Pashua qu'on veux créer un nouvel élément nommé "uname". Cet élément "uname" sera un champ de texte. Il aura un titre au-dessus du champ de texte qui dit: "Entrez l'ID de l'utilisateur", aura comme texte "ID de l'utilisateur". Et le champ sera de 340 pixels. Pour l'exécuter, avec votre Pashua dans le $PATH, tapez simplement:
  Pashua test.sh
( Ou /Applications/Pashua/Pashua.app/Contents/MacOS/Pashua test.sh  si pas dans le $PATH )
& tada :
Appuyez sur la touche de retour, ou cliquez sur le bouton "OK". Voila ce qui se passe dans le Terminal :
  $ Pashua test.sh 
 uname = ID de l'utilisateur
Pashua prend la valeur de l'élément et les envoie sur la sortie standard. Pour un shell, c'est assez génial! Entrée standard vers sortie standard, yessssssss .
Je passe rapide sur tout ce que l'on peut faire dans le script Pashua :
La Cosmétique :
- Régler la transparence de la fenêtre.
- Régler un Autoclosetime pour fermer la fenêtre sans entrée.
- X ou Y pour la position de la fenêtre ( Et des éléments )
- Un titre de fenêtre
Le Pratique :
- Créer un élement type: button
- Créer un élement type: cancelbutton
- Créer un élement type: checkbox
- Créer un élement type: combobox
- Créer un élement type: date
- Créer un élement type: defaultbutton
- Créer un élement type: image Purement Cosmétique
- Créer un élement type: openbrowser
- Créer un élement type: password
- Créer un élement type: popup
- Créer un élement type: radiobutton
- Créer un élement type: savebrowser
- Créer un élement type: text sans Entrée/Sortie
- Créer un élement type: textbox
- Créer un élement type: textfield
Vous pouvez en faire autant que vous voulez, il faut juste que le nom devant .type soit différent .

C'est bien pour l'affichage sur la sortie standard des éléments, mais ça ne nous aide pas trop dans un script. Pour gérer ça, sur le site original ou j'ai pompé l'Article en Anglais ( Credit Machtech ) il y a un script tout fait que j'ai rebricolé ( C un peu crade, j'en conviens, j'étais un peu pressé, sinon il y a aussi des exemples fournis avec Pashua ) :

#!/usr/bin/env bash
result=`/Applications/Pashua/Pashua.app/Contents/MacOS/Pashua $1 | sed 's/ /;;;/g'`
# Parse result
for line in $result
do
        key=`echo $line | sed 's/^\([^=]*\)=.*$/\1/'`
        value=`echo $line | sed 's/^[^=]*=\(.*\)$/\1/' | sed 's/;;;/ /g'`
        varname=$key
        varvalue="$value"
        eval $varname='$varvalue'

done

Enregistrons le script en wrapper.sh, et rappelons comme ça, avec la fenêtre Pashua de notre test.sh:
  ./wrapper.sh test.sh
Entrez des données et cliquez sur "OK". Qué passa ? Apparemment rien. Pas de sortie standard depuis Pashua. Mais en fait le script wrapper à capturé la sortie de Pashua ( & aussi renseigné l'emplacement de Pashua ( Impératif cf Docs avec Pashua ) en l'attribuant à des variables dans le script. Ces variables sont maintenant disponibles pour nous directement. Maintenant, la valeur de retour de uname est disponible dans "$ uname". C'est un script d'emballage !!! 
A ce Stade, en jouant avec Pashua test.sh pour fabriquer & connaitre nos valeurs de sortie std, il ne reste plus qu'a rajouter par exemple à la fin du fichier wrapper.sh

# Mon Script à Moi
rsync --recursive --verbose --perms --executability --acls --xattrs --owner --group --times --progress "$source" "$target"

Pour cet exemple une fenêtre Pashua avec 2 x openbrowser ( renvoyant une sortie source et target / source.type et target.type de type openbrowser dans le script Pashua ) lancerons un Rsync avec les options spécifiées .... C Cool non ????
Alors pour avoir plein de scripts en une ligne, allez faire un tour sur  CommandlineFu .

Et pour aller plus loin, on peut envisager de :
A - Faire une app avec platypus contenant la commande :
cd /Emplacement de Mes Scripts
./wrapper.sh test.sh



B - Dans l'App faite avec platypus Rajouter un Dossier VRAC & mettre nos scripts dedans
En supposant que l'Appli soit obligatoirement dans /Applications refaire le cd /Emplacement du Script ( qui est dans /Applications/MonAppli.app/Resources/script ) et le remplacer par cd /Applications/MonAppli.app/Resources/VRAC qui contient nos 2 scripts test et wrapper.
C - Profitons-en carrément pour mettre Pashua.app dedans aussi et renseigner son chemin dans le wrapper, puis une image si on utilise un image dans test.sh & parce que pourquoi s'arrêter en si bon chemin un dossier bin si j'utilise des binaires folkloriques ....
Voila, voila une app avec Fenêtre qui lance un Script vite fait & transportable facilement sur n'importe quelle machine pour peu que l'Appli soi bien dans /Applications ( en .dmg fait avec keka par exemple ou mieux car plus classe Dmgcreator  )


Un exemple simple mais concret de ce que vous pouvez faire avec Pashua . Mais en premier c'est mieux de lire aussi la documentation fournie, c'est assez rapide. Dans le dossier des exemples, vous trouverez un dossier qui montre comment créer directement une application double-cliquable, mais j'aime bien platypus . Et si vous aimez pas le bash, vu que Pashua accepte un fichier texte en entrée, et envoie sa sortie via la sortie standard. Ca doit fonctionner avec tout langage de script - AppleScript, Bash, Perl, PHP, Python 2, Rexx, Ruby, Tcl . Plus d'infos à jour Là : GitHub







mardi 3 mars 2015

Et les autres OS ???



Evidemment, usage oblige, j'en ai moins, mais il y a aussi les PCs ( pas que les Hackintoshs ) :
Alors en plus des livesCD a avoir dans sa trousse : http://livecdlist.com
Une fois les OS Installés :
- Sur Linux, c'est plutôt de la ligne de commande qu'il faudra jouer mais il y a quand même Framapack qui est assez sympa ( Autres équivalent Ninite sur Win&Linux, GetMacApp et MacApps sur osX ).
- Sur Windows, j'installe souvent directement Liberkey ( la totale ) et je garde toujours un HirenBootCD ou un Falcon4 & un Ultimate sous la main . Sinon je cherche un service + windows app sur Google, c'est comme ça que j'ai trouvé VirtualClone, XXclone,  ShadowImage et NetProfile .
Après c'est souvent au coup par coup .
Sinon sur Alternative.to on peut chercher facilement les équivalents d'un Soft et Filtrer les résultats par PlateForme ou Freeware, ça peut servir !!