diff options
author | Aylur <[email protected]> | 2024-06-20 15:16:59 +0200 |
---|---|---|
committer | Aylur <[email protected]> | 2024-06-20 15:16:59 +0200 |
commit | 4e32f62dcd50c545670ef67f9b0f65ed87821426 (patch) | |
tree | c4160e311b91cd7bf5ae515db8315f322e99922a /lua | |
parent | 976638c016eb21ade63779c9dade6110983dc75b (diff) |
add file utils
Diffstat (limited to 'lua')
-rw-r--r-- | lua/astal/file.lua | 45 | ||||
-rw-r--r-- | lua/astal/init.lua | 9 |
2 files changed, 54 insertions, 0 deletions
diff --git a/lua/astal/file.lua b/lua/astal/file.lua new file mode 100644 index 0000000..ca5a592 --- /dev/null +++ b/lua/astal/file.lua @@ -0,0 +1,45 @@ +local lgi = require("lgi") +local Astal = lgi.require("Astal", "0.1") +local GObject = lgi.require("GObject", "2.0") + +local M = {} + +---@param path string +---@return string +function M.read_file(path) + return Astal.read_file(path) +end + +---@param path string +---@param callback fun(content: string, err: string): nil +function M.read_file_async(path, callback) + Astal.read_file_async(path, function(_, res) + local content, err = Astal.read_file_finish(res) + callback(content, err) + end) +end + +---@param path string +---@param content string +function M.write_file(path, content) + Astal.write_file(path, content) +end + +---@param path string +---@param content string +---@param callback? fun(err: string): nil +function M.write_file_async(path, content, callback) + Astal.write_file_async(path, content, function(_, res) + if type(callback) == "function" then + callback(Astal.write_file_finish(res)) + end + end) +end + +---@param path string +---@param callback fun(file: string, event: integer): nil +function M.monitor_file(path, callback) + return Astal.monitor_file(path, GObject.Closure(callback)) +end + +return M diff --git a/lua/astal/init.lua b/lua/astal/init.lua index 37c7119..f56c3f5 100644 --- a/lua/astal/init.lua +++ b/lua/astal/init.lua @@ -9,19 +9,28 @@ local Binding = require("astal.binding") local App = require("astal.application") local Process = require("astal.process") local Time = require("astal.time") +local File = require("astal.file") return { App = App, Variable = Variable, Widget = Widget, bind = Binding.new, + interval = Time.interval, timeout = Time.timeout, idle = Time.idle, + subprocess = Process.subprocess, exec = Process.exec, exec_async = Process.exec_async, + read_file = File.read_file, + read_file_async = File.read_file_async, + write_file = File.write_file, + write_file_async = File.write_file_async, + monitor_file = File.monitor_file, + Astal = Astal, Gtk = Gtk, Gdk = Gdk, |