Pagina 1 di 1

bash_completion

Inviato: dom 6 dic 2009, 19:31
da danix
Ciao a tutti,
qualcuno ha idea di come si faccia ad aggiungere una funzione di autocompletamento per le opzioni di slackpkg alla bash completion?? So che basta mettere lo script in /etc/bash_completion.d, ma non ho idea di come fare lo script... :(

Sarebbe fantastico se funzionasse come l'autocompletamento di rmmod, che ti lista automaticamente i moduli caricati, in questo modo se uno scrive:
slackpkg upgrade [TAB]
gli esce la lista dei pacchetti installati...

Ovviamente deve completare anche le opzioni tipo "upgrade", "install", ecc...

Avete idea di come si faccia??

Re: bash_completion

Inviato: lun 7 dic 2009, 10:34
da ildiama
Allora, per la prima parte dovrebbe essere più o meno così

Codice: Seleziona tutto

# slackpkg completion

_slackpkg() 
{
    local cur prev opts
    COMPREPLY=()
    cur="${COMP_WORDS[COMP_CWORD]}"
    prev="${COMP_WORDS[COMP_CWORD-1]}"
    opts="update check-updates install upgrade reinstall remove clean-system upgrade-all install--new blacklist download info search new-config"

    if [[ ${cur} == * ]] ; then
        COMPREPLY=( $(compgen -W "${opts}" -- ${cur}) )
        return 0
    fi
}
complete -F _slackpkg slackpkg
Mi sa che non ho aggiornato questa versione all'ultima slackpkg perché dalla 13 in poi l'autocompletion non mi funziona più e non ho ancora trovato il tempo per capire perché.
Per completare con la lista dei pacchetti installati dovresti scriverne prima uno analogo che cerca le opts in /var/log/packages. Pensavo di fare cosa gradita con lo script veloce, adesso non ritrovo più la guida che avevo seguito. Ma penso che con una semplice ricerca su google la trovi da solo. Vediamo chi fa prima :D

Re: bash_completion

Inviato: mar 8 dic 2009, 20:22
da danix
ma non basta dare ad opts il valore $(ls /var/log/packages) ??

Re: bash_completion

Inviato: mer 9 dic 2009, 10:10
da ildiama
danix ha scritto:ma non basta dare ad opts il valore $(ls /var/log/packages) ??
Ad una nuova opts2, in modo da completare: "slackpkg" "opzione" "nome pacchetto". Sì, certo. Però se non aggiusti bene il controllo te lo completerà con ogni opzione. Ad esempio slackpkg search non serve per cercare i pacchetti che già hai installato.
Comunque, se uno si accontenta, basta quello sì :)