Contenu | Rechercher | Menus

Annonce

Ubuntu 16.04 LTS
Commandez vos DVD et clés USB Ubuntu-fr !

Appel à contributeurs. Réunion pour la refonte du wiki lundi 26 juin

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

#1 Le 30/03/2017, à 10:42

Vergeylen

[Script Bash] Téléchargez vos stars Github en local (et à jour!)

Hello les Ubunteros,

Étant addict des projets open-sources sur Github, j'en "starre" pas mal en fonction de mes besoins (la section trending est une vraie mine d'or pour ça).

J'aime particulièrement les outils du web décentralisés permettant une navigation et hors censure. Toutefois, "starrer" ces repos ne suffira pas si un jour il venait à y avoir une censure (il serait alors trop tard pour les cloner!). J'ai donc réalisé un script qui me télécharge quotidiennement mes stars Github en local, et les tient à jour. Il télécharge également 100% des branches existantes. Si on "déstarre" un repo, le répertoire local est supprimé localement.

Le script est sur Github (seulement 53 lignes de bash wink )

Remarque: il est nécessaire de faire tourner le script dans un répertoire local dédié sinon les répertoires ne représentant pas des stars github seraient supprimés.

Hors ligne

#2 Le 30/03/2017, à 16:27

Watael

Re : [Script Bash] Téléchargez vos stars Github en local (et à jour!)

salut,

while [ ! -s "$url" ]

->

until test -n "$url"
echo | grep | grep | cut

on doit pouvoir faire plus élégant avec awk (idem en bas de code).

pourquoi repos n'est-il pas un tableau, plutôt qu'une variable "plate" ? il n'y a pas de risques qu'un élément comporte un caractère de l'IFS ?

if [[ ! -z

voir plus haut, et si on n'utilise pas les fonctions avancées des doubles crochets, alors autant utiliser un test simple.

condition simple : test simplifié :

test -d $"dir" || echo "$dir n'existe pas."

c'est rare d'utiliser pushd et popd smile <3
le déplacement dans les sous-répertoires est-il indispensable ?

echo "${t1[@]}" "${t2[@]}" |tr

->

printf '%s\n' "${t1[@]}" "${t2[@]}"

eval, c'est mal.

Hors ligne

#3 Le 30/03/2017, à 17:40

Vergeylen

Re : [Script Bash] Téléchargez vos stars Github en local (et à jour!)

Hello Watael,

Merci pour ton feedback! cool J'ai du boulot on dirait! roll

Je vais m'atteler à ça dès que possible, je suis 100% d'accord avec tes remarques. Par contre, j'ignore comment faire avec awk (dont la syntaxe m'est assez cryptique) ou rendre "repos" variable "plate". Quel en serait d'ailleurs l'intérêt (curiosité)?

Je te fais signe quand j'aurai avancé.
Encore Merci!

Moi aussi j'aime utiliser pushd / popd tongue

Dernière modification par Vergeylen (Le 30/03/2017, à 17:40)

Hors ligne

#4 Le 30/03/2017, à 19:20

Watael

Re : [Script Bash] Téléchargez vos stars Github en local (et à jour!)

je me suis mal exprimé : repos est une variable.
si un de ses éléments peut contenir un caractère figurant dans l'IFS, on peut parser le résultat de la commande pour en mettre le résultat dans un tableau.
l'intérêt est qu'une boucle for lira sans problème un tableau dont les éléments contiennent des caractères de l'IFS, alors qu'elle bouclera sur chaque partie des éléments d'une variable.

je distingue une variable "plate" d'une variable tableau.


eval, c'est mal.

Hors ligne

#5 Le 16/04/2017, à 11:59

Vergeylen

Re : [Script Bash] Téléchargez vos stars Github en local (et à jour!)

Hello Watael,

while [ ! -s "$url" ]

Corrigé smile

if [[ ! -z

Corrigé smile
Il reste néanmoins un test où je n'ai pas pu simplifier, car la regexp n'est pas évaluée lors d'un test simple (aide bienvenue)

echo "${t1[@]}" "${t2[@]}" |tr

Corrigé smile

Je n'ai pas modifié

echo | grep | grep | cut

car je ne maitrise pas awk, mais je vais tenter quand j'aurai un peu + de temps.

pourquoi repos n'est-il pas un tableau, plutôt qu'une variable "plate" ? il n'y a pas de risques qu'un élément comporte un caractère de l'IFS ?

Normalement non.

Hors ligne