{"id":1082,"url":"https://github.com/myriadmobile/Droar","last_synced_at":"2025-07-30T20:31:20.688Z","repository":{"id":49361684,"uuid":"106606306","full_name":"myriadmobile/Droar","owner":"myriadmobile","description":"Droar is a modular, single-line installation debugging window","archived":false,"fork":false,"pushed_at":"2021-04-15T18:44:14.000Z","size":1288,"stargazers_count":59,"open_issues_count":20,"forks_count":13,"subscribers_count":13,"default_branch":"master","last_synced_at":"2024-07-20T07:07:11.145Z","etag":null,"topics":["a"],"latest_commit_sha":null,"homepage":"","language":"Swift","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/myriadmobile.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}},"created_at":"2017-10-11T20:33:11.000Z","updated_at":"2024-07-20T07:07:11.146Z","dependencies_parsed_at":"2022-08-27T19:52:11.728Z","dependency_job_id":null,"html_url":"https://github.com/myriadmobile/Droar","commit_stats":null,"previous_names":[],"tags_count":45,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/myriadmobile%2FDroar","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/myriadmobile%2FDroar/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/myriadmobile%2FDroar/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/myriadmobile%2FDroar/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/myriadmobile","download_url":"https://codeload.github.com/myriadmobile/Droar/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":215182684,"owners_count":15840918,"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":["a"],"created_at":"2024-01-05T20:15:38.537Z","updated_at":"2024-08-13T13:30:36.095Z","avatar_url":"https://github.com/myriadmobile.png","language":"Swift","funding_links":[],"categories":["Debugging"],"sub_categories":["Getting Started","Other free courses","Linter"],"readme":"\u003cp align=\"center\"\u003e\n\u003cimg src=\"https://raw.githubusercontent.com/myriadmobile/Droar/master/Github/DroarLogo.png\"\u003e\n\u003c/p\u003e\n\n[![CI Status](http://img.shields.io/travis/myriadmobile/Droar.svg?style=flat)](https://travis-ci.org/myriadmobile/Droar)\n[![Version](https://img.shields.io/cocoapods/v/Droar.svg?style=flat)](http://cocoapods.org/pods/Droar)\n[![License](https://img.shields.io/cocoapods/l/Droar.svg?style=flat)](http://cocoapods.org/pods/Droar)\n[![Platform](https://img.shields.io/cocoapods/p/Droar.svg?style=flat)](http://cocoapods.org/pods/Droar)\n\nDroar is a modular, single-line installation debugging window.\n\n## Overview\n\nThe idea behind Droar is simple: during app deployment stages, adding quick app configurations (switching between mock vs live, QA credential quick-login, changing http environments, etc) tend to get written and shipped straight inline with production code.  Droar solves this issue by adding quick configurations that are grouped into one place, and under a single tool.\n\n\u003cp align=\"center\"\u003e\n\u003cimg src=\"https://media.giphy.com/media/7FfNceqr7lhqyqsrW6/giphy.gif\"\u003e\n\u003c/p\u003e\n\n## Installation\n\nDroar is available through [CocoaPods](http://cocoapods.org). To install\nit, simply add the following line to your Podfile:\n\n```ruby\npod \"Droar\"\n```\n\n## Start\n\nTo start Droar, add the following in the `didFinishLaunchingWithOptions` method of your app delegate:\n\n```\nimport Droar\n\n...\nif nonProductionEnvironment {\n    Droar.start()\n}\n```\n\nTo open, simply swipe starting from the far right side of the screen.\n\n## Configuring\n\n### Adding your own Knobs (table sections)\n\nThere are two ways to add knobs in Droar:\n\n#### Static Knobs\n\nStatic knobs will always appear in Droar.  Simply conform a new or existing class to `DroarKnob`, and use `Droar.register(DroarKnob)` to register an instance of it.\n\n#### Dynamic Knobs\n\nDynamic knobs are instances of `UIViewController` that conform to `DroarKnob`.  When Droar is appearing, it will search through the main window's view controller hierarchy and and find currently active/visible `UIViewController`'s, to see if they conform to `DroarKnob`.\n\nThere is no need to register your view controllers as static knobs.  Simply conform to `DroarKnob`, and Droar will pull information from them if Droar is opened on that screen.\n\nIf you conform a `UINavigationController`, `UITabBarViewController`, etc to `DroarKnob` (and it's currently visible/active), Droar will pull information both from it, as well as its active/visible view controller.\n\n#### The `DroarKnob` Interface:\n\n```\n@objc public protocol DroarKnob {\n    // Perform any setup before this knob loads (Register table cells, clear cached data, etc)\n    @objc optional func droarKnobWillBeginLoading(tableView: UITableView?)\n    \n    // Title for this knob.  If title matches existing knob, they will be combined\n    @objc func droarKnobTitle() -\u003e String\n    \n    // The positioning and priorty for this knob\n    @objc func droarKnobPosition() -\u003e PositionInfo\n    \n    // The number of cells for this knob\n    @objc func droarKnobNumberOfCells() -\u003e Int\n    \n    // The cell at the specified index.  There are many pre-defined cells, just use Droar\u003c#type#\u003eCell.create(), or create your own.\n    @objc func droarKnobCellForIndex(index: Int, tableView: UITableView) -\u003e DroarCell\n    \n    // Indicates the cell was selected.  This will not be called if `UITableViewCell.selectionStyle == .none`\n    @objc optional func droarKnobIndexSelected(tableView: UITableView, selectedIndex: Int)\n}\n```\n\n### Activation Gesture\n\nTo configure the gesture that opens Droar, use the `setGestureType` method of `Droar`.\n\n### Default Knobs\nYou can control which of the default sections are shown using the `registerDefaultKnobs` method of `Droar`.  If this isn't called, all default knobs will be displayed.\n\n## Plugins\n\n### [netfox-Droar](https://github.com/myriadmobile/netfox-Droar)\n[netfox](https://github.com/kasketis/netfox) is a lightweight, one line setup, iOS / OSX network debugging library.\n\n\n### [OHHTTPStubs-Droar](https://github.com/myriadmobile/OHHTTPStubs-Droar)\n[OHHTTPStubs](https://github.com/AliSoftware/OHHTTPStubs) is a library designed to stub your network requests very easily.\nSince this plugin requires custom customization of OHHTTPStubs, it is dependent on a [fork of the OHHTPStubs](https://github.com/myriadmobile/OHHTTPStubs).\n\n### [FBMemoryProfiler-Droar](https://github.com/myriadmobile/FBMemoryProfiler-Droar)\n[FBMemoryProfiler](https://github.com/facebook/FBMemoryProfiler) is an iOS library providing developer tools for browsing objects in memory over time, using FBAllocationTracker and FBRetainCycleDetector.\n\n## Writing a Plugin\n\nCheck out [the guide](PLUGINS.md) for creating a new Droar plugin.\n\n## Author\n\nNathan Jangula, Myriad Mobile, developer@myriadmobile.com\n\n## License\n\nDroar is available under the MIT license. See the LICENSE file for more info.\n\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmyriadmobile%2FDroar","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmyriadmobile%2FDroar","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmyriadmobile%2FDroar/lists"}