Lua portage sous linux

Salut à tous,

J’ai un petit souci avec un script lua et ne connaissant pas ce langage je vous demande un petit coup de main :slight_smile:
Ce script qui me pose problème est d’un mod développé pour windows, la plateforme faisant fonctionner ce mod est porté pour linux mais le mod étant développé pour windows me rend quelques incompatibilités une fois lancé dans mon bash ;'
Voici le morceau du script qui me pose problème :

local Load = {{Main.Root.ChatCommands},{Main.Root.LevelSetup},{Main.Root.ServerEvents}}; for i = 1, #Load, 1 do local Directory = string.gsub(Load[i][1], "/", [[\]]); os.execute('cd '..Directory..' && dir /a:-d /s /b > "__Temp.txt"'); local File = io.open(Load[i][1].."/__Temp.txt","r"); if (File) then for line in (File:lines()) do local NewDir = string.gsub(line, [[\]], "/"); if (string.lower(string.sub(NewDir, -3))=="lua") then LoadFile(NewDir); end end File:close(); os.execute('cd '..Directory..' && del "__Temp.txt"'); end

sh me renvoie un truc du genre ne peut pas ouvrir le dossier Chat_commands, et je crois qu’il y as un rapport avec "dir /a: -d /s /b"
Pensez-vous que l’erreur est dans ce morceau ? Merci :slight_smile:

Bon je te préviens, j’ai jamais fait de LUA*… mais c’est assez facile à comprendre :

Load = tableau de chaines for i in [1 .. taille(Load)] : Directory = remplacer / par \ dans Load[i][1] (séparateurs de chemin propres à Windows) cd Directory && lister uniquement les fichiers > temp.txt ouvrir temp.txt : pour chaque *ligne* du fichier : NewDir = remplacer \ par / dans la *ligne* (la liste des fichiers contient des \ qu'il faut retransformer en séparateurs supportés par LUA, à savoir /) si le nom de fichier finit par "lua" : charger le fichier dont le nom est contenu dans la *ligne* cd Directory && supprimer temp.txt

Plusieurs endroits donc où intervenir :

  • les deux remplacements des séparateurs de chemin ne sont pas nécessaires
  • transformer le dir en ls (avec les bonnes options pour n’afficher que les fichiers, un nom de fichier par ligne – ça serait pê plus facile avec find)
  • transformer le del en rm

Voir également à quoi correspondent les options /s et /b de dir pour avoir le comportement équivalent avec ls/find.

* Edit : après réflexion, en fait si… y’a longtemps, je sais plus du tout pourquoi, j’ai tout oublié depuis, mais j’ai écrit du LUA une fois… :mrgreen:

Langage utilisé pour awesome, conky et luakit pour les plus connus :083

Merci bien, au final je dois le réécrire de zéro car ce sera une bonne excuse pour me mettre au lua ;’)
Je vous tiendrais au courant quand je me lancerais (pour l’instant j’évite de croiser le lanceur de mon éditeur :p)