aboutsummaryrefslogtreecommitdiff
path: root/src/lib/manager.lua
diff options
context:
space:
mode:
authorNathan Reiner <nathan@nathanreiner.xyz>2026-04-20 14:47:58 +0200
committerNathan Reiner <nathan@nathanreiner.xyz>2026-04-20 14:47:58 +0200
commit96e11c169cde65194c1136e6b40c1bbea35c813a (patch)
tree29abfee5f3e8f37a53ae4f674b926f497827d963 /src/lib/manager.lua
parent0686b40f979f4607b3fd8cca21c463e98f617666 (diff)
create cli
Diffstat (limited to 'src/lib/manager.lua')
-rw-r--r--src/lib/manager.lua40
1 files changed, 40 insertions, 0 deletions
diff --git a/src/lib/manager.lua b/src/lib/manager.lua
new file mode 100644
index 0000000..4ad2051
--- /dev/null
+++ b/src/lib/manager.lua
@@ -0,0 +1,40 @@
+manager = {}
+
+manager.base_path = Path:new(os.getenv('HOME')) / '.local/share/blueprint'
+manager.install_path = manager.base_path / 'templates'
+
+manager.base_path:make_directory { create_parents = true }
+manager.install_path:make_directory { create_parents = true }
+
+function manager.list()
+ return manager.install_path:entries()
+end
+
+function manager.install(path, name)
+ if not (path / 'build.lua'):exists() then
+ error('build.lua does not exist.')
+ end
+
+ local target = (manager.install_path / (name or path:name()))
+
+ if target:exists() then
+ error('template already installed.')
+ end
+
+ path:copy_to(target)
+end
+
+function manager.remove(name)
+ if name == nil or not (manager.install_path / name):exists() then
+ error('template does not exist.')
+ end
+
+ (manager.install_path / name):remove { recursive = true, force = true }
+end
+
+function manager.get(name)
+ if (manager.install_path / name):exists() then
+ return manager.install_path / name / 'build.lua'
+ end
+ return nil
+end