aboutsummaryrefslogtreecommitdiff
path: root/src/lib/manager.lua
diff options
context:
space:
mode:
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