app.context - Context API
Access Finder selection context and plugin directory information.
Methods
app.context.selectedFiles()
Gets the file paths selected in Finder.
Returns: table - Array of absolute paths
local files = app.context.selectedFiles()
for _, path in ipairs(files) do
app.log.info(path)
end
app.context.currentDirectory()
Gets the directory of the current Finder window.
Returns: string - Directory path
local dir = app.context.currentDirectory()
-- "/Users/username/Documents"
app.context.pluginsDirectory()
Gets the plugin installation directory.
Returns: string - Directory path
local dir = app.context.pluginsDirectory()
-- "~/Library/Group Containers/group.net.ymlab.iRightMenu.pro/Plugins"
app.context.pluginDirectory()
Gets the current plugin’s directory.
Returns: string - Directory path
local dir = app.context.pluginDirectory()
-- "~/Library/Group Containers/.../Plugins/com.example.my-plugin"
-- Read a plugin resource file
local configPath = app.path.join(dir, "config.json")
Examples
Processing selected files
function MyPlugin:handleAction(context)
local files = app.context.selectedFiles()
local dir = app.context.currentDirectory()
app.log.info("Current directory: " .. dir)
app.log.info("Selected files: " .. #files)
for i, file in ipairs(files) do
app.log.info("File " .. i .. ": " .. file)
end
end
Reading plugin configuration
function MyPlugin:loadConfig()
local pluginDir = app.context.pluginDirectory()
local configPath = app.path.join(pluginDir, "config.json")
if app.file.exists(configPath) then
local content = app.file.read(configPath)
return app.json.parse(content)
end
return {}
end