{"id":926,"url":"https://github.com/minuscorp/ModuleInterface","last_synced_at":"2025-07-30T19:33:01.908Z","repository":{"id":41500996,"uuid":"223201147","full_name":"minuscorp/ModuleInterface","owner":"minuscorp","description":"Swift tool to generate Module Interfaces for Swift projects.","archived":false,"fork":false,"pushed_at":"2022-11-17T09:19:04.000Z","size":129,"stargazers_count":82,"open_issues_count":3,"forks_count":4,"subscribers_count":3,"default_branch":"master","last_synced_at":"2024-11-22T16:05:34.311Z","etag":null,"topics":["command-line-tool","documentation-generator","swift"],"latest_commit_sha":null,"homepage":null,"language":"Swift","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/minuscorp.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":"2019-11-21T15:08:50.000Z","updated_at":"2024-07-28T07:51:14.000Z","dependencies_parsed_at":"2023-01-21T09:02:50.492Z","dependency_job_id":null,"html_url":"https://github.com/minuscorp/ModuleInterface","commit_stats":null,"previous_names":[],"tags_count":5,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/minuscorp%2FModuleInterface","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/minuscorp%2FModuleInterface/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/minuscorp%2FModuleInterface/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/minuscorp%2FModuleInterface/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/minuscorp","download_url":"https://codeload.github.com/minuscorp/ModuleInterface/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":228179020,"owners_count":17881124,"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":["command-line-tool","documentation-generator","swift"],"created_at":"2024-01-05T20:15:34.794Z","updated_at":"2024-12-04T19:32:22.443Z","avatar_url":"https://github.com/minuscorp.png","language":"Swift","funding_links":[],"categories":["Command Line"],"sub_categories":["Linter"],"readme":"# ModuleInterface\n[![Build Status](https://travis-ci.org/minuscorp/ModuleInterface.svg?branch=master)](https://travis-ci.org/minuscorp/ModuleInterface)\n![GitHub release (latest by date)](https://img.shields.io/github/v/release/minuscorp/ModuleInterface)\n![License](https://img.shields.io/static/v1?label=License\u0026message=Apache\u0026color=blue)\n![Swift version](https://img.shields.io/badge/Swift-5.1-orange)\n![Twitter Follow](https://img.shields.io/twitter/follow/minuscorp?style=social)\n\nSwift tool to generate Module Interfaces for Swift projects.\n\n## What is a Module Interface\n\nA Module Interface is what we commonly get using the CMD+click on an `import` statement in our codebases. SourceKit generates the code on demand. It can be a great tool and source of documentation.\n\n[![asciicast](https://asciinema.org/a/284079.svg)](https://asciinema.org/a/284079)\n\n### Examples\n\n* [Commandant](Examples/Commandant.swift)\n* [Mini](Examples/Mini.swift)\n* [SourceKittenFramework](Examples/SourceKittenFramework.swift)\n* [Yams](Examples/Yams.swift)\n* [SwiftLintFramework](Examples/SwiftLintFramework.swift)\n\n## Usage\n\nTo generate the module interface from your project, or library, run the `moduleinterface` command directly from the root your project.\n\n```\n$ cd ~/path/to/MyAppOrFramework\n$ moduleinterface generate\n```\n\nThis command will analyze your MyAppOrFramework project and generate the module interface for the types that have the minimum access level defined. The module interface is written to the directory Documentation relative to the root of your project repository.\n\n### Usage options\n\n```\n$ moduleinterface help\nAvailable commands:\n\nclean      Delete the output folder and quit.\ngenerate   Generates the Module Interface\nhelp       Display general or command-specific help\nversion    Display the current version of ModuleInterface\n```\n\nTyping `moduleinterface help \u003ccommand\u003e` we get a list of all options for that command:\n\n```\nGenerates the Swift Module Interface.\n\n[--spm-module (string)]\n\tGenerate documentation for Swift Package Manager module.\n\n[--module-name (string)]\n\tGenerate documentation for a Swift module.\n\n[--input-folder (string)]\n\tPath to the input directory (defaults to /Users/minuscorp/Documents/GitHub/ModuleInterface).\n\n[--output-folder (string)]\n\tOutput directory (defaults to Documentation).\n\n[--min-acl (string)]\n\tThe minimum access level to generate documentation. Defaults to public.\n\n--clean|-c\n\tDelete output folder before generating documentation.\n\n[[]]\n\tList of arguments to pass to xcodebuild.\n```\n\nUsually, for most Xcode projects, no parameters are needed at all. xcodebuild should be able to find the default project and scheme.\n\nIf the command fails, try specifying the scheme (-scheme SchemeName) or the workspace. Any arguments passed to `moduleinterface` after `--` will be passed to xcodebuild without modification.\n\n`$ moduleinterface generate -- -scheme MyScheme`\n\nFor Swift Package Manager modules, you can the module name using the --spm-module parameter.\n\n`$ moduleinterface generate --spm-module ModuleInterface`\n\n## Installation\n\n### Download Binary\n\n```\n$ curl -Ls https://github.com/minuscorp/ModuleInterface/releases/download/latest/moduleinterface.macos.zip -o /tmp/moduleinterface.macos.zip\n$ unzip -j -d /usr/local/bin /tmp/moduleinterface.macos.zip \n```\n\n### From Sources\nRequirements:\n\nSwift 5.1 runtime and Xcode installed in your computer.\n\n### Using Homebrew\n\n`brew tap minuscorp/moduleinterface`\n`brew install moduleinterface`\n\n### Building with Swift Package Manager\n\n```\n$ git clone https://github.com/minuscorp/ModuleInterface.git\n$ cd ModuleInterface\n$ make\n```\n\n## Contact\n\nFollow and contact me on Twitter at [@minuscorp](https://twitter.com/minuscorp).\n\n## Contributions\n\nIf you find an issue, just [open a ticket](https://github.com/minuscorp/ModuleInterface/issues/new) on it. Pull requests are warmly welcome as well.\n\n## License\n\nModuleInterface is licensed under the Apache 2.0. See [LICENSE](https://github.com/minuscorp/ModuleInterface/blob/master/LICENSE) for more info.\n\n## Acknowledegments\n\n- To [@eneko](https://twitter.com/eneko) for giving me the tooling idea.\n- To [SourceKitten](https://github.com/jpsim/SourceKitten) for providing such an awesome Framework for dealing with SourceKit.\n- To [BQ](https://github.com/bq) for all the mentoring.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fminuscorp%2FModuleInterface","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fminuscorp%2FModuleInterface","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fminuscorp%2FModuleInterface/lists"}