To list a directory in LUA you seem to be best off using some sort of external library, capable of dealing with both UNIX and Windows. I’ve found LuaFileSystem but I don’t know how to compile it and if the distribution will work with any OS.
Is there an easy solution? Maybe someone with more knowledge could make a small pack and example for all to benefit from?
(What I’m trying to make is a context menu generated from a directory, loading dsps and eventually xrnt)
local dir = os.currentdir()
local platform = os.platform()
if (platform == 'WINDOWS') then
-- special handling for windows
elseif (platform == 'MACINTOSH') then
-- special handling for mac
elseif (platform == 'LINUX') then
-- special handling for linux
end
local extension = '*.*'
local files = os.filenames(dir, extension)
rprint(files)
No, you don’t. You can just use the os.filenames function, like dblue showed above.
Example:
Let’s say I’m on Windows, and I have a directory at C:\Users\Foo\Documents\ that contains the following files:
bar.txt
example.wav
filewithnoextension
then this code:
for _,filename in pairs(os.filenames("C:/Users/Foo/Documents/")) do
print(filename)
end
would output
bar.txt
example.wav
filewithnoextension
to the terminal, and
for _,filename in pairs(os.filenames("C:/Users/Foo/Documents/"), "*.txt") do
print(filename)
end
would just output
bar.txt
The same goes for other platforms - if you’re on Linux, and you want to look for files in the directory /Users/foo/importantfiles/, just use
os.filenames("/Users/foo/importantfiles/")
The documentation for this function is in Lua.Standard.API.lua. Note that os.filenames is not part of the actual Lua standard library, but was added “under the hood” of Renoise for scripting. If you were just using Lua in general (i.e. not for scripting Renoise) then an external library would be the best way to do things like list files. Luckily, the Renoise dev team added some useful functions like this one.