{"id":18725724,"url":"https://github.com/binaryage/badev","last_synced_at":"2025-11-11T19:30:14.884Z","repository":{"id":10923488,"uuid":"13225384","full_name":"binaryage/badev","owner":"binaryage","description":"A command-line tool to aid developers in BinaryAge","archived":false,"fork":false,"pushed_at":"2023-04-20T09:12:44.000Z","size":29754,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":5,"default_branch":"master","last_synced_at":"2024-12-28T13:18:51.718Z","etag":null,"topics":["binaryage"],"latest_commit_sha":null,"homepage":null,"language":"Ruby","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/binaryage.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE.txt","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":"2013-09-30T19:45:06.000Z","updated_at":"2021-11-02T19:58:14.000Z","dependencies_parsed_at":"2024-11-07T14:11:44.601Z","dependency_job_id":"aeea5077-7179-47ca-be1a-c5a172f3b529","html_url":"https://github.com/binaryage/badev","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/binaryage%2Fbadev","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/binaryage%2Fbadev/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/binaryage%2Fbadev/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/binaryage%2Fbadev/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/binaryage","download_url":"https://codeload.github.com/binaryage/badev/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":239592977,"owners_count":19664855,"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":["binaryage"],"created_at":"2024-11-07T14:11:35.644Z","updated_at":"2025-11-11T19:30:14.827Z","avatar_url":"https://github.com/binaryage.png","language":"Ruby","funding_links":[],"categories":[],"sub_categories":[],"readme":"# badev\n\nA general command-line tool to aid project development in BinaryAge.\n\n## installation\n\n    git clone git@github.com:binaryage/badev.git\n    bundle install\n    export PATH=$PATH:`pwd`/badev/bin\n    badev --help\n\n## usage\n\n    NAME:\n\n      badev\n\n    DESCRIPTION:\n\n      A helper tool for development in BinaryAge\n\n    COMMANDS:\n\n      archive             generates next archive\n      authorize_send      get rid of those annoying authorization dialogs during development\n      beautify            beautifies source code in a directory tree\n      crash_totalfinder   externally crash TotalFinder\n      deauthorize_send    re-enable authorization dialogs\n      help                Display global or [command] help documentation\n      init_xcconfigs      creates default xcconfig files for all .xcodeprojs in a directory tree\n      inject_totalfinder  attempt to inject TotalFinder\n      kill_finder         kill Finder\n      launch_finder       launch/activate Finder via AppleScript\n      open_totalfinder    open ~/Applications/TotalFinder.app\n      paydiff             diff latest payload\n      payload             generates missing payloads\n      push_archive        pushes archive repo\n      push_tags           pushes tags from all submodules\n      quit_finder         quit Finder deliberately via AppleScript\n      quit_totalfinder    quit Finder+TotalFinder deliberately via AppleScript\n      regen_xcconfigs     regenerates xcconfig files for all .xcodeprojs in a directory tree\n      restart_finder      restart Finder deliberately via AppleScript\n      restart_totalfinder restart Finder+TotalFinder deliberately via AppleScript\n      retag               adds missing tags to submodules according to last tag in root repo\n      tfrmd               remove TotalFinder's dev installation\n      tfrmr               remove TotalFinder's retail installation\n\n    GLOBAL OPTIONS:\n\n      -d, --dry-run\n          Show what would happen\n\n      -h, --help\n          Display help documentation\n\n      -v, --version\n          Display version information\n\n      -t, --trace\n          Display backtrace when an error occurs\n\n## xcconfigs\n\nManaging multiple (10+) xcodeproj/configurations/targets is too much work. The idea is to have (ideally) no build settings in .xcodeproj files and manage them via .xcconfig files (it is diff friendly). By using xcconfig files we can include shared settings sets into different xcodeproj files and manage them from one central place. But it exposes three other problems:\n\n1. our projects are in multiple repositories and they don't have shared storage for xcconfig files, creating yet another submodule just for managing xcconfig files seems to be an overkill\n2. xcconfig files do not support conditionals, in xcode you can at most combine two settings sets (at configuration and target level)\n3. you can include xcconfig files into other xcconfig files, but you have no way how to read/modify existing settings produced by previous config statements, this limits the way how you could combine/include xcconfig templates\n\nThe solution is to generate xcconfig files using `badev` utility.\n\n* `badev init_xcconfigs` searches current directory tree and generates one xcconfig file for each combination xcodeproj-configuration-target. This is one-time bootstrapping phase. After generation you should go to your xcodeprojs and assign these configs to each configuration-target (on target level).\n\n* `badev regen_xcconfigs` searches current directory tree and regenerates xcconfig files which have special header prepared by init_xcconfigs. By default regeneration is done by `bagen` with template named [binaryage](https://github.com/binaryage/badev/blob/master/templates/binaryage.xcconfig.erb). See [templates](https://github.com/binaryage/badev/tree/master/templates) for more info on templating.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbinaryage%2Fbadev","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fbinaryage%2Fbadev","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbinaryage%2Fbadev/lists"}