Coder Social home page Coder Social logo

mihai-salari / autobahn Goto Github PK

View Code? Open in Web Editor NEW

This project forked from muukii/autobahn

0.0 1.0 0.0 61 KB

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

License: MIT License

Swift 98.47% Makefile 1.53%

autobahn's Introduction

Autobahn

Travis status Version Swift 4.0 License Twitter: @kdawgwilk

Autobahn is a set of tools (written in Swift) heavily inspired by 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 that is basically a port of fastlane's 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:

  • DSL for defining highways
  • >90% Code Coverage
  • CLI tool
    • drive <highway> drives the highway specified
      • need to make this the default still
    • 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 <action_name> that describes the action
    • help to explain how each command works
  • Autobahn.swift config file see danger-swift
  • Homebrew install support
  • Plugin architecture
  • Git support
  • Support .env

Usage

$ autobahn drive [highway]

Example Autobahn.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

$ 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 <highway_name>
$ .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 <highway_name>
$ autobahn drive build

๐Ÿš€ Contributing

All developers should feel welcome and encouraged to contribute to Autobahn, see our getting started 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 during your interactions surrounding this project.

This project is in no way affiliated with Apple Inc.

autobahn's People

Contributors

benchr267 avatar kdawgwilk avatar kiliankoe avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.