{"id":25349111,"url":"https://github.com/elkrammer/irule-validator","last_synced_at":"2025-10-29T18:31:14.762Z","repository":{"id":264363307,"uuid":"743144077","full_name":"elkrammer/irule-validator","owner":"elkrammer","description":"F5 IRule Parser / Validator","archived":false,"fork":false,"pushed_at":"2025-02-10T14:08:51.000Z","size":193,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-02-10T14:28:11.157Z","etag":null,"topics":["bigip","f5","f5-bigip","f5networks","irule","irules","parser","validator"],"latest_commit_sha":null,"homepage":"","language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/elkrammer.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}},"created_at":"2024-01-14T13:21:52.000Z","updated_at":"2025-02-05T16:34:38.000Z","dependencies_parsed_at":"2025-01-26T16:23:01.222Z","dependency_job_id":"d2b1ec05-1a35-473c-ab79-dbf53cfbd1e3","html_url":"https://github.com/elkrammer/irule-validator","commit_stats":null,"previous_names":["elkrammer/irule-validator"],"tags_count":8,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/elkrammer%2Firule-validator","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/elkrammer%2Firule-validator/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/elkrammer%2Firule-validator/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/elkrammer%2Firule-validator/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/elkrammer","download_url":"https://codeload.github.com/elkrammer/irule-validator/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":238869848,"owners_count":19544429,"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":["bigip","f5","f5-bigip","f5networks","irule","irules","parser","validator"],"created_at":"2025-02-14T16:01:19.999Z","updated_at":"2025-10-29T18:31:09.311Z","avatar_url":"https://github.com/elkrammer.png","language":"Go","funding_links":[],"categories":["DevOps / CICD"],"sub_categories":[],"readme":"# 📏 iRule-Validator\n\n![Static Badge](https://img.shields.io/badge/build-passing-elk)\n![GitHub Release](https://img.shields.io/github/v/release/elkrammer/irule-validator)\n![Static Badge](https://img.shields.io/badge/license-MIT-blue?)\n\nEver written an F5 iRule and thought \"this should work!\"—only to get hit with\nan \"Invalid expression on line 42\"?\n\nDeploying an iRule, waiting for automation to kick in, and then realizing it’s\nbroken is frustrating. Wouldn't it be great to catch those errors before they\nwaste your time?\n\nYou're in luck! This project lets you parse F5 iRules, catch syntax errors early,\nand debug with confidence.\n\n![irule-validator](https://github.com/user-attachments/assets/6fdf255e-aa6e-4d73-972e-18ad3e700502)\n\n## 🚀 Usage\n\n```bash\nUsage of ./irule-validator:\n  -d, --debug          Debugging Mode\n  -h, --help           Show help message\n  -p, --print-errors   Print Errors\n\nIf no parameter is specified it will run in quiet mode returning only\nthe result.\nIf a file name is specified, it will parse the provided file.\nIf no file name is specified, it will go into REPL mode.\n\nExamples:\n./irule-validator http.irule      # Parse http.irule and show only the result\n./irule-validator -p http.irule   # Parse http.irule and print errors\n./irule-validator                 # Start REPL\n```\n\nWhen using this in a CI/CD pipeline, be sure to call it with `-p` to get\nthose sweet error printouts you so desperately crave. 🤤\n\n## 🛠️ Features\n\n- Parse and validate various iRule-specific constructs\n- Static Syntax Analysis\n  - Glob and regex pattern validation\n  - Symbol table to prevent incompatible command combinations\n- Detailed error reporting with line numbers\n- Debug mode for detailed parsing information\n\n## 🦄 Disclaimer\n\nDoes it validate every possible command with perfect accuracy? Not quite.\nFull syntax validation is *hard*, and F5 iRules are a bottomless pit\nof edge cases. 🕳️\n\nBuilding a complete F5 iRule parser is like trying to solve a puzzle where\nthe pieces keep changing shape. But hey, I already have a parser that\ncovers most of the use cases I need and that's good enough for me! 🎉\n\n## 🧑 Contributing\n\nPRs are welcome! 💥\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Felkrammer%2Firule-validator","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Felkrammer%2Firule-validator","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Felkrammer%2Firule-validator/lists"}