{"id":22642812,"url":"https://github.com/ezefranca/check-permissions","last_synced_at":"2025-09-21T16:39:40.452Z","repository":{"id":246859058,"uuid":"824158880","full_name":"ezefranca/check-permissions","owner":"ezefranca","description":"🕵️ Swift Package and command line application designed to scan Info.plist files in a specified directory and report the permissions requested by each file.","archived":false,"fork":false,"pushed_at":"2024-08-30T07:42:21.000Z","size":123,"stargazers_count":2,"open_issues_count":0,"forks_count":0,"subscribers_count":2,"default_branch":"main","last_synced_at":"2024-11-30T17:49:03.086Z","etag":null,"topics":["apple","infoplist","ios-security","permissions","swift"],"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/ezefranca.png","metadata":{"files":{"readme":".github/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-07-04T13:33:40.000Z","updated_at":"2024-08-30T07:42:24.000Z","dependencies_parsed_at":"2024-07-05T15:10:29.988Z","dependency_job_id":"545f5612-a17d-4199-8393-fcc5e581c231","html_url":"https://github.com/ezefranca/check-permissions","commit_stats":null,"previous_names":["ezefranca/check-permissions","ezefranca/permissions-scan"],"tags_count":6,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ezefranca%2Fcheck-permissions","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ezefranca%2Fcheck-permissions/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ezefranca%2Fcheck-permissions/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ezefranca%2Fcheck-permissions/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ezefranca","download_url":"https://codeload.github.com/ezefranca/check-permissions/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":228835892,"owners_count":17979168,"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":["apple","infoplist","ios-security","permissions","swift"],"created_at":"2024-12-09T05:08:31.966Z","updated_at":"2025-09-21T16:39:35.400Z","avatar_url":"https://github.com/ezefranca.png","language":"Swift","funding_links":[],"categories":[],"sub_categories":[],"readme":"\n# check-permissions [![Swift](https://github.com/ezefranca/check-permissions/actions/workflows/swift.yml/badge.svg)](https://github.com/ezefranca/check-permissions/actions/workflows/swift.yml)\n\n[![SPM compatible](https://img.shields.io/badge/SPM-compatible-4BC51D.svg?style=flat)](https://github.com/apple/swift-package-manager)\n[![](https://img.shields.io/endpoint?url=https%3A%2F%2Fswiftpackageindex.com%2Fapi%2Fpackages%2Fezefranca%2Fcheck-permissions%2Fbadge%3Ftype%3Dswift-versions)](https://swiftpackageindex.com/ezefranca/check-permissions)\n[![](https://img.shields.io/endpoint?url=https%3A%2F%2Fswiftpackageindex.com%2Fapi%2Fpackages%2Fezefranca%2Fcheck-permissions%2Fbadge%3Ftype%3Dplatforms)](https://swiftpackageindex.com/ezefranca/check-permissions)\n\n## Overview\n\nThe **check-permissions** is a Swift-based command line application designed to scan `Info.plist` files in a specified directory and report the permissions requested by each file. This tool is particularly useful for developers working with iOS projects, as it helps ensure that the necessary permissions are properly declared in the project directory.\n\n## Features\n\n- **Recursive Scanning**: Searches all subdirectories within the specified directory for `Info.plist` files.\n- **Permission Detection**: Identifies various permissions requested in `Info.plist` files, such as camera access, location services, and more.\n- **User-Friendly Output**: Provides a clear report of permissions for each `Info.plist` file found.\n\n## Installation\n\n### Prerequisites\n\n- macOS 12.0 or later\n- Swift 5.9 or later\n\n### Steps\n\n1. **Clone the Repository**:\n    ```sh\n    git clone https://github.com/ezefranca/check-permissions.git\n    cd check-permissions\n    ```\n\n2. **Run the Installation Script**:\n    ```sh\n    chmod +x install.sh\n    ./setup.sh\n    ```\n\nThe installation script will compile the tool and install it to `/usr/local/bin`, making it available globally as `check-permissions`.\n\n## Usage\n\n### Command-Line Options\n\n- `--path \u003cpath\u003e`: Specify the path to the directory. This is a required argument.\n- `--output \u003cfile\u003e`  Specify the file to output the results to. (default is console output)\n- `--verbose`: Enable verbose output for more detailed information.\n- `--help`: Display the help message.\n\n### Example Usage\n\nTo scan a directory for `Info.plist` files and report the permissions:\n\n```sh\ncheck-permissions-cli --path \u003cdirectory-path-to-scan\u003e\n```\n\nTo output to a report log file:\n\n```sh\ncheck-permissions-cli --path \u003cdirectory-path-to-scan\u003e --output report\n```\n\nTo enable verbose output:\n\n```sh\ncheck-permissions-cli --path \u003cdirectory-path-to-scan\u003e --verbose\n```\n\nTo display the help message:\n\n```sh\ncheck-permissions-cli --help\n```\n\n### Sample Output\n\n```sh\n🚀 Starting the scanning process...\n📂 Scanning directory: /Users/yourusername/Developer/YourProject\nFound 3 Info.plist files.\nFile: /Users/yourusername/Developer/YourProject/ModuleA/Info.plist\n - NSCameraUsageDescription\n - NSLocationWhenInUseUsageDescription\nFile: /Users/yourusername/Developer/YourProject/ModuleB/Info.plist\n - NSMicrophoneUsageDescription\n✅ Scanning process completed.\n```\n\n## Using as a Package\n\nTo use the **PermissionScan** package in your Swift project, add it as a dependency in your `Package.swift`:\n\n```swift\n// swift-tools-version:5.4\nimport PackageDescription\n\nlet package = Package(\n    name: \"YourProject\",\n    platforms: [\n        .iOS(.v15),\n        .macOS(.v12),\n        .watchOS(.v9),\n        .tvOS(.v15),\n        .visionOS(.v1)\n    ],\n    dependencies: [\n        .package(url: \"https://github.com/ezefranca/check-permissions\", from: \"0.0.4\"),\n    ],\n    targets: [\n        .target(\n            name: \"YourProject\",\n            dependencies: [\"check-permissions-package\"]),\n    ]\n)\n```\n\nThen import and use it in your code:\n\n```swift\nimport check_permissions\n\nlet checker = PermissionChecker()\nlet report = checker.generateReport(for: URL(fileURLWithPath: \"/path/to/your/project\"))\nfor (plistPath, permissions) in report {\n    print(\"File: \\(plistPath)\")\n    for permission in permissions {\n        print(\" - \\(permission)\")\n    }\n}\n```\n\n## Contributing\n\nWe welcome contributions to enhance the functionality of this tool. Please follow these steps to contribute:\n\n1. Fork the repository.\n2. Create a new branch for your feature or bugfix.\n3. Submit a pull request with a clear description of your changes.\n\n## License\n\nThis project is licensed under the MIT License.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fezefranca%2Fcheck-permissions","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fezefranca%2Fcheck-permissions","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fezefranca%2Fcheck-permissions/lists"}