View previous topic :: View next topic |
Come preferite avvenga la suddivisione ? |
1 file = 1 pacchetto (come l'albero del portage) |
|
16% |
[ 1 ] |
1 file = 1 categoria |
|
83% |
[ 5 ] |
|
Total Votes : 6 |
|
Author |
Message |
Kernel78 Moderator
Joined: 24 Jun 2005 Posts: 3654
|
Posted: Thu Aug 17, 2006 2:40 pm Post subject: [tool]Uno script per gestire le dir package.* |
|
|
L'ultima versione è reperibile sul wiki grazie agli importanti contributi di cloc3 (ormai se ne occupa praticamente lui)
Preso dalla voglia di cavoleggiare mi sono dedicato a creare un piccolo script che ho chiamato package.sh
Questo script dovrebbe (almeno nella mia mente malata) aiutare a inserire dei pacchetti nella struttura di directory package.*
Prima si poteva fare semplicemente Code: | echo '<atom>[USE o keywords]' >> /etc/portage/package.<quello_che_ti_serve> | adesso abbiamo la possibilità di gestire, invece dei file, delle molto più organizzate directory, l'unico inconveniente è che non è più possibile farlo con un solo comando (almeno io non ne sono al corrente) e bisogna prima creare l'albero adeguato al pacchetto e successivamente mettere il nostro atom in un file avente lo stesso nome del pacchetto. _________________ Le tre grandi virtù di un programmatore: pigrizia, impazienza e arroganza. (Larry Wall).
Prima di postare un file togli i commenti con Code: | grep -vE '(^[[:space:]]*($|(#|!|;|//)))' |
Last edited by Kernel78 on Tue Aug 29, 2006 8:16 pm; edited 4 times in total |
|
Back to top |
|
|
randomaze Bodhisattva
Joined: 21 Oct 2003 Posts: 9985
|
Posted: Thu Aug 17, 2006 3:54 pm Post subject: Re: [tool]Uno script per gestire le dir package.* |
|
|
Kernel78 wrote: | Lo script non si preoccupa se già esiste una definizione per quel pacchetto, andando a sovrascriverla.
A me sembrava una cosa carina, ditemi voi se ho buttato via 10 minuti o se a qualcuno viene utile. |
Al momento non ho modo di provare se funziona... in ogni caso lo script dovrebbe essere un poco più conveniente dell'echo dato che la distrazione é sempre in agguato e le redirect >> e > non fanno esattamente la stessa cosa _________________ Ciao da me! |
|
Back to top |
|
|
cloc3 Advocate
Joined: 13 Jan 2004 Posts: 4810 Location: http://www.gentoo-users.org/user/cloc3/
|
Posted: Thu Aug 17, 2006 8:03 pm Post subject: |
|
|
bello.
però usi una filosofia incompatibile con lo scriptino di preparazione che avevo fatto io.
Infatti, tu generi un file distinto per ogni pacchetto e lo collochi nella cartella corrispondente alla categoria di appartenenza.
Io avevo preferito raccogliere in un file singolo tutti i pacchetti appartenenti ad una stessa categoria, che dava nome al file corrispondente.
Pubblico di seguito una revisione compatibile del mio scriptino:
Code: |
s939 ~ # cat split_package_list-2.sh
#!/bin/bash
HELP="
questo programma: \n
1. genera un backup di /etc/portage/package.""$""1; \n
2. genera la cartella /etc/portage/package.""$""1; \n
3. suddivide in file distinti per cateoria il contenuto di package.""$""1. \n
\n
sintassi: split_package_list-2.sh opzione \n
Opzioni: -mask -unmask -keywords -use --help \n
"
# controlli iniziali
opzioni=" -mask -unmask -keywords -use "
if [ "$1" == "--help" ]; then echo -e "$HELP";exit;fi
if [ "$opzioni" == "${opzioni/$1}" ]; then
echo parametro non valido;
exit;
fi
chiave=${1:1}
gen_path="/etc/portage/package."
if [ -d ${gen_path}"$chiave" ]; then
echo "La cartella ${gen_path}"$chiave" esiste già"
exit 1
fi
if [ ! -e ${gen_path}"$chiave" ]; then
echo "il percorso ${gen_path}"$chiave" non esiste"
exit 1
fi
#backup
mv -v ${gen_path}"$chiave" ${gen_path}"$chiave".old
mkdir ${gen_path}"$chiave"
#split: decommentare le due linee nel seguito e commentare le successive se si desidera sopprimere i commenti.
#for pacchetto in `sed '/^#/d' ${gen_path}"$chiave".old |sed 's/[>=#]//g' | sed -e 's/-[0-9].*//'`; do
for pacchetto in `sed 's/[>=#]//g' ${gen_path}"$chiave".old | sed -e 's/-[0-9].*//'`; do
if [ ! -e ${gen_path}"$chiave"/$pacchetto ]; then
echo $pacchetto
categoria=$(echo -n $pacchetto |sed -e 's/\/.*//')
mkdir -p ${gen_path}"${chiave}"/$categoria
#grep -v ^# ${gen_path}"$chiave".old | grep "$pacchetto" > ${gen_path}"$chiave"/$pacchetto
grep "$pacchetto" ${gen_path}"$chiave".old > ${gen_path}"$chiave"/$pacchetto
fi
done
|
Magari dagli un occhio, se funge. _________________ vu vu vu
gentù
mi piaci tu |
|
Back to top |
|
|
Kernel78 Moderator
Joined: 24 Jun 2005 Posts: 3654
|
Posted: Fri Aug 18, 2006 7:22 am Post subject: |
|
|
Ops ... e pensare che ho sviluppato il mio pensando al tuo, solo che mentre il tuo l'ho usato sulla mia macchina a casa lo script l'ho sviluppato in ufficio
Che bischero ... sto valutando di modificarlo per adattarlo alla tua prima versione dello script.
Con la modalità che ho implementato io il risultato che si ottiene è qualcosa di simile all'albero del portage ma penso che sia una granularità eccessiva ...
Avete pareri in merito ? Vi verrebbe più comodo tenere 1 file = 1 pacchetto o preferite 1 file = 1 categoria ? _________________ Le tre grandi virtù di un programmatore: pigrizia, impazienza e arroganza. (Larry Wall).
Prima di postare un file togli i commenti con Code: | grep -vE '(^[[:space:]]*($|(#|!|;|//)))' |
|
|
Back to top |
|
|
cloc3 Advocate
Joined: 13 Jan 2004 Posts: 4810 Location: http://www.gentoo-users.org/user/cloc3/
|
Posted: Fri Aug 18, 2006 7:42 am Post subject: |
|
|
Kernel78 wrote: | lo script l'ho sviluppato in ufficio
|
Se il principale viene a sapere che era pure sbagliato . _________________ vu vu vu
gentù
mi piaci tu |
|
Back to top |
|
|
.:chrome:. Advocate
Joined: 19 Feb 2005 Posts: 4588 Location: Brescia, Italy
|
Posted: Fri Aug 18, 2006 11:59 am Post subject: Re: [tool]Uno script per gestire le dir package.* |
|
|
nessuna delle due possibilità:
la prima mi sembra un po' troppo confusionaria: creerebbe una quantità di file enorme difficile da gestire
la seconda secondo me non rispecchierebbe lo scopo per cui si utilizza package.keywords. mi spiego:
se voglio installare la versione testing di GNOME dovrò pescare pacchetti da gnome-base, gnome-extra, x11-libs, e altro ancora che non mi viene in mente.
sarebbe più logico, secondo me, avere un file che si chiama appunto "gnome" con tutto quello che serve, indipendentemente dalla categoria.
sono riuscito a spiegarmi? |
|
Back to top |
|
|
Kernel78 Moderator
Joined: 24 Jun 2005 Posts: 3654
|
Posted: Fri Aug 18, 2006 12:14 pm Post subject: |
|
|
Penso di aver capito cosa intendi ma la complessità di gestione a quel punto mi sembra molto più grande e, almeno a prima vista, mi sembra più "confusionaria", cerco di spiegarmi.
La complessità arriverebbe dal definire un file (es. gnome) in cui mettere tutto quello che voglio per smascherare gnome ma il nome del file verrebbe scelto arbitrariamente dall'utente e quindi almeno un parametro in più (su cui non potrei fare controlli in quanto arbitrario) ciò ovviamente si presta a errori di scrittura che genererebbero più file (es. gmone o gnmoe ecc ecc).
Da questo deriverebbe anche confusione; poniamo che l'utente non sbagli MAI, dovrebbe ricordarsi che alcuni pacchetti di x11-libs si trovano in un file gnome e altri magari in un file kde, magari conflittuali l'uno con l'altro.
Effettivamente mi rendo conto che un file per pacchetto è eccessivo ma quello che proponi tu mi pare molto più vulnerabile all'errore umano, mi convinco sempre più che la strada migliore sia 1 file = 1 categoria
Quasi quasi provo a implementare un file di configurazione con un parametro che specifichi se usare 1 file = 1 pacchetto, 1 file = 1 categoria o 1 file = 1 concetto (la proposta di k).
Va da se che nell'ultimo caso ci sarebbe bisogno di un parametro in più da passare allo script ...
Cosa ve ne pare ? _________________ Le tre grandi virtù di un programmatore: pigrizia, impazienza e arroganza. (Larry Wall).
Prima di postare un file togli i commenti con Code: | grep -vE '(^[[:space:]]*($|(#|!|;|//)))' |
|
|
Back to top |
|
|
.:chrome:. Advocate
Joined: 19 Feb 2005 Posts: 4588 Location: Brescia, Italy
|
Posted: Fri Aug 18, 2006 4:52 pm Post subject: |
|
|
Kernel78 wrote: | Effettivamente mi rendo conto che un file per pacchetto è eccessivo ma quello che proponi tu mi pare molto più vulnerabile all'errore umano, mi convinco sempre più che la strada migliore sia 1 file = 1 categoria |
questione di punti di vista, credo.
io uso il metodo che ho descritto nel post precedente e non mi trovo male. nel momento voglio sapere in quale file si trova un certo pacchetto basta un grep.
ti mostro il lato opposto del problema (quello in cui acquista maggiornamente significato il mio metodo):
poniamo che oggi decido di installare la versione testing di GNOME. mi faccio dunque il mio file e caccio dentro quello che mi serve.
domani decido di disinstallare, oppure viene stabilizzata la versione che ho installato... mi basta cancellare un file per ristabilire la normalità.
non è più sepmplice fare così? |
|
Back to top |
|
|
Onip Advocate
Joined: 02 Sep 2004 Posts: 2912 Location: Parma (Italy)
|
Posted: Fri Aug 18, 2006 5:06 pm Post subject: |
|
|
quoto k.gothmog, quella che lui propone è la prima cosa che mi era venuta in mente quando ho saputo della possibilità di gestire package.* come dir. Anche se una "feature" del genere, probabilmente, starebbe meglio integrata in forcekeymask IMHO.
Byez _________________ Linux Registered User n. 373835
Titus Lucretius Carus, De Rerum Natura - Tantum religio potuit suadere malorum |
|
Back to top |
|
|
Kernel78 Moderator
Joined: 24 Jun 2005 Posts: 3654
|
Posted: Fri Aug 18, 2006 5:55 pm Post subject: |
|
|
Diciamo che per accontentare tutti ho reso configurabile il programma per scegliere la strada che si preferisce
Ho fatto un po' di prove veloci e mi sembrava andare tutto bene ma il bug è sempre in agguato ...
Intanto sto iniziando a pensare a uno script per la gestione completa: inserire, cancellare, commentare e modificare.
Spero di trovare il tempo ... _________________ Le tre grandi virtù di un programmatore: pigrizia, impazienza e arroganza. (Larry Wall).
Prima di postare un file togli i commenti con Code: | grep -vE '(^[[:space:]]*($|(#|!|;|//)))' |
|
|
Back to top |
|
|
cloc3 Advocate
Joined: 13 Jan 2004 Posts: 4810 Location: http://www.gentoo-users.org/user/cloc3/
|
Posted: Sat Aug 19, 2006 7:49 am Post subject: |
|
|
Kernel78 wrote: | Diciamo che per accontentare tutti ho reso configurabile il programma per scegliere la strada che si preferisce
|
Fantastico, messa così, la cosa sembra avere una forma.
Tanto per cominciare, una cosa bella, ma alla quale bisogna fare attenzione, è che le tre filosofie possono tranquillamente coesistere.
Bisogna però fare a non collocare lo stesso pacchetto in posti diversi.
Attualmente manca ancora una procedura di editing, per togliere i pacchetti indesiderati o da spostare, ma bisogna comunque evitare i doppioni.
Per questo vorrei proporre la seguente patch:
Code: |
25a26,27
> ESISTE="Il pacchetto è già presente nei seguenti file:\n"
>
62a65
> check=`grep -rl "$category"/"$package" "$pkg_path"` ; if [ "$check" ] ; then echo -e "$ESISTE""$check" & exit 1;fi
|
Se c'è qualche problema con il taglia incolla che fa fallire la patch, basta inserire la variabile all'inizio e l'ultima riga prima del comando `mkdir -p $pkg_path;` _________________ vu vu vu
gentù
mi piaci tu |
|
Back to top |
|
|
Luca89 Advocate
Joined: 27 Apr 2005 Posts: 2107 Location: Agrigento (Italy)
|
Posted: Sat Aug 19, 2006 3:37 pm Post subject: |
|
|
Onip wrote: | quoto k.gothmog, quella che lui propone � la prima cosa che mi era venuta in mente quando ho saputo della possibilit� di gestire package.* come dir. Anche se una "feature" del genere, probabilmente, starebbe meglio integrata in forcekeymask IMHO.
Byez |
Già ci sta, forcekeymask quando vede /etc/portage/package.* come directory chiede all'utente il nome del file dove piazzare i pacchetti. Anche io sono d'accordo con l'idea di k.gothmog, ho configurato tutto in questo modo fin dal primo momento che ho avuto fra le mani il nuovo portage e mi trovo benissimo. _________________ Running Fast! |
|
Back to top |
|
|
Onip Advocate
Joined: 02 Sep 2004 Posts: 2912 Location: Parma (Italy)
|
Posted: Mon Aug 21, 2006 2:18 pm Post subject: |
|
|
ottimo, non lo avevo ancora provato. Sto ancora utilizzando il "singolo file". Al prossimo smascheramento pesante vedrò di cambiare. _________________ Linux Registered User n. 373835
Titus Lucretius Carus, De Rerum Natura - Tantum religio potuit suadere malorum |
|
Back to top |
|
|
cloc3 Advocate
Joined: 13 Jan 2004 Posts: 4810 Location: http://www.gentoo-users.org/user/cloc3/
|
Posted: Sun Aug 27, 2006 11:30 pm Post subject: |
|
|
Kernel78 wrote: |
Intanto sto iniziando a pensare a uno script per la gestione completa: inserire, cancellare, commentare e modificare.
Spero di trovare il tempo ...
|
con il permesso di Kernel78, lo ho fatto io (almeno credo), perché non dormo moltissimo.
ho inserito anche un certo numero di controlli.
il programma dovrebbe ridurre al minimo il rischo di errori di sintassi e riconosce certe caratteristiche del portage locale facendo uso di `equery uses`.
se non ci sono bachi funziona. È più lungo di quanto mi aspettassi.
lo posto qui e poi lo metto sul wiki:
Ho cambiato anche il file /etc/packagerc:
Code: |
s939 ~ # cat /etc/packagerc
# group specifica la modalità di raggruppamento.
# Può essere controllata attraverso l'opzione -rc
# senza editare questo file.
# Valori possibili:
# 0 1 file = 1 categoria (default)
# 1 1 file = 1 pacchetto (genera una struttura portage-like)
# 2 1 file = 1 concetto (definito dall'utente)
# Il valore 2 permette di aggiungere un ulteriore parametro
# -group <nome_gruppo> (es. -group gnome).
# in questo modo i pacchetti possono essere catalogati in file
# con denominazione concettuale arbitraria, prescelta dall'utente.
group=2
|
e questo è il programma:
Code: |
s939 ~ # cat `which package-0.9.7.sh`
#!/bin/bash
DESCRIPTION="
\n
# sviluppato sull'impianto progettuale di Kernel78\n
# per ingannare l'insonnia\n
# http://forums.gentoo.org/viewtopic-t-490005.html\n
\n
#\n
#tool di gestione della cartella /etc/portage\n
#\n
# FEATURES:\n
# a) 3 modalità differenti di catalogazione dei pacchetti\n
# 1 file per singolo pacchetto\n
# 1 file per singola categoria\n
# 1 file per categoria concettuale arbitraria\n
# nota: il programma permette di mantenere una modalità mista, ed effettua\n
# automaticamente le modifiche indispensabili in caso di transizione.\n
# per ricavare informazioni sul sistema, il programma richiama \`equery uses\`.\n
#\n
# b) è controllata l'unicità dei pacchetti: non è possibile inserire\n
# lo stesso pacchetto in due file differenti, anche usando modalità miste\n
# di catalogazione.\n
#\n
# c) esiste una funzione di rimozione di singoli pacchetti.\n
#\n
# d) è possibile inserire linee valide commentate.\n
#\n
# e) sono implementati alcuni controlli formali sugli atom\n
# - verifica l'uso corretto del numero di versione \n
# - non accetta pacchetti non definiti in portage (o in portage_overlay)\n
# - non accetta useflag non riconosciute tra quelle specifiche del pacchetto.\n
# - ripulisce eventuali opzioni superflue nelle chiamate di tipo -mask o -unmask.\n
# - controlla la validità delle accept_keywords.\n
#\n
# f) modifica automaticamente il proprio file di configurazione /etc/packagerc\n
#\n
"
HELP="\nUso: package.sh OPZIONE 'PACCHETTO [FLAG]'\n\n
Gestisce l'aggiunta di un pacchetto alle directory /etc/portage/package.*\n
\n
-desc descrizione\n
\n
OPZIONE deve essere una delle seguenti:\n
-keywords gestisce la directory package.keywords\n
-mask gestisce la directory package.mask\n
-unmask gestisce la directory package.unmask\n
-use gestisce la directory package.use\n
\n
-group -g gestisce la catalogazione per concetto\n
vedi /etc/packagerc\n
\n
-rm permette di rimuovere un pacchetto valido dalla chiave indicata\n
esempio:\n
pachages.sh -rm 'sys-apps/baselayout foo' -use\n
non premettere al nome del pacchetto i simboli '<=>'
\n\n
PACCHETTO deve essere un atom valido e può includere flag USE o keyword,\n
l'atom è una successione di word separate da spazi\n
esempi validi sono:\n
<=app-emulation/wine-0.9.15 ~x86\n
=x11-base/xorg-x11-7.0 -3dfx\n
sys-kernel/gentoo-sources symlink\n
si può inserire una linea commentata, premettendo un backslash al cancelletto:\n
\\#>=x11-base/xorg-x11-7.0 -3dfx\n
\n
# sviluppato sull'impianto progettuale di Kernel78\n
# http://forums.gentoo.org/viewtopic-t-490005.html\n
"
source /etc/packagerc
ESISTE="Il pacchetto è già presente nei seguenti file:\n"
NON_ESISTE="il pacchetto indicato non esiste in portage"
NO_USE_FLAG=" : questa use_flag indicata non appartiene a quelle specifiche del pacchetto"
NO_ACCEPT_KEYWORD="accept keyword non valida"
NO_VERSION="stai utilizzando i simboli '<=>' : serve il numero di versione"
NO_CONDITION_ALLOWED="in questo contesto non puoi specificare il numero di versione o usare i simboli '<=>'"
NO_VALID_GROUP="i gruppi validi sono 0 1 2"
NO_GROUP="modalità 2 attiva ma opzione -group non utilizzata. Inserimento in modalità 0."
function is_valid_accept_keyword ()
{
KEY=`cat /usr/portage/profiles/arch.list`
for i in $KEY ; do
if [ "$1" == "$i" ] || [ "$1" == "~""$i" ] || [ "$1" == "-""$i" ] || [ "$1" == "-*" ]; then return 0 ;fi
done
echo $NO_ACCEPT_KEYWORD ; exit 1
}
function file_to_dir ()
{
local pkg_path
pkg_path="$1"
mv -f "$pkg_path" "${pkg_path}"".tmp"
mkdir "$pkg_path"
for string in `cut -f1 -d' ' "${pkg_path}"".tmp" |cut -f2 -d'/'`;do
if [ ! -e "$pkg_path""$string" ]; then
grep "$string" "${pkg_path}"".tmp" >> "${pkg_path}"/"$string"
fi
done
rm -f "${pkg_path}"".tmp"
return 0
}
function dir_to_file ()
{
local pkg_path
pkg_path="$1"
mv -f "$pkg_path" "${pkg_path}"".tmp"
cat "${pkg_path}"".tmp"/*>"${pkg_path}"
rm -rf "${pkg_path}"".tmp"
return 0
}
if [ ! -n "$group" ]
then
echo "group=0">>/etc/packagerc
group=0
fi
ARGREQ=1
argreq="$#"
num_atom=0
until [ -z "$1" ]
do
case "$1" in
"-desc" | "-help" | "-h" ) description=1;;
"-rc" ) rc=1;group=$2;;
"-keywords"|"-use"|"-mask"|"-unmask" ) dir_suff=${1/-/};;
"-group" |"-g" ) gruppo=$2;shift;ARGREQ=3;;
"-rm" ) remove=1;ARGREQ=2;;
* ) atom="${atom}""$1"" ";num_atom=$(($num_atom +1));;
esac
shift
done
if [ $description ]; then echo -e $DESCRIPTION; exit 0;fi
if [ $rc ]; then
case "$group" in "0" | "1" | "2" ) sed_string="/^group=/s/.*/group="$group"/";
sed -i ${sed_string} /etc/packagerc
exit 0;;
* ) echo "$NO_VALID_GROUP";exit 1;;
esac
fi
if [ -z "$atom" ];then echo -e $HELP;exit 1;fi
if [[ -n $gruppo && "$remove" == 1 ]] ;then ARGREQ=4;fi
argreq=$(($argreq - $num_atom ))
if [ $argreq -ne $ARGREQ ]
then
echo -e $HELP
exit 1
fi
if [[ "$group" == "2" && -z "$gruppo" ]]; then echo $NO_GROUP;fi
gen_path="/etc/portage/package."
category=$(echo -n $atom|sed -e 's/\/.*//'|sed -e 's/[#<>=]//g')
package=$(echo -n $atom|sed -e 's/.*\///'|sed -e 's/-[0-9].*//'|sed -e 's/\s.*//')
pkg_path="$gen_path""$dir_suff"
base_string=`echo "$atom"|cut -f1 -d' '|sed 's/\(.*\)-[[:digit:]]\(.*\)/\1/'|tr -d '<=>'`;
match=`grep -rH "$base_string" $pkg_path`
for line in $match; do
if [ "$base_string" == "`echo "$line"|cut -f2 -d':'`" ];then
# rimozione righe
if [ "$remove" == 1 ];then
sed_string=/`echo "$base_string"|sed 's|/|\\\/|'`/d;
file=`echo "$line"|cut -f1 -d':'`
sed -i ${sed_string} "$file"
if [ ! -s "$file" ];then rm -f "$file";fi
else
# controllo di unicità
is_unic="$is_unic"`echo "$line"|sed 's/\(.*\):\(.*\)/\1\\n/'`
fi
fi;
done;
if [ "$remove" == 1 ];then exit 0;fi
if [ -n "$is_unic" ];then echo -e "$ESISTE""$is_unic" & exit 1;fi
if [ "${atom:0:1}" == "#" ] ;then is_comment=1;fi;
case "$group" in
0) filename=$category;
if [ -d "$pkg_path"/"$filename" ];then dir_to_file "$pkg_path"/"$filename";fi;;
1) pkg_path="$pkg_path"/"$category";
filename=$package;
if [ -f "$pkg_path" ];then file_to_dir "${pkg_path}";fi;;
2) pkg_path=$gen_path$dir_suff;
filename=${gruppo-"$category"};
if [ -d "$pkg_path"/"$category" ];then dir_to_file "$pkg_path"/"$category";fi;;
*) exit 1;;
esac
#controlla se il pacchetto indicato in $atom esiste in portage
valid_use_flags=`equery uses -a "$category"/"$package"|sed 's/[-+]//g'`;
if [ "${valid_use_flags:0:1}" == "!" ];then echo "$NON_ESISTE"; exit 1;fi
# fine controllo
#controlli di validità formale
#1. controllo del corretto uso del numero di versione
case ${atom:0:1} in "<" | ">" | "=" )
version=`echo "$atom"|cut -f1 -d' '|sed 's/\(.*\)-\(.*\)/\2/'`;
if [[ "$dir_suff" == "keywords" && -n "$version" ]];then echo $NO_CONDITION_ALLOWED;exit 1;fi
if [ -z "$version" ];then echo $NO_VERSION;exit 1;fi;
;;esac
#2. la useflag è una IUSE?
if [ "$dir_suff" == "use" ] && [ ! "$is_comment" ]; then
use=`echo $atom|sed 's/.*[[:blank:]]//'|tr -d '+-'`
for use_flag in $use; do
if [ "${valid_use_flags/"$use_flag"}" == "$valid_use_flags" ];
then echo "$use_flag""$NO_USE_FLAG"; exit 1 ;
fi
done
fi
#3. ripulisce eventuali opzioni nelle chiamate di tipo -mask o -unmask
#4. controlla la validità della accept_keyword
case "$dir_suff" in
"mask" | "unmask" ) atom=`echo "$atom"|cut -f1 -d' '`;;
"keywords" ) is_valid_accept_keyword `echo $atom|cut -f2 -d ' '`;;
esac
mkdir -p $pkg_path;
tmpfile="/tmp/fo"
while [ -e "$tmpfile"o ]; do tmpfile="${tmpfile}"o ;done
tmpfile="$tmpfile"o
if [ ! -e "$pkg_path"/"$filename" ]; then touch "$pkg_path"/"$filename";fi
echo "$atom"| cat - "$pkg_path"/"$filename"|sort >"$tmpfile" ; mv "$tmpfile" "$pkg_path"/"$filename"
|
edit 1 versione 0.9.5
edit 2 versione 0.9.7 _________________ vu vu vu
gentù
mi piaci tu
Last edited by cloc3 on Tue Aug 29, 2006 4:25 pm; edited 3 times in total |
|
Back to top |
|
|
cloc3 Advocate
Joined: 13 Jan 2004 Posts: 4810 Location: http://www.gentoo-users.org/user/cloc3/
|
Posted: Mon Aug 28, 2006 11:06 pm Post subject: |
|
|
ho fatto una nuova versione.
quella di prima funzionava, ma non mi piaceva il controllo del flusso.
nella prima stesura, infatti, non riuscivo abbastanza bene a dipanare il traffico di condizioni da coordinare e avevo messo delle patch che non i piacevano nelle funzioni, per tenere in piedi il meccanismo.
d'altra parte non sono abituato a maneggiare codice complicato.
adesso ho spostato la funzione di rimozione e il controllo di unicità all'inizio e ne ho semplificato il codice.
provo a chiamarla versione 0.9
a proposito: nessuno ha provato a far girare il programma? _________________ vu vu vu
gentù
mi piaci tu |
|
Back to top |
|
|
cloc3 Advocate
Joined: 13 Jan 2004 Posts: 4810 Location: http://www.gentoo-users.org/user/cloc3/
|
Posted: Tue Aug 29, 2006 4:22 pm Post subject: |
|
|
adesso ho anche tolto gli apici.
non piaceva costringere l'utente a unire in una stringa l'atom da inserire.
così ho modificato leggermente le istruzioni di parsing.
adesso i parametri possono essere introdotti in qualunque ordine. solo l'atom è letto sequenzialmente, ma può essere separato dalle opzioni.
in più, adesso accetta anche le use con il + o il meno davanti, mentre prima falliva il controllo.
gulp. questo mi deprime un po'.
se un baco così evidente passa inosservato, vuol dire che il tool è proprio inutile .
pazienza. a me è comodo e ho imparato un sacco di trucchi scrivendolo.
scusate se sono stato un po' disordinato nel presentarlo. _________________ vu vu vu
gentù
mi piaci tu |
|
Back to top |
|
|
Kernel78 Moderator
Joined: 24 Jun 2005 Posts: 3654
|
Posted: Tue Aug 29, 2006 8:18 pm Post subject: |
|
|
cloc3 wrote: | adesso ho anche tolto gli apici.
non piaceva costringere l'utente a unire in una stringa l'atom da inserire.
così ho modificato leggermente le istruzioni di parsing.
adesso i parametri possono essere introdotti in qualunque ordine. solo l'atom è letto sequenzialmente, ma può essere separato dalle opzioni.
in più, adesso accetta anche le use con il + o il meno davanti, mentre prima falliva il controllo.
gulp. questo mi deprime un po'.
se un baco così evidente passa inosservato, vuol dire che il tool è proprio inutile .
pazienza. a me è comodo e ho imparato un sacco di trucchi scrivendolo.
scusate se sono stato un po' disordinato nel presentarlo. |
Io purtroppo in questo periodo sono strapieno di lavoro e non è cha abbia molto tempo per mettermi a testare lo script ma apprezzo enormemente tuto quello che fai per migliorarlo, spero di riuscire a liberarmi in fretta per poterlo testare e aiutarti a perfezionarlo ulteriormente _________________ Le tre grandi virtù di un programmatore: pigrizia, impazienza e arroganza. (Larry Wall).
Prima di postare un file togli i commenti con Code: | grep -vE '(^[[:space:]]*($|(#|!|;|//)))' |
|
|
Back to top |
|
|
cloc3 Advocate
Joined: 13 Jan 2004 Posts: 4810 Location: http://www.gentoo-users.org/user/cloc3/
|
Posted: Tue Aug 29, 2006 8:26 pm Post subject: |
|
|
Kernel78 wrote: | spero di riuscire a liberarmi in fretta per poterlo testare e aiutarti a perfezionarlo ulteriormente |
grazie. adesso lo lascio stare almeno una settimana come è, perché credo che funzioni.
poi, se non saltano fuori bachi o idee per migliorarlo, proverò a ripulire il codice, eliminare le variabili superflue e renderlo più leggibile. _________________ vu vu vu
gentù
mi piaci tu |
|
Back to top |
|
|
|