An error occurred while fetching folder content.
Ilya Konyukhov
authored
Currently to determine current source path, user has to do it by getting current source info from the stack and parse it manually This commit adds couple little helpers for this task called `debug.sourcefile()` and `debug.sourcedir()`, which returns a path to the file being executed. The path is relative to the current working directory. If such path cannot be determined, '.' is returned (i.e. interactive mode). There is an exception if you are running script with an absolute path. In that case, absolute path will be returned too. ```bash tarantool /absolute/path/to/the/script.lua ``` There are also handy shortcuts for that functions: `debug.__file__` and `debug.__dir__` @TarantoolBot document Title: Document new debug helper methods There are two more helpers in debug module `sourcefile()` and `sourcedir()`. This two helpers returns relative paths to source file and directory respectively. There are also `debug.__file__` and `debug.__dir__` which are just handy ways to call `sourcefile()` and `sourcedir()`. It should be mentioned that it is only possible to determine real path to the file, if the function was defined in a some lua file. `loadstring` may be exception here, since lua will store whole string in debug info. There is also a possible pitfall because of tail call optimization, so if the function `fn` is defined inside `myapp/init.lua` like this: ```lua function fn() return debug.sourcefile() end ``` It would not be possible to determine file path correctly because that function would not appear in a stacktrace. Even worse, it may return wrong result, i.e. actual path where "parent" function was defined. To force the interpreter to avoit this kind of optimizations you may use parenthesis like this: ```lua function fn() return (debug.sourcefile()) end ``` Also both `sourcefile` and `sourcedir` functions have optional level argument, which allows set the level of the call stack function should examine for source path. By default, 2 is used. (cherry picked from commit 70b8583c)
Name | Last commit | Last update |
---|