Forum de la communauté francophone autour du projet OpenMoko
Vous n'êtes pas identifié.
Bonjour,
Voici l'auto-complétion de la commande opkg install ! D'autant que j'ai trouvé tout ça en bidouillant car je n'avais aucune compétence il y a 2 heures.
Fini les opkg list | grep -i machintrucmuche ![]()
Je liste les paquets disponibles et je supprime la description de chaque ligne car je ne veux que le nom du packet. Ensuite je remplace les retour chariot par des espaces pour les avoir en une seule liste en ligne (format accepté par bash_completion visiblement).
opkg list | sed 's/ -.*//' > /tmp/.opkg-list-cache cat /tmp/.opkg-list-cache | tr "\n" " " > /home/root/.opkg-list-cache
Là il faudrait coder un truc du genre
PKG=`cat /home/root/.opkg-list-cache`
_myopkg()
{
local cur prev
COMPREPLY=()
cur="${COMP_WORDS[COMP_CWORD]}"
prev="${COMP_WORDS[COMP_CWORD-1]}"
if [[ ${cur} == * ]] ; then
COMPREPLY=( $(compgen -W "$PKG" -- ${cur}) )
return 0
fi
}
complete -F _myopkg opkgMais je n'ai jamais réussit à le faire marcher. Donc méthode très très crade, je met la liste des paquets directement dans le code du script... Voir le fichier sur pastebin
Ensuite je lance un
bash . /etc/bash_completion.d/opkg-1.bash
Mais l'autocompletion prend entre 5 et 20 secondes, c'est moins long de taper le nom exact du paquet ! Alors je m'attelle à une optimisation du procédé et pas rien j'espère obtenir des temps de réponse instantanés ![]()
Dernière modification par kaoul (27-09-2008 21:56:14)
Hors ligne
J'ai commencé à coder un générateur cela donne ceci :
program_begin='_myopkg()
{
local cur prev
COMPREPLY=()
cur="${COMP_WORDS[COMP_CWORD]}"
prev="${COMP_WORDS[COMP_CWORD-1]}"
if [[ ${cur} == '
program_then='* ]] ; then
COMPREPLY=( $(compgen -W "'
program_end='" -- ${cur}) )
return 0
fi
}
complete -F _myopkg opkg'
packages=`cat /home/root/.opkg-list-cache`
for letter in a b c d e f g h i j k l m n o p q r s t u v w x y z
do
echo "$program_begin$letter$program_then$packages$program_end" > $letter-opkg.bash # Each letter completion on a separate file.
doneHors ligne
Hey, sympa comme petite contribution, je testerai ça dans la semaine je pense.
Fred
Hors ligne
Youhou ! Ca marche d'enfer j'ai terminé. Au menu : autocomplétion instantannée ![]()
Vous pouvez aller le télécharger sur mon blog : Openmoko Opkg Autocompletion
Dîtes moi si ça vous est utile j'y ai passé pas mal d'heures...
Dernière modification par kaoul (16-08-2009 18:40:58)
Hors ligne
Salut,
C'est très intéressant tout ça, car l'absence d'autocompletion est vraiment perturbante quand on utilise habituellement apt-get.
Par contre, je ne comprend pas vraiment ce qu'il faut faire au final.
Le blog indiqué est down, mais il semble que la page soit désormais ici : http://blog.upme.fr/?/Linux/28-Openmoko … ages-Names
Il propose de récupérer un script qui ressemble fort à celui de kaoul et de le placer ici : /usr/bin/0pkg-update
wget http://pastebin.com/pastebin.php?dl=f1d7295c1 && mv f1d7295c1.sh /usr/bin/0pkg-update (chez moi, via ssh, le fichier téléchargé s'appelle pastebin.php?dl=f1d7295c1).
Doit-on exécuter ce script?
Ensuite, on a :
bash
. /0pkg-completion
Que signifie ceci? Je n'ai pas de script Opkg-completion.
Merci de votre aide!
Hors ligne
Salut,
Mon blog à changé d'adresse là et l'article que tu as trouvé avec google est le mien. J'ai modifié mon post précédent pour le lien.
Ensuite :
- Si wget t'appelle le fichier pastebin_etc... alors remplace simplement f1d7295c1.sh par pastebin.php?dl=f1d7295c1
- Le && au milieu ne sert qu'à tapper deux commandes en une ligne, tape simplement :
wget http://pastebin.com/pastebin.php?dl=f1d7295c1
mv pastebin.php?dl=f1d7295c1 /usr/bin/0pkg-update
- Attention c'est zéropkg et pas opkg donc zéropkg-completion ca donne . /0pkg-completion
Si tu as d'autres questions, je répondrai sur ce post.
Dernière modification par kaoul (16-08-2009 18:48:28)
Hors ligne