Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- local function ends_with(str, ending)
- return ending == "" or str:sub(-#ending) == ending
- end
- local version = GetConvar("version", "win32")
- local isWindowsVersion = ends_with(version, "win32") or ends_with(version, "win64")
- -- can't test
- local basedir = GetResourcePath("runcode")
- -- Finds all files in the specified basedir
- -- Optional search in subdirectories using subdirs
- -- Absolute enables absolute paths, subdirs force absolute paths
- function GetFilesInDirectory(basedir, subdirs, absolute)
- if subdirs then absolute = false end -- prevent prefixing path
- local files = {}
- local call = ("dir \"%s\" /a-D /b%s"):format(basedir, subdirs and " /s" or "")
- if not isWindowsVersion then
- -- make call a linux ls command or w/e
- end
- for fname in io.popen(call):lines() do
- files[#files + 1] = (absolute and basedir .. "/" or "") .. fname
- end
- return files
- end
- -- Alternative that gets files and folders in a pre-formatted structure
- function GetStructureFromDirectory(basedir)
- local structure = {}
- if isWindowsVersion then
- local function step(currentdir)
- local stepStructure = {}
- local folders = GetFoldersInDirectory(currentdir)
- for _, folder in next, folders do
- if not stepStructure.folders then stepStructure.folders = {} end
- stepStructure.folders[folder] = step(currentdir .. "/" .. folder)
- end
- local files = GetFilesInDirectory(currentdir)
- stepStructure.files = files
- return stepStructure
- end
- structure = step(basedir)
- else
- -- idk linux man
- end
- return structure
- end
- -- Finds all folders in the specified basedir
- -- Absolute enables absolute paths
- function GetFoldersInDirectory(basedir, absolute)
- local folders = {}
- local call = ("dir \"%s\" /aD /b"):format(basedir)
- if not isWindowsVersion then
- -- make call a linux ls command or w/e
- end
- for fname in io.popen(call):lines() do
- folders[#folders + 1] = (absolute and basedir .. "/" or "") .. fname
- end
- return folders
- end
- print("files", json.encode(GetFilesInDirectory(basedir, true, true)))
- local folders = GetFoldersInDirectory(basedir, true)
- print("folders", json.encode(folders))
- for _, folder in next, folders do
- print("->", folder, json.encode(GetFilesInDirectory(folder)))
- end
- print("struct", json.encode(GetStructureFromDirectory(basedir)))
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement