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')
endCe 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