{"id":18450800,"url":"https://github.com/patrixr/glue","last_synced_at":"2026-05-09T14:08:39.398Z","repository":{"id":253481844,"uuid":"842827403","full_name":"patrixr/glue","owner":"patrixr","description":"Machine configuration tool using Go+Lua","archived":false,"fork":false,"pushed_at":"2025-02-22T07:02:34.000Z","size":288,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-04-19T10:56:52.207Z","etag":null,"topics":["ansible","configuration","go","golang","lua","system"],"latest_commit_sha":null,"homepage":"","language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/patrixr.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2024-08-15T07:10:59.000Z","updated_at":"2025-02-22T06:45:20.000Z","dependencies_parsed_at":"2024-09-09T17:42:58.597Z","dependency_job_id":"4ef8be3a-c359-43d4-bffc-16bc47dcd195","html_url":"https://github.com/patrixr/glue","commit_stats":null,"previous_names":["patrixr/glue"],"tags_count":4,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/patrixr%2Fglue","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/patrixr%2Fglue/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/patrixr%2Fglue/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/patrixr%2Fglue/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/patrixr","download_url":"https://codeload.github.com/patrixr/glue/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":249707459,"owners_count":21313849,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["ansible","configuration","go","golang","lua","system"],"created_at":"2024-11-06T07:26:30.868Z","updated_at":"2026-05-09T14:08:39.338Z","avatar_url":"https://github.com/patrixr.png","language":"Go","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Glue\n\nGlue is a powerful system setup tool combining using Lua as a configuration language .\nIt provides an intuitive, imperative approach to machine setup and configuration management.\n\n\u003e Warning: Glue is still is in prototype phase. Features and APIs may evolve\n\n## Overview\n\nGlue seamlessly combines Go + Lua (hence the name) to offer:\n\n- Lua-based configuration language\n- Simple, imperative API (inspired by Ansible)\n- Extensible module system\n- \"Blueprint\" generation and execution\n- Filtering of configuration blocks\n\n\u003e **Note:** Glue is still in prototype phase. Features and APIs may evolve. Please report issues via GitHub.\n\n## Quick Start\n\nGlue typically works globally on your system by referencing the `glue.lua` file in your XDG_CONFIG_HOME folder.\nTypically that would be `~/.config/glue/glue.lua`.\n\nHere's an example of a configuration that sets up some configurations and installs Homebrew packages:\n\n```lua\ngroup(\"configs\", function ()\n    Copy({\n        source = \"./configs/alacritty\" .. name,\n        dest = \"~/.config/alacritty\",\n        strategy = \"merge\"\n    })\n\n    Blockinfile({\n        state = true,\n        block = read(\"./configs/zshrc.sh\"),\n        path = \"~/.zshrc\"\n    })\nend)\n\ngroup(\"homebrew\", function ()\n    HomebrewInstall()\n\n    Homebrew({\n        taps =  {\n            \"oven-sh/bun\",\n            \"homebrew/cask-fonts\",\n        },\n        casks = {\n            \"zen-browser\",\n            \"steam\",\n            \"emacs\",\n            \"love\",\n        },\n        packages = {\n            \"ffmpeg\",\n            \"watch\",\n            \"httpie\",\n            \"ruby\",\n            \"lua\",\n        }\n    })\nend)\n\n```\n\n## CLI Reference\n\n```bash\nglue [flags] [command]\n```\n\n### Commands\n\n| Command      | Description                              |\n| ------------ | ---------------------------------------- |\n| `completion` | Generate shell autocompletion scripts    |\n| `document`   | Generate internal function documentation |\n| `help`       | Display help information                 |\n| `init`       | Initialize Glue on your system           |\n| `only`       | Execute specific groups using a selector |\n\n### Flags\n\n| Flag                | Description                                            |\n| ------------------- | ------------------------------------------------------ |\n| `--plan`            | See the execution blueprints without applying anything |\n| `-h, --help`        | Show help information                                  |\n| `-p, --path string` | Specify glue.lua location                              |\n| `-v, --verbose`     | Enable verbose logging                                 |\n\n## Extending Glue\n\nGlue can be extended through its module system. Create new modules in the `modules` package using the registry system.\n\nHere's an example of a simple module that prints a message:\n\n```go\nRegistry.RegisterModule(func(glue *core.Glue) error {\n\tglue.Plug(\"print\", core.FUNCTION).\n\t\tBrief(\"Print a string\").\n\t\tArg(\"obj\", ANY, \"the message or object to log\").\n\t\tDo(func(R Runtime, args *Arguments) (RTValue, error) {\n\t\t\tglue.Log.Info(args.Get(0).String())\n\t\t\treturn nil, nil\n\t\t})\n\n\treturn nil\n})\n```\n\n## Contributing\n\nContributions are welcome! Please:\n\n1. Fork the repository\n2. Create a feature branch\n3. Submit a pull request\n\n## License\n\nGNU General Public License v3.0\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpatrixr%2Fglue","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fpatrixr%2Fglue","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpatrixr%2Fglue/lists"}