Forum openmoko-fr.org

Forum de la communauté francophone autour du projet OpenMoko

Vous n'êtes pas identifié.

Annonce

Bienvenue sur ce forum.

Face à un afflux de spammers, les inscriptions ont été désactivée.
Si vous souhaitez vous inscrire, il faudra en faire la demande auprès du webmaster (voir la section "Contact" sur le Blog).

#1 27-09-2008 21:12:26

kaoul
Addicted-Moko
Lieu: Montpellier
Date d'inscription: 12-08-2008
Messages: 130
Site web

Autocomplétion de opkg :D

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 smile

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).

Code:

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

Code:

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 opkg

Mais 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

Code:

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 big_smile

Dernière modification par kaoul (27-09-2008 21:56:14)

Hors ligne

 

#2 27-09-2008 22:33:03

kaoul
Addicted-Moko
Lieu: Montpellier
Date d'inscription: 12-08-2008
Messages: 130
Site web

Re: Autocomplétion de opkg :D

J'ai commencé à coder un générateur cela donne ceci :

Code:

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.
done

Hors ligne

 

#3 28-09-2008 14:23:04

youshe
Fun-Moko
Date d'inscription: 06-08-2008
Messages: 73

Re: Autocomplétion de opkg :D

Hey, sympa comme petite contribution, je testerai ça dans la semaine je pense.

Fred

Hors ligne

 

#4 28-09-2008 15:04:54

kaoul
Addicted-Moko
Lieu: Montpellier
Date d'inscription: 12-08-2008
Messages: 130
Site web

Re: Autocomplétion de opkg :D

Youhou ! Ca marche d'enfer j'ai terminé. Au menu : autocomplétion instantannée big_smile
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

 

#5 16-08-2009 13:06:31

Toub
Addicted-Moko
Date d'inscription: 17-07-2009
Messages: 106

Re: Autocomplétion de opkg :D

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!


Freerunner A7 - SHR unstable sur µSD (06/09/2009 full + upgrades)

Hors ligne

 

#6 16-08-2009 18:47:48

kaoul
Addicted-Moko
Lieu: Montpellier
Date d'inscription: 12-08-2008
Messages: 130
Site web

Re: Autocomplétion de opkg :D

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

 

Pied de page des forums

Propulsé par FluxBB 1.2.20
Traduction par FluxBB.fr

Hébergé par :
Bearstech