Quelques scripts Lua

Roland57 Membre non connecté
-
- Voir le profil du membre Roland57
- Inscrit le : 08/02/2020
- Site internet
- Groupes :
Je commence une discussion où je vous présente (sans prétention) quelques-uns des scripts Lua que j'utilise quotidiennement. Peut-être que certains pourront vous servir. J'espère que vous montrerez comment vous faites les mêmes choses en Bash ou en Python...
Je commence par un script tout simple qui me permet de modifier le fichier de configuration de Geany. Quelquefois Geany se plante et ne veut plus se rouvrir. Il faut alors supprimer le fichier de configuration, et rééditer le nouveau fichier à la main, ce qui est fastidieux. Par exemple pour ma part je veux une indentation de deux espaces.
(Ah zut, il n'y a pas de coloration syntaxique pour Lua. Tant pis.)
Code TEXT :
-- geanyconf.lua -- Script pour modifier le fichier de configuration de Geany -- Usage : lua geanyconf.lua local mygeanyconf = '/home/roland/.config/geany/geany.conf' -- à remplacer local file = io.open(mygeanyconf, 'r') local text = file:read('*a') file:close() -- Valeurs par défaut : -- use_tab_to_indent=true -- pref_editor_tab_width=4 -- indent_type=1 text = text:gsub('use_tab_to_indent=true', 'use_tab_to_indent=false') text = text:gsub('pref_editor_tab_width=%d', 'pref_editor_tab_width=2') text = text:gsub('indent_type=%d', 'indent_type=0') file = io.open(mygeanyconf, 'w') file:write(text) file:close()
Je joins le fichier geany.conf, au cas où quelqu'un voudrait s'en servir pour faire un essai.
geany_conf.zip
Édité par Roland57 Le 14/03/2023 à 06h28

Roland57 Membre non connecté
-
- Voir le profil du membre Roland57
- Inscrit le : 08/02/2020
- Site internet
- Groupes :
J'ai sur mon disque dur des tas de projets GitHub que j'ai clonés. Afin de gagner de la place, je voudrais supprimer les dossiers .git, mais conserver pour mémoire l'URL du projet.
Le script suivant va faire cela pour moi :
Code TEXT :
--~ rmgit.lua --~ Recherche tous les dossiers .git dans le répertoire courant, --~ lit le fichier config et en extrait l'URL du projet, --~ sauvegarde l'URL dans un fichier --~ et supprime le dossier .git. --~ NB : Utilise des commandes Linux (find, rm), donc ne fonctionne que sous Linux. function RunCommand(ACommand) local i, t, popen = 0, {}, io.popen for s in popen(ACommand):lines() do i = i + 1 t[i] = s end return t end function ReadText(AFileName) local f = io.open(AFileName, 'rb') if f ~= nil then local s = f:read('*all') f:close() return s else return nil end end function WriteText(AFileName, AText) local f = io.open(AFileName, 'w') f:write(AText) io.close(f) end local dossiers = RunCommand('find . -type d -name ".git" 2> /dev/null') table.sort(dossiers) for i = 1, #dossiers do io.write('Dossier ' .. dossiers[i] .. '\n') local s = ReadText(dossiers[i] .. '/config') if s ~= nil then local url = string.match(s, 'url = https://.-%.git') if url ~= nil then io.write(' URL : ' .. url .. '\n') -- Création du fichier contenant l'URL local filename = string.sub(dossiers[i], 1, -5) .. 'url.txt' io.write(' Création du fichier ' .. filename .. '\n') WriteText(filename, url .. '\n') -- Suppression du dossier .git io.write(' Suppression du dossier .git\n') os.execute('rm -rf "' .. dossiers[i] .. '"') else io.write(' La ligne recherchée n\'existe pas.\n') end else io.write(' Le fichier config n\'existe pas.\n') end io.write('\n') end
Ce qui donne quelque chose comme ça :
Code TEXT :
[roland@localhost c]$ lua rmgit.lua Dossier ./aaa/bbb/.git URL : url = https://github.com/user1/project1.git Création du fichier ./aaa/bbb/url.txt Suppression du dossier .git Dossier ./aaa/project2/.git URL : url = https://github.com/user2/project2.git Création du fichier ./aaa/project2/url.txt Suppression du dossier .git Dossier ./echecs/monprojet1/gitlab/.git La ligne recherchée n'existe pas. Dossier ./test/.git Le fichier config n'existe pas. [roland@localhost c]$
Vous remarquerez que l'opération échoue lorsque l'URL ne commence pas par https. Ça tombe bien, ce sont mes projets personnels (que j'ai clonés avec SSH) : pour ces projets-là j'ai besoin du dossier .git.
P.-S. Quand j'édite mon message, les lignes vides dans le code disparaissent. C'est fait exprès ?
Édité par Roland57 Le 14/03/2023 à 12h05

Visiteur
Visiteur
Roland57 :
Quand j'édite mon message, les lignes vides dans le code disparaissent. C'est fait exprès ?
J'ai également remarqué ce comportement. Il est donc préférable de ne pas utiliser de lignes vides dans le même bloc de code. Parce que, dans le futur, l'édition pourra être effectuée par un modérateur ou automatiquement par le moteur du forum.

Jybz Membre non connecté
-
- Voir le profil du membre Jybz
- Inscrit le : 10/10/2018
- Groupes :
-
Administrateur
-
Forgeron
artenaki :
Bonjour,
J'ai également remarqué ce comportement. Il est donc préférable de ne pas utiliser de lignes vides dans le même bloc de code. Parce que, dans le futur, l'édition pourra être effectuée par un modérateur ou automatiquement par le moteur du forum.
Roland57 :
Quand j'édite mon message, les lignes vides dans le code disparaissent. C'est fait exprès ?
J'ai également remarqué ce comportement. Il est donc préférable de ne pas utiliser de lignes vides dans le même bloc de code. Parce que, dans le futur, l'édition pourra être effectuée par un modérateur ou automatiquement par le moteur du forum.
Ou encore, on évite d'éditer

Téléverser une image : /wiki/hebergement-de-fichiers-sur-mlo
Arch | Machine | OS |
x86_64 | lenovo x250 | mga9 |
armv7hl | bananapro | mga9 |
aarch64 | Raspberry Pi 4B | mga9 |

Jybz Membre non connecté
-
- Voir le profil du membre Jybz
- Inscrit le : 10/10/2018
- Groupes :
-
Administrateur
-
Forgeron
Certe, par défaut, c'est gros car il contient plein de branche et toute l'historique.
Mais il contient les sources origines (url), la structure, etc.
Le mieux à mon avis, c'est de le "dégraisser" en lui demandant d'oublier l'historique et les branches. Certes, niveau place ça ne sera pas aussi efficace que de le supprimer, mais ça permets de le mettre facilement à jour (git pull)
Téléverser une image : /wiki/hebergement-de-fichiers-sur-mlo
Arch | Machine | OS |
x86_64 | lenovo x250 | mga9 |
armv7hl | bananapro | mga9 |
aarch64 | Raspberry Pi 4B | mga9 |

Roland57 Membre non connecté
-
- Voir le profil du membre Roland57
- Inscrit le : 08/02/2020
- Site internet
- Groupes :
Pas faux. Et pas mal ton idée de dégraissage.
En revanche, pas très convaincu par vos réponses sur les lignes vides.

Édité par Roland57 Le 14/03/2023 à 12h03

Jybz Membre non connecté
-
- Voir le profil du membre Jybz
- Inscrit le : 10/10/2018
- Groupes :
-
Administrateur
-
Forgeron
On peut automatiser comme ceci: (ATTENTION : je n'ai PAS testé.)
Code BASH :
#!/bin/bash IFS=$'\n' for i in $(find ${HOME} -type d -name '.git') ; do pushd ${i} cd .. git fetch --depth=1 git reflog expire --expire-unreachable=now --all git gc --aggressive --prune=all popd done
Téléverser une image : /wiki/hebergement-de-fichiers-sur-mlo
Arch | Machine | OS |
x86_64 | lenovo x250 | mga9 |
armv7hl | bananapro | mga9 |
aarch64 | Raspberry Pi 4B | mga9 |

Roland57 Membre non connecté
-
- Voir le profil du membre Roland57
- Inscrit le : 08/02/2020
- Site internet
- Groupes :

Merci pour les commandes git. Je vais les essayer.
Édité par Roland57 Le 16/03/2023 à 08h39
Répondre
Vous n'êtes pas autorisé à écrire dans cette catégorie