All Projects β†’ minuscorp β†’ ModuleInterface

minuscorp / ModuleInterface

Licence: Apache-2.0 license
Swift tool to generate Module Interfaces for Swift projects.

Programming Languages

swift
15916 projects
Makefile
30231 projects

Projects that are alternatives of or similar to ModuleInterface

Sourcedocs
Generate Markdown documentation from source code
Stars: ✭ 286 (+308.57%)
Mutual labels:  command-line-tool, documentation-generator
gee
🏡 Gee is tool of stdin to each files and stdout. It is similar to the tee command, but there are more functions for convenience. In addition, it was written as go
Stars: ✭ 65 (-7.14%)
Mutual labels:  command-line-tool
ionic-workflow-guide
Create a full and powerful worflow with Ionic (Unit Testing, Environment variables, Automatic documentation, Production App Server, Automatic deployment)
Stars: ✭ 46 (-34.29%)
Mutual labels:  documentation-generator
rclc
Mathematical expression calculator with big integers, floats, common fractions, and complex numbers support
Stars: ✭ 24 (-65.71%)
Mutual labels:  command-line-tool
WeConnect-cli
Commandline Interface to interact with the Volkswagen WeConnect Services
Stars: ✭ 27 (-61.43%)
Mutual labels:  command-line-tool
cert human
SSL Certificates for Humans
Stars: ✭ 34 (-51.43%)
Mutual labels:  command-line-tool
content-downloader
Python package to download files on any topic in bulk.
Stars: ✭ 102 (+45.71%)
Mutual labels:  command-line-tool
metronome
A set of tools for modifying and randomizing PokΓ©mon games
Stars: ✭ 23 (-67.14%)
Mutual labels:  command-line-tool
live-documenter
.NET documentation generator and live reader. Generate documentation from .NET code and xml comments, fast, quick and easy.
Stars: ✭ 64 (-8.57%)
Mutual labels:  documentation-generator
wholesome-cli
Command Line Tool for managing Flutter projects
Stars: ✭ 57 (-18.57%)
Mutual labels:  command-line-tool
iconset
A nifty command-line tool to customize macOS icons
Stars: ✭ 29 (-58.57%)
Mutual labels:  command-line-tool
smartcd
Expedite your navigation of Linux filesystem.
Stars: ✭ 35 (-50%)
Mutual labels:  command-line-tool
fontman
Manage and update your installed fonts.
Stars: ✭ 20 (-71.43%)
Mutual labels:  command-line-tool
raisin
A simple lightweight set of implementations and bindings for compression algorithms written in Go.
Stars: ✭ 17 (-75.71%)
Mutual labels:  command-line-tool
Infinite-File-Curtailer
Curtail is a utility program that reads stdin and writes to a file bound by size.
Stars: ✭ 23 (-67.14%)
Mutual labels:  command-line-tool
ExpressJS-SocketIO-Boilerplate
πŸ“¦ Simple Express.js & Socket.io Boilerplate
Stars: ✭ 31 (-55.71%)
Mutual labels:  documentation-generator
graphql-markdown
Flexible GraphQL Documentation Generator (Markdown)
Stars: ✭ 74 (+5.71%)
Mutual labels:  documentation-generator
swift-commandlinekit
Framework supporting the development of command-line tools in Swift on macOS and Linux. The framework supports managing command-line arguments, provides lightweight functions to deal with escape sequences, and defines an API for reading strings from the terminal.
Stars: ✭ 38 (-45.71%)
Mutual labels:  command-line-tool
vimwasm-try-plugin
Try Vim plugin on your browser without installing it using vim.wasm!
Stars: ✭ 21 (-70%)
Mutual labels:  command-line-tool
ut-cli
A command line tool to handle a unix timestamp.
Stars: ✭ 13 (-81.43%)
Mutual labels:  command-line-tool

ModuleInterface

Build Status GitHub release (latest by date) License Swift version Twitter Follow

Swift tool to generate Module Interfaces for Swift projects.

What is a Module Interface

A 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.

asciicast

Examples

Usage

To generate the module interface from your project, or library, run the moduleinterface command directly from the root your project.

$ cd ~/path/to/MyAppOrFramework
$ moduleinterface generate

This 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.

Usage options

$ moduleinterface help
Available commands:

clean      Delete the output folder and quit.
generate   Generates the Module Interface
help       Display general or command-specific help
version    Display the current version of ModuleInterface

Typing moduleinterface help <command> we get a list of all options for that command:

Generates the Swift Module Interface.

[--spm-module (string)]
	Generate documentation for Swift Package Manager module.

[--module-name (string)]
	Generate documentation for a Swift module.

[--input-folder (string)]
	Path to the input directory (defaults to /Users/minuscorp/Documents/GitHub/ModuleInterface).

[--output-folder (string)]
	Output directory (defaults to Documentation).

[--min-acl (string)]
	The minimum access level to generate documentation. Defaults to public.

--clean|-c
	Delete output folder before generating documentation.

[[]]
	List of arguments to pass to xcodebuild.

Usually, for most Xcode projects, no parameters are needed at all. xcodebuild should be able to find the default project and scheme.

If 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.

$ moduleinterface generate -- -scheme MyScheme

For Swift Package Manager modules, you can the module name using the --spm-module parameter.

$ moduleinterface generate --spm-module ModuleInterface

Installation

Download Binary

$ curl -Ls https://github.com/minuscorp/ModuleInterface/releases/download/latest/moduleinterface.macos.zip -o /tmp/moduleinterface.macos.zip
$ unzip -j -d /usr/local/bin /tmp/moduleinterface.macos.zip 

From Sources

Requirements:

Swift 5.1 runtime and Xcode installed in your computer.

Using Homebrew

brew tap minuscorp/moduleinterface brew install moduleinterface

Building with Swift Package Manager

$ git clone https://github.com/minuscorp/ModuleInterface.git
$ cd ModuleInterface
$ make

Contact

Follow and contact me on Twitter at @minuscorp.

Contributions

If you find an issue, just open a ticket on it. Pull requests are warmly welcome as well.

License

ModuleInterface is licensed under the Apache 2.0. See LICENSE for more info.

Acknowledegments

  • To @eneko for giving me the tooling idea.
  • To SourceKitten for providing such an awesome Framework for dealing with SourceKit.
  • To BQ for all the mentoring.
Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].