summaryrefslogtreecommitdiff
path: root/lua
diff options
context:
space:
mode:
authorAylur <[email protected]>2024-06-20 15:16:59 +0200
committerAylur <[email protected]>2024-06-20 15:16:59 +0200
commit4e32f62dcd50c545670ef67f9b0f65ed87821426 (patch)
treec4160e311b91cd7bf5ae515db8315f322e99922a /lua
parent976638c016eb21ade63779c9dade6110983dc75b (diff)
add file utils
Diffstat (limited to 'lua')
-rw-r--r--lua/astal/file.lua45
-rw-r--r--lua/astal/init.lua9
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,