diff options
Diffstat (limited to 'src/lib/manager.lua')
| -rw-r--r-- | src/lib/manager.lua | 40 |
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 |