{"id":18107375,"url":"https://github.com/brittyazel/devtool","last_synced_at":"2025-09-06T05:45:11.815Z","repository":{"id":58492373,"uuid":"361540553","full_name":"brittyazel/DevTool","owner":"brittyazel","description":"A multipurpose tool to assist with World of Warcraft addon development","archived":false,"fork":false,"pushed_at":"2025-08-03T20:49:34.000Z","size":404,"stargazers_count":79,"open_issues_count":1,"forks_count":9,"subscribers_count":9,"default_branch":"main","last_synced_at":"2025-08-03T22:25:22.420Z","etag":null,"topics":["development-tools","inspection","lua","world-of-warcraft","world-of-warcraft-addon","wow","wow-addon"],"latest_commit_sha":null,"homepage":"","language":"Lua","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":"varren/ViragDevTool","license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/brittyazel.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":".github/FUNDING.yml","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},"funding":{"github":["brittyazel"]}},"created_at":"2021-04-25T21:16:46.000Z","updated_at":"2025-08-03T20:49:38.000Z","dependencies_parsed_at":"2023-02-15T06:50:29.654Z","dependency_job_id":"ba84b7ce-abde-4338-bc2b-9ddac832fedc","html_url":"https://github.com/brittyazel/DevTool","commit_stats":{"total_commits":159,"total_committers":4,"mean_commits":39.75,"dds":0.4339622641509434,"last_synced_commit":"69b7b3d35417f03e9630be3bf5e93edb22bb3d22"},"previous_names":[],"tags_count":43,"template":false,"template_full_name":null,"purl":"pkg:github/brittyazel/DevTool","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/brittyazel%2FDevTool","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/brittyazel%2FDevTool/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/brittyazel%2FDevTool/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/brittyazel%2FDevTool/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/brittyazel","download_url":"https://codeload.github.com/brittyazel/DevTool/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/brittyazel%2FDevTool/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":273862213,"owners_count":25181541,"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","status":"online","status_checked_at":"2025-09-06T02:00:13.247Z","response_time":2576,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"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":["development-tools","inspection","lua","world-of-warcraft","world-of-warcraft-addon","wow","wow-addon"],"created_at":"2024-10-31T23:11:43.642Z","updated_at":"2025-09-06T05:45:11.790Z","avatar_url":"https://github.com/brittyazel.png","language":"Lua","readme":"# DevTool\n\nDevTool is a multipurpose tool to assist with World of Warcraft addon development.\nThe core functionality is similar to a debugger, and it is capable of visualizing and inspecting tables, events, and\nfunction calls at runtime.\n\nThis addon can help new and veteran developers alike by providing a visual representation of their tables and\nstructures.\nExamining the WoW API or your addon's variables in a table-like, columnar interface is much easier than using print(),\n/dump, or other chat debugging methods.\n\n---\n\n## How To Use\n\nWhile DevTool is fully capable of being used solely from its graphical interface, it also provides a simple API for\nincorporation into your codebase directly.\nUse of this API will result in adding elements directly into the DevTool interface for inspection.\n\n### Using `AddData()`:\n\nThe main (and only) public function provided by DevTool is `AddData(data, \u003csome string name\u003e)`\n\n- This function adds data to the list so that you can explore its values in interface list.\n- The 1st parameter is the object you wish to inspect.\n    - **Note**, the default behavior is to _shallow_ copy.\n- The 2nd parameter is the name string to show in interface to identify your object.\n    - **Note**, if no name is provided, we will auto-generate one for you.\n\nLet's suppose you have the following code in your addon...\n\n```lua\nlocal var = {}\n--\u003csome code here that adds data to 'var'\u003e\nDevTool:AddData(var, \"My local var\")\n```\n\n...this code will add `var` as a new row in the DevTool user interface with the label `\"My local var\"`.\n\n### Example of a very common use case:\n\nHere is a simple implementation that wraps `DevTool:AddData()` and checks for the `DEBUG` flag to be set:\n\n```lua\nfunction ExampleAddon:AddToInspector(data, strName)\n\tif DevTool and self.DEBUG then\n\t\tDevTool:AddData(data, strName)\n\tend\nend\n```\n\nUsing the above code as an example, we can then apply our new function all over the addon codebase wherever inspection\nis needed:\n\n```lua\nExampleAddon:AddToInspector(ExampleObject, \"ExampleObjectName\")\n```\n\n### How to use the sidebar:\n\nThere are three tabs in sidebar, and the text field has different behaviors for each.\n\n- History tab:\n    - This text field takes the fully qualified name of a table, relative to `_G`. Likewise,\n      entering `\u003cfully_qualified_name\u003e` into the DevTool text field is the same as typing `/dev \u003cname\u003e \u003cparent\u003e` in the\n      chat window.\n- Events tab:\n    - This text field can only use `\u003cevent\u003e` or `\u003cevent\u003e \u003cunit\u003e`. Likewise, the same can be done in the chat window by\n      typing `/dev eventadd \u003cevent\u003e` or `/dev eventadd \u003cevent\u003e \u003cunit\u003e`, where `\u003cevent\u003e` is\n      a [Blizzard API event](https://wowpedia.fandom.com/wiki/Events) string and `\u003cunit\u003e` is the cooresponding unit\n      string.\n- Fn Call Log tab:\n    - You can enter `\u003cfunction\u003e \u003cparent\u003e` into the text field, and it will try to find `_G.\u003cparent\u003e.\u003cfunction\u003e`.\n      Likewise, the same can be done in the chat window by typeing `/dev logfn \u003cfunction\u003e \u003cparent\u003e`\n\n### How to use function arguments:\n\nYou can specify coma separated arguments that will be passed to any function DevTool attempts to execute. The values can\nbe in the form of a `string`, `number`, `nil`, `boolean`, and/or `table`.\n\n- **Note**, _to pass a value with type `table` you have to specify prefix `t=`_.\n- **Note**, _to pass the parent table, specify `t=self`_.\n- **Note**, _DevTool will automatically try passing `self` as first arg, if the function throws an error_.\n\nExample passing arguments to a function `SomeFunction`:\n\n- FN Call Args: `t=MyObject, 12, a12` becomes `SomeFunction(_G.MyObject, 12, a12)`\n- FN Call Args: `t=self, 12, a12` becomes `SomeObject:SomeFunction(12, a12)`\n- FN Call Args: `t=MyObject.Frame1.Frame2` becomes `SomeFunction(_G.MyObject.Frame1.Frame2)`\n\n### Chat commands:\n\n- `/dev` - toggles the main UI window\n- `/dev help` - Lists help actions in the chat window\n- `/dev \u003ccommand\u003e` - Will execute one of the commands listed in the help menu\n\n### Other functionality:\n\n- Clicking on a table name will expand and show its children.\n- Clicking on a function name will try to execute the function. **WARNING: BE CAREFUL**.\n    - **Note**: This will make use of any function arguments set, as described above.\n- If a table has WoW API `GetObjectType()` then its type will be visible in the value column.\n- DevTool can monitor WoW API events similar to that of `/etrace`, we also include a button to launch /etrace if you\n  would rather use the built in tool instead.\n- DevTool can log function calls, their input args, and return values.\n    - **Note**: Strings in the 'value' column have no line breaks\n\n---\n\n## Want to contribute?\n\n* [Report Bugs and Request Features](https://github.com/brittyazel/DevTool/issues)\n* [Source Code](https://github.com/brittyazel/DevTool)\n\n---\n\n## Want to Donate?\n\nMaking add-ons is a lot of work! Your help goes a huge way to making my add-on work possible. If you would like to\nDonate, [GitHub Sponsors](https://github.com/sponsors/brittyazel) is the preferred method.\n\n---\n\n## Credits:\n\nDevTool is a continuation of the amazing [*ViragDevTool*](https://github.com/varren/ViragDevTool) addon started by\nVarren/Virag for World of Warcraft: Battle for Azeroth and prior. All credit for the idea and the work done prior to\n2021 should go to him, accordingly.\n","funding_links":["https://github.com/sponsors/brittyazel"],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbrittyazel%2Fdevtool","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fbrittyazel%2Fdevtool","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbrittyazel%2Fdevtool/lists"}