Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/AutobahnSwift/Autobahn

CLI tool written in Swift heavily inspired by https://github.com/fastlane/fastlane
https://github.com/AutobahnSwift/Autobahn

automation cli fastlane swift swift-library swift-package swift4

Last synced: about 1 month ago
JSON representation

CLI tool written in Swift heavily inspired by https://github.com/fastlane/fastlane

Awesome Lists containing this project

README

        

Autobahn



Travis status





Version

Swift 4.0



License


Twitter: @kdawgwilk

Autobahn is a set of tools (written in Swift) heavily inspired by [fastlane](https://github.com/fastlane/fastlane) to automate many day to day tasks associated with development of apps in the Apple ecosystem. Currently most progess has been made on a sub package called [Shuttle](https://github.com/kdawgwilk/Shuttle) that is basically a port of fastlane's [spaceship](https://github.com/fastlane/fastlane/tree/master/spaceship) which is an HTTP client for interacting with the Apple Developer portal and iTunesConnect.

>NOTE: This is still a work in progress and there is still much to do, here is a rough list of things I would like to see in the near future

### ToDO List:

- [x] DSL for defining `highways`
- [ ] >90% Code Coverage
- [ ] CLI tool
- [x] `drive ` drives the highway specified
- [ ] need to make this the default still
- [x] `init` creates template `Autobahn.swift` file
- [ ] `edit` command that creates a temp playground with autocomplete working for Autobahn.swift
- [ ] `verbose` obviously
- [ ] `actions` lists all available actions
- [ ] `action ` that describes the action
- [x] `help` to explain how each command works
- [x] Autobahn.swift config file see [danger-swift](https://github.com/danger/danger-swift)
- [ ] Homebrew install support
- [ ] Plugin architecture
- [ ] Git support
- [ ] Support `.env`

## Usage

```
$ autobahn drive [highway]
```

## Example Autobahn.swift

```swift
enum Highway: String, AutobahnDescription.Highway {
case build, test, deploy, release
}

Autobahn(Highway.self)

.beforeAll { highway in
print("Driving highway: \(highway)")
}

.highway(.build) {
print("Building...")
try sh("swift", "build")
}

.highway(.test) {
try sh("swift", "test")
}

.highway(.deploy) {
print("Deploying...")
}

.highway(.release, dependsOn: [.build, .deploy]) {
print("Releasing...")
}

.afterAll { highway in
print("Successfully drove highway: \(highway)")
}

.onError { name, error in
print("Error driving highway: \(name)")
print("Error: \(error)")
}

.drive()
```

## Installation

TODO: Not supported quite yet

```
$ brew tap kdawgwilk/homebrew-tap
$ brew install autobahn
```

### Development

```sh
$ git clone https://github.com/kdawgwilk/Autobahn.git
$ cd Autobahn
$ swift build

# You can run the cli from the build dir like this:
# .build/debug/autobahn drive
$ .build/debug/autobahn drive build

# Or I find it helpful to symlink to `/usr/local/bin` so I can run it directly
$ ln -s `pwd`/.build/debug/autobahn /usr/local/bin/autobahn

# autobahn drive
$ autobahn drive build
```

### 🚀 Contributing

All developers should feel welcome and encouraged to contribute to Autobahn, see our [getting started](/CONTRIBUTING.md) document here to get involved.

### 💙 Code of Conduct

Our goal is to create a safe and empowering environment for anyone who decides to use or contribute to Autobahn. Please help us make the community a better place by abiding to this [Code of Conduct](/CODE_OF_CONDUCT.md) during your interactions surrounding this project.

> This project is in no way affiliated with Apple Inc.