Swift scripting resources
This is a list of tools, frameworks & examples that you might find useful when scripting in Swift
Index
Tools
Marathon
Marathon makes it easy to write, run and manage your Swift scripts. Quickly create, edit, run, install & share your scripts, and easily add dependencies to them.
PackageBuilder
PackageBuilder builds a simple command-line structure using SPM. The structure follows the approach described in Building a command line tool using the Swift Package Manager separating your code between a framework and the executable.
Swift Package Manager
The Package Manager for the Swift Programming Language. Using it you can manage your dependencies + compile & run your scripts. Also enables you to generate Xcode projects for your scripts.
Frameworks
While most Swift frameworks can be used in scripts, the ones in this list are particularily useful in tasks that are common when doing Swift scripting.
Commandant
Commandant is a Swift framework for parsing command-line arguments, inspired by Argo (which is, in turn, inspired by the Haskell library Aeson).
Commander
Commander is a small Swift framework allowing you to craft beautiful command line interfaces in a composable way. Accept input in a type safe way with great error handling and provide descriptions for your arguments.
CommandLineKit
A pure Swift library for creating command-line interfaces. Using it, you can easily accept parameters & flags in your scripts, and print help messages & usage instructions for them.
Files
A nicer way to handle files & folders in Swift. Files gives you an object-oriented API around the file system, making it easy to create, move, rename and handle files & folders in a script.
Guaka
Guaka helps you create modern and familiar CLI apps in the vein of widely used projects such as: Docker, Kubernetes, OpenShift, Hugo and more.
Guitar
A Cross-Platform String and Regular Expression Library Written in Swift. Makes it easier to handle strings (such as input) in your scripts, evaluate regular expressions on them, transform them, and more.
Rainbow
Delightful console output for Swift developers. Rainbow makes it easy to color the text your script outputs on the command line.
Releases
A Swift package for resolving released versions from a Git repository. Enables you to easily build tooling around Git versions. Resolve, sort & filter versions for both remote & local repositories.
ShellOut
Easily run shell commands from a Swift script or command line tool. Gives you a simple function that enables you to "shell out" and run tasks on the command line from your scripts.
Swiftline
Swiftline is a set of tools to help you create command line applications.
SwiftShell
A library for creating command-line applications and running shell commands in Swift. It provides features such as running asynchronous tasks, handling contexts & errors and managing input & output.
Xgen
A Swift package for generating Xcode workspaces & playgrounds. Using it, you can build developer tools & scripts that generates workspaces for your projects, or playgrounds for quick prototyping.
Examples
Carting
Carting is a simple tool for updating Carthage Build Phase.
Marathon Examples
A collection of example Swift scripts that can easily be run using Marathon.
Playground
Instantly create Swift playgrounds from the command line.
Selenops
A stupid simple Swift Web Crawler.
TestDrive
Quickly try out any Swift pod or framework in a playground.
Contributing
This list is still in its early days, so a lot of awesome stuff is sure to be missing. If you know of a tool, framework or example that should be on this list - add it and open a PR!
- You can totally add your own creations.
- Only add things that are open source, and that are generally useful for Swift scripting.
- Don't add general Swift frameworks such as JSON mappers or networking libraries (there are other lists for that).
- Keep the list in alphabetical order.
- Follow the same style as for the other entries.
- No more than 2 lines of description for each entry.
Looking forward to your contributions and seeing this list grow!