Beak 🐦 Peck into your Swift files from the command line

Overview

Beak 🐦

SPM Linux Git Version Build Status license

Peck into your Swift files from the command line

Beak can take a standard Swift file and then list and run any public global functions in it via a command line interface.

This is useful for scripting and for make-like files written in Swift. You can replace make or rake files with code written in Swift!

An example Swift script:

// This links https://github.com/kylef/PathKit as a dependency
// beak: kylef/PathKit @ 1.0.0

import PathKit // from the dependency listed above
import Foundation

/// Releases the product
/// - Parameters:
///   - version: the version to release
public func release(version: String) throws {
    // implementation here
    print("version \(version) released!")
}

/// Installs the product
public func install() throws {
    // implementation here
    print("installed")
}
$ beak list
    release: Releases the product
    install: Installs the product
$ beak run release --version 1.2.0
  version 1.2.0 released!

How does it work?

Beak analyzes your Swift file via SourceKit and finds all public and global functions. It uses information about the function and parameter names, types and default values to build up a command line interface. It also uses standard comment docs to build up descriptive help.

Beak can parse special comments at the top of your script so it can pull in dependencies via the Swift Package Manager.

By default Beak looks for a file called beak.swift in your current directory, otherwise you can pass a path to a different swift file with --path. This repo itself has a Beak file for running build scripts.

Installing

Make sure Xcode 10.2+ is installed first.

Mint 🌱

$ mint install yonaskolb/beak

Homebrew

$ brew tap yonaskolb/Beak https://github.com/yonaskolb/Beak.git
$ brew install Beak

Swift PM and Beak 🐦

This uses Swift PM to build and run beak from this repo, which then runs the install function inside the Beak.swift file also incuded in this repo. So meta!

$ git clone https://github.com/yonaskolb/Beak.git
$ cd Beak
$ swift run beak run install

Usage

List functions:

This shows all the functions that can be run

$ beak list

  release: Releases the product
  install: Installs the product

Run a function:

This runs a specific function with parameters. Note that any top level expressions in the swift file will also be run before this function.

$ beak run release --version 1.2.0
version 1.2.0 released

Run the swift file

It's also possible to just run the whole script instead of a specific function

$ beak run

Edit the swift file

This generates and opens an Xcode project with all dependencies linked, which is useful for code completion if you have defined any dependencies. The command line will prompt you to type c to commit any changes you made in Xcode back to the original file

$ beak edit
generating project

You can always use --help to get more information about a command or a function. This will use information from the doc comments.

Functions

For function to be accessible they must be global and declared public. Any non-public functions can be as helper functions, but won't be seen by Beak.

Functions can be throwing, with any errors thrown printed using CustomStringConvertible. This makes it easy to fail your tasks. For now you must include an import Foundation in your script to have throwing functions

Parameters

Any parameters without default values will be required.

Param types of Int, Bool, and String are natively supported. All other types will be passed exactly as they are as raw values, so if it compiles you can pass in anything, for example an enum value--buildType .debug.

Function parameters without labels will can be used with positional arguments:

public func release(_ version: String) { }
beak run release 1.2.0

Dependencies

Sometimes it's useful to be able to pull in other Swift packages as dependencies to use in your script. This can be done by adding some special comments at the top of your file. It must take the form:

// beak: {repo} {library} {library} ... @ {version}`

where items in {} are:

  • repo: is the git repo where a Swift package resides. This can take a short form of user/repo or an extended form https://github.com/user/repo.git
  • library: a space delimited list of libraries to include from this package. This defaults to the repo name, which is usually what you want.
  • version: the version of this package to include. This can either be a simple version string, or any of the types allowed by the Swift Package Manager Requirement static members eg
    • branch:develop or .branch("develop")
    • revision:ab794ebb or .revision("ab794ebb")
    • exact:1.2.0 or .exact("1.2.0")
    • .upToNextMajor(from: "1.2.0")
    • .upToNextMinor(from: "1.2.3")

Some examples:

// beak: JohnSundell/ShellOut @ 2.0.0
// beak: kylef/PathKit @ upToNextMajor:0.9.0
// beak: apple/swift-package-manager Utility @ branch:master

import Foundation
import Pathkit
import ShellOut
import Utility

You can use beak edit to get code completion for these imported dependencies.

Shebang

If you put a beak shebang at the top of your swift file and then run chmod a+x beak.swift on it to make it executable, you will be able to execute it directly without calling beak.

tasks.swift

#!/usr/bin/env beak --path

public func foo() {
    print("hello foo")
}

public func bar() {
    print("hello bar")
}
$ chmod a+x tasks.swift
$ ./tasks.swift run foo
  hello foo

If you then place this file into usr/local/bin you could run this file from anywhere:

$ cp tasks.swift /usr/local/bin/tasks
$ tasks run bar
  hello bar

To automatically insert the run option, you can change your shebang to #!/usr/bin/env beak run --path.

Alternatives

License

Beak is licensed under the MIT license. See LICENSE for more info.

Comments
  • When trying to compile, I get a String error

    When trying to compile, I get a String error

    I'm on Linux, under Swift 4.1

    This is what I ran:

    felix@felix-X550LD ~/D/P/A/beak> swift build
    Compile Swift Module 'BeakCore' (15 sources)
    /home/felix/Documents/Programming/AwesomeSystemSwift/beak/Sources/BeakCore/SourceKit.swift:86:54: error: value of type 'String' has no member 'substringWithByteRange'
            let substring = range(for: source).flatMap { contents.substringWithByteRange(start: Int($0.offset), length: Int($0.length)) }
                                                         ^~~~~~~~ ~~~~~~~~~~~~~~~~~~~~~~
    error: terminated(1): /home/felix/Documents/Programming/Binaries/swift/swift-4.1-snapshot/usr/bin/swift-build-tool -f /home/felix/Documents/Programming/AwesomeSystemSwift/beak/.build/debug.yaml main output:
        
    
    

    This line's the one causing the error. Maybe the library hasn't been updated to Swift 4.1?

    Anyway. Thanks for your help, and I hope you have a good day :)

    opened by felix91gr 10
  • Ensure edited file's attributes remain intact

    Ensure edited file's attributes remain intact

    I have a case where I create a Swift/Beak script and run chmod +x on it so that I can use it as a normal command (with #!/usr/bin/env beak run --path too)

    I found that if I beak edit -p the file (amazing, by the way), upon committing the changes the file is no longer executable so I need to chmod +x again.

    I've made this change and it works, however please let me know if there's a better, more PathKit-y way that you would do this ☺️

    opened by maxchuquimia 4
  • break list results misaligned with function docs in file

    break list results misaligned with function docs in file

    beak.swift file

    /**
     dummy
    */
    public func dummy() throws {}
    
    /**
     Releases the product
    */
    public func release(version: String) throws {
        // implementation here
        print("version \(version) released! for platform \(platform)")
    }
    
    /**
     Installs the product
    */
    public func install() throws {
        // implementation here
        print("installed")
    }
    
    /**
     Deletes the product
    */
    public func delete() throws {
        // implementation here
        print("deleted")
    }
    
    Functions:
    
      dummy: Releases the product
      release: Installs the product
      install: Deletes the product
      delete: 
    
    

    would have expected:

    Functions:
    
      dummy: dummy
      release: Releases the product
      install: Installs the product
      delete: Deletes the product
    
    

    same results regardless of using /** */ or ///

    opened by thecb4 4
  • `Illegal instruction: 4` when running beak commands

    `Illegal instruction: 4` when running beak commands

    Hi, I just wrote me a script to update a spreadsheet on a vocabulary learning site. I edited the file within Xcode by running beak edit, but the problem is that after writing some code the commands beak edit, beak list and beak run all didn't work.

    As a workaround what I'm doing right now is to comment out all code below the import statements with an editor like Atom, then I run beak edit (which then works fine) and then I uncomment the lines again in Xcode. When I run the Beakfile scheme within Xcode everything just works fine, so I can somehow use the script. But I would rather use things as designed: from the command line. :)

    Here's the entire content of my beak.swift file: https://gist.github.com/Dschee/3c4b89ef9da39ab7714c47fa97dc4cae

    And this is the error I get when running any beak commands:

    Illegal instruction: 4
    

    I'm using beak 0.3.1 on macOS 10.13.3 with Xcode 9.2.

    Any ideas why this happens? The error code doesn't really help ...

    opened by Jeehut 4
  • Please add shebang support

    Please add shebang support

    Unix scripts frequently start with a shebang/hashbang line like #!/bin/bash or #!/usr/bin/env python, which allows the rest of the script to be executed using a specific program.

    This seems perfect for Beak: if I could use Beak in the shebang line then I could move hello.swift directly into /usr/local/bin/hello and run it using a command such as hello run release.

    opened by twostraws 4
  • Adding Beak as a package dependency

    Adding Beak as a package dependency

    I'm trying to add Beak as a dependency to my project and import the BeakCore library, but I get this error when building:

    Fetching https://github.com/yonaskolb/Beak
    error: the package https://github.com/yonaskolb/Beak @ 0.3.3 contains revisioned dependencies:
        https://github.com/yonaskolb/swift-package-manager @ untyped_arguments
    error: product dependency 'BeakCore' not found
    

    I believe to fix this issue, https://github.com/yonaskolb/swift-package-manager needs to have a new version tagged on the untyped_arguments branch, and then the Package.swift in this repo needs to be changed from:

    ...
    .package(url: "https://github.com/yonaskolb/swift-package-manager", .branch("untyped_arguments")),
    ...
    

    to:

    ...
    .package(url: "https://github.com/yonaskolb/swift-package-manager", from: "new-version"),
    ...
    
    opened by jakeheis 3
  • Installation via Homebrew fails

    Installation via Homebrew fails

    Currently the installation of beak via Homebrew fails. This was reported to me, so I removed beak from Homebrew and got the same error (and can't use Beak anymore myself 😭 ):

    ==> Installing beak from yonaskolb/beak
    ==> Downloading https://github.com/yonaskolb/Beak/archive/0.3.2.tar.gz
    Already downloaded: /Users/Cihat/Library/Caches/Homebrew/beak-0.3.2.tar.gz
    ==> Building Beak
    ==> swift build --disable-sandbox -c release -Xswiftc -static-stdlib
    Last 15 lines from /Users/Cihat/Library/Logs/Homebrew/beak/01.swift:
    error: product dependency 'Utility' not found
    error: product dependency 'SwiftShell' not found
    error: product dependency 'Spectre' not found
    error: product dependency 'PathKit' not found
    Fetching https://github.com/jpsim/SourceKitten
    Fetching https://github.com/kylef/PathKit.git
    Fetching https://github.com/kylef/Spectre.git
    Fetching https://github.com/yonaskolb/swift-package-manager
    Fetching https://github.com/kareman/SwiftShell.git
    Fetching https://github.com/drmohundro/SWXMLHash.git
    Fetching https://github.com/jpsim/Yams.git
    Fetching https://github.com/norio-nomura/Clang_C.git
    Fetching https://github.com/Carthage/Commandant.git
    Fetching https://github.com/antitypical/Result.git
    Fetching https://github.com/norio-nomura/SourceKit.git
    
    If reporting this issue please do so to (not Homebrew/brew or Homebrew/core):
    yonaskolb/beak
    
    /usr/local/Homebrew/Library/Homebrew/utils/github.rb:220:in `raise_api_error': curl failed!  (GitHub::Error)
    curl: (22) The requested URL returned error: 422 Unprocessable Entity
    curl: (3) <url> malformed
    	from /usr/local/Homebrew/Library/Homebrew/utils/github.rb:178:in `open'
    	from /usr/local/Homebrew/Library/Homebrew/utils/github.rb:278:in `search'
    	from /usr/local/Homebrew/Library/Homebrew/utils/github.rb:225:in `search_issues'
    	from /usr/local/Homebrew/Library/Homebrew/utils/github.rb:238:in `issues_for_formula'
    	from /usr/local/Homebrew/Library/Homebrew/exceptions.rb:369:in `fetch_issues'
    	from /usr/local/Homebrew/Library/Homebrew/exceptions.rb:365:in `issues'
    	from /usr/local/Homebrew/Library/Homebrew/exceptions.rb:419:in `dump'
    	from /usr/local/Homebrew/Library/Homebrew/brew.rb:138:in `rescue in <main>'
    	from /usr/local/Homebrew/Library/Homebrew/brew.rb:30:in `<main>'
    
    opened by Jeehut 3
  • upgrade to version 0.5.0 failed

    upgrade to version 0.5.0 failed

    Hey, I recently tried to upgrade Beak to version 0.5.0.

    XCode Version: 10.2 Swift Version:

    Apple Swift version 5.0 (swiftlang-1001.0.69.5 clang-1001.0.46.3)
    Target: x86_64-apple-darwin18.5.0
    
    

    with following error:

    [16:44:10 | NewProjectTemplate-iOS ] brew upgrade beak
    ==> Upgrading 1 outdated package:
    yonaskolb/beak/beak 0.4.0 -> 0.5.0
    ==> Upgrading yonaskolb/beak/beak
    ==> Downloading https://github.com/yonaskolb/Beak/archive/0.5.0.tar.gz
    Already downloaded: /Users/rocklyve/Library/Caches/Homebrew/downloads/5a0b9ae96158b12b7843a3cd617ee54c57b492fedc00433aaad78083fde4e6ee--Beak-0.5.0.tar.gz
    ==> Building Beak
    ==> swift build --disable-sandbox -c release -Xswiftc -static-stdlib
    Last 15 lines from /Users/rocklyve/Library/Logs/Homebrew/beak/01.swift:
          _$s8SwiftCLI4TaskC6launch030_19E0ACB72F1C972020BFBD69850F9J1FLLyyF in Task.swift.o
      "_swift_weakLoadStrong", referenced from:
          _$s8SwiftCLI10LineStreamC4eachACySSc_tcfcyycfU_ in Stream.swift.o
          _$s8SwiftCLI13CaptureStreamCACycfcyycfU_ in Stream.swift.o
          _$s8SwiftCLI4TaskC6launch030_19E0ACB72F1C972020BFBD69850F9J1FLLyyFySo6NSTaskCcfU_ in Task.swift.o
      "_swift_willThrow", referenced from:
          _$s7BeakCLI11EditCommandC05SwiftB00D0AadEP7executeyyKFTWTm in BeakCommand.swift.o
          _$s7BeakCLI11EditCommandCAA0aD0A2aDP7execute4path8beakFiley7PathKit0I0V_0A4Core0aH0VtKFTW in EditCommand.swift.o
          _$s7BeakCLI11EditCommandC7execute4path8beakFiley7PathKit0I0V_0A4Core0aH0VtKFTf4nxn_n in EditCommand.swift.o
          _$s7BeakCLI15FunctionCommandCAA0aD0A2aDP7execute4path8beakFiley7PathKit0I0V_0A4Core0aH0VtKFTW in FunctionCommand.swift.o
          _$s7BeakCLI15FunctionCommandC7execute4path8beakFiley7PathKit0I0V_0A4Core0aH0VtKFTf4nxn_n in FunctionCommand.swift.o
          _$s7BeakCLI11ListCommandCAA0aD0A2aDP7execute4path8beakFiley7PathKit0I0V_0A4Core0aH0VtKFTW in ListCommand.swift.o
          _$s7BeakCLI10RunCommandCAA0aD0A2aDP7execute4path8beakFiley7PathKit0I0V_0A4Core0aH0VtKFTW in RunCommand.swift.o
          ...
    ld: symbol(s) not found for architecture x86_64
    
    If reporting this issue please do so to (not Homebrew/brew or Homebrew/core):
    yonaskolb/beak
    
    Error: Validation Failed: [{"message"=>"The listed users and repositories cannot be searched either because the resources do not exist or you do not have permission to view them.", "resource"=>"Search", "field"=>"q", "code"=>"invalid"}]
    
    opened by rocklyve 2
  • Error on installation

    Error on installation

    Hi i'm trying to install beak using swift run beak run install but i got this error:

    error: root manifest not found
    ⚠️  Command '/bin/bash -c "swift build --disable-sandbox"' returned with error code 1.
    

    This is my swift --version:

    Apple Swift version 4.1 (swiftlang-902.0.48 clang-902.0.37.1)
    Target: x86_64-apple-darwin17.5.0
    

    Any idea?

    opened by tflhyl 2
  • Update via Homebrew fails

    Update via Homebrew fails

    I have beak 0.3.3 installed on my machine (macOS 10.13.4 & Xcode 9.3) but get an error when trying to upgrade to the latest version (0.3.5). Here's the output:

    $ brew upgrade beak
    Updating Homebrew...
    ==> Auto-updated Homebrew!
    Updated Homebrew from 7166289a to 714bf515.
    Updated 2 taps (homebrew/core, caskroom/cask).
    ==> Updated Formulae
    annie                       geth                        libphonenumber              pgpool-ii                   sonarqube                   zsh
    
    ==> Upgrading 1 outdated package, with result:
    yonaskolb/beak/beak 0.3.3 -> 0.3.5
    ==> Upgrading yonaskolb/beak/beak
    ==> Downloading https://github.com/yonaskolb/Beak/archive/0.3.5.tar.gz
    ==> Downloading from https://codeload.github.com/yonaskolb/Beak/tar.gz/0.3.5
    ######################################################################## 100.0%
    ==> Building Beak
    ==> swift build --disable-sandbox -c release -Xswiftc -static-stdlib
    Last 15 lines from /Users/Me/Library/Logs/Homebrew/beak/01.swift:
    Resolving https://github.com/kylef/Spectre.git at 0.8.0
    Cloning https://github.com/drmohundro/SWXMLHash.git
    Resolving https://github.com/drmohundro/SWXMLHash.git at 4.6.0
    Cloning https://github.com/antitypical/Result.git
    Resolving https://github.com/antitypical/Result.git at 3.2.4
    Cloning https://github.com/norio-nomura/SourceKit.git
    Resolving https://github.com/norio-nomura/SourceKit.git at 1.0.1
    Cloning https://github.com/Carthage/Commandant.git
    Resolving https://github.com/Carthage/Commandant.git at 0.13.0
    Cloning https://github.com/kylef/PathKit.git
    Resolving https://github.com/kylef/PathKit.git at 0.9.1
    Cloning https://github.com/apple/swift-package-manager
    Resolving https://github.com/apple/swift-package-manager at 0.2.0
    Cloning https://github.com/norio-nomura/Clang_C.git
    Resolving https://github.com/norio-nomura/Clang_C.git at 1.0.2
    
    If reporting this issue please do so to (not Homebrew/brew or Homebrew/core):
    yonaskolb/beak
    
    Error: curl failed!
    curl: (22) The requested URL returned error: 422 Unprocessable Entity
    curl: (3) <url> malformed
    
    opened by Jeehut 2
  • error: use of unresolved identifier 'exit'

    error: use of unresolved identifier 'exit'

    got this at first try, after copying and pasting beak.swift from the example in README.md

    $ beak run install

    Compile Swift Module 'BeakFile' (1 sources)
    **/Users/----/Documents/beak/builds/_Users_icterra/Sources/BeakFile/main.swift:20:5: error: use of unresolved identifier 'exit'
        exit(1)
        ^~~~**
    
    error: terminated(1): /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/swift-build-tool -f /Users/----/Documents/beak/builds/_Users_icterra/.build/debug.yaml main
    
    opened by erkekin 2
  • Support Linux

    Support Linux

    • bumped to sourcekitten to 0.29.0
    • changed substring function in sourcekit to remove error
    • added Task. to run and capture in commands
    • added stronger .gitignore file to avoid uploading DerivedData folder
    opened by thecb4 0
  • [WIP] Add support for including single Swift files

    [WIP] Add support for including single Swift files

    I've just begun implementing the feature suggested in #40. This is a simple implementation and could already be working, I haven't added tests yet. @yonaskolb Feel free to give feedback already though, if you like. I will probably not be able to continue my work for a few days, please stay tuned (or feel free to continue it yourself, if you like).

    TODOs:

    • [x] Implement single file include support
    • [ ] Test single file include support
    • [ ] Make sure multiple specifications of the same dependency in different files are reduced to one
    • [ ] Document including files, warning against global private or fileprivate access identifiers
    • [ ] Update beak edit with // FILE: beakScript/Utility.swift comments to separate files
    • [ ] Document the different beak edit behavior using included files
    • [ ] (Optional) Add support for including all files in a directory
    • [ ] (Optional) Test inclusion of entire directory (making sure only Swift files are added)
    opened by Jeehut 0
  • Refactor Homebrew formula using Makefile

    Refactor Homebrew formula using Makefile

    This refactors the Homebrew formula according to this blog post: https://nshipster.com/homebrew/

    Please note that this is related to #35 as I've also audited this formula for Homebrew core release.

    opened by Jeehut 0
  • Add support for including other Swift files

    Add support for including other Swift files

    Some of my beak.swift files became quite long recently and I fell like I'd rather split them into separate files with separate contexts. I'm not sure if this is possible at the moment somehow, but I couldn't find something. What I'm thinking of is something like this:

    // include: beakScripts/DependencyManagement.swift
    // include: beakScripts/ProjectInitializer.swift
    // include: beakScripts/Utility.swift
    

    This way one could keep the beak.swift file small and only import dependencies that are needed in the smaller files. Internally, Beak could simply replace the above entries with the files contents and build the result only reordering the dependency declarations to the top (if needed, I'm not sure if they can be declared somewhere down the line). So this should not be too hard to implement.

    Alternatively the following could also be possible to include all Swift files in a directory:

    // include: beakScripts
    
    opened by Jeehut 0
  • Let enum parameters be specified without leading .

    Let enum parameters be specified without leading .

    When a function has an enum parameter, I need to type the leading dot on the command line for it to work. e.g: ".none" instead of "none" for an optional parameter

    It would be more natural If Beak accepted the parameter without the leading dot.

    opened by ferranpujolcamins 0
  • Installation on Docker Ubuntu Failed

    Installation on Docker Ubuntu Failed

    Hi, I have successfully installed Beak on MacOS system, but I am having difficulties to do it on Ubuntu 16.04

    Platform: Docker image Ubuntu 16.04 Docker image: Swift official image. Swift version 4.1.3

    I have created a gist file with the result of my swift run beak run install : Installation

    Moreover, I have tried as well using linuxbrew (Homebrew for Debian/Linux) and the tap formulae seems to do not fit the requirements for the installation either.

    What am I doing wrong? Some help is appreciated! I am new using Swift and I think Beak can add a very interesting and simple feature !

    Thank you

    opened by ghost 0
Releases(0.5.1)
  • 0.5.1(Apr 6, 2019)

  • 0.5.0(Mar 30, 2019)

  • 0.4.0(Jun 3, 2018)

    Added

    • Added support for reading from input in beak files (stdin) #29 @jakeheis
    • Added support for cancellation (SIGINT forwarding) #29 @jakeheis
    • Added support for passing nil to optional parameters #29 @jakeheis
    • Added Linux support #33 @yonaskolb

    Fixed

    • Fixed running on case sensitive file systems #27 @tflhyl
    • Fixed homebrew installations #32 @yonaskolb

    Changed

    • Changed beak cache path from ~/Documents/beak/builds to ~/.beak/builds #30 @tflhyl

    Internal

    • Replaced SwiftPM and SwiftShell with SwiftCLI #29 @jakeheis
    • Created seperate BeakCLI target #31 @yonaskolb

    Commits

    Source code(tar.gz)
    Source code(zip)
  • 0.3.5(Apr 16, 2018)

  • 0.3.4(Mar 31, 2018)

    Fixed

    • Fixed swift package manager dependency targeting so that BeakCore can be used as a dependency #19

    Internal

    • Updated PathKit, SWXMLHash, swift-package-manager, and SwiftShell

    Commits

    Source code(tar.gz)
    Source code(zip)
  • 0.3.3(Mar 2, 2018)

  • 0.3.2(Feb 24, 2018)

  • 0.3.1(Jan 6, 2018)

    Added

    • Added shebang documentation #!/usr/bin/env beak --path

    Fixed

    • Fixed dependency declarations not being parsed if they didn't start on the first line, for example if you have a shebang

    Commits

    Source code(tar.gz)
    Source code(zip)
  • 0.3.0(Jan 5, 2018)

    Added

    • added homebrew formula
    • added automatic copying back of edited script from Xcode in beak edit
    • added ability to simply run file as a script without specifying a function

    Changed

    • moved --path parameter before subcommands

    Commits

    Source code(tar.gz)
    Source code(zip)
  • 0.2.0(Jan 4, 2018)

    Added

    • Unnamed params are now parsed to positional arguments
    • Added beak edit command
    • Added beak --version
    • Added release to beak.swift

    Changed

    • Improved error logging
    • Show param defaults in run --help
    • Removed unused dependencies
    • Use dynamic argument lookup from Swift PM PR
    • Don't write build files if unchanged

    Fixed

    • Fixed build path of beak files
    • Fixed build errors when multiple dependency libraries are imported
    • Fixed install beak function

    Commits

    Source code(tar.gz)
    Source code(zip)
  • 0.1.0(Dec 31, 2017)

Owner
Yonas Kolb
iOS and Swift dev
Yonas Kolb
A Swift command line tool for generating your Xcode project

XcodeGen XcodeGen is a command line tool written in Swift that generates your Xcode project using your folder structure and a project spec. The projec

Yonas Kolb 5.9k Jan 9, 2023
A command line tool for managing Swift Playground projects on your Mac.

swift-playground-tools A command line tool for managing Swift Playground projects on your Mac. Generate Xcode Project $ playground-tools generate-xcod

Liam Nichols 0 Dec 31, 2021
Easily generate cross platform Swift framework projects from the command line

SwiftPlate Easily generate cross platform Swift framework projects from the command line. SwiftPlate will generate Xcode projects for you in seconds,

John Sundell 1.8k Dec 27, 2022
Save development time! Respresso automatically transforms and delivers your digital assets into your projects

Introduction Respresso is a centralized resource manager for shared Android, iOS and Web frontend projects. It allows you to simply import the latest

Respresso 10 Nov 8, 2022
Save development time! Respresso automatically transforms and delivers your digital assets into your projects

Respresso Android client Respresso is a centralized resource manager for shared Android, iOS and Web frontend projects. It allows you to simply import

Respresso 11 May 27, 2021
Save development time! Respresso automatically transforms and delivers your digital assets into your projects

Respresso iOS client Respresso is a centralized resource manager for shared Android, iOS and Web frontend projects. It allows you to simply import the

Respresso 50 May 1, 2021
Turn your Swift data model into a working CRUD app.

Model2App is a simple library that lets you quickly generate a CRUD iOS app based on just a data model defined in Swift. (CRUD - Create Read Update De

Q Mobile 132 Dec 22, 2022
FlutterNativeDragAndDrop - A package that allows you to add native drag and drop support into your flutter app

native_drag_n_drop A package that allows you to add native drag and drop support

Alex Rabin 21 Dec 21, 2022
The awesome Fastlane tools brought into your Xcode

Fastlane-Plugin for Xcode Features Run fastlane command with one click. Add your Fastfile in xcode. Setup Fastlane. Install Install via Alcatraz OR Cl

Rishabh Tayal 38 Jun 6, 2021
A Swift package for encoding and decoding Swift Symbol Graph files.

SymbolKit The specification and reference model for the Symbol Graph File Format. A Symbol Graph models a module, also known in various programming la

Apple 141 Dec 9, 2022
This is a Swift Package bundling different Train APIs into one simple Swift interface.

This is a Swift Package bundling different Train APIs into one simple Swift interface.

ICE Buddy 8 Jul 5, 2022
A plugin to allow Lightroom to export HEIC files

LRExportHEIC A plugin to allow Lightroom to export HEIC files. There are two components: The plugin itself, which is the component that interfaces wit

Manu Wallner 21 Jan 3, 2023
React Native utility library around image and video files for getting metadata like MIME type, timestamp, duration, and dimensions. Works on iOS and Android using Java and Obj-C, instead of Node πŸš€.

Qeepsake React Native File Utils Extracts information from image and video files including MIME type, duration (video), dimensions, and timestamp. The

Qeepsake 12 Oct 19, 2022
Aplikasi iReader adalah Aplikasi Pemindai Barcode dan Teks untuk iOS & MacOS dengan fitur Text Scanner via Kamera & Import Files.

Aplikasi iReader adalah Aplikasi Pemindai Barcode dan Teks untuk iOS & MacOS dengan fitur Text Scanner via Kamera & Import Files. Aplikasi ini dibuat dengan SwiftUI, AVKit, dan VisionKit (On Device Machine Learning Processing).

DK 8 Oct 6, 2022
This is BouncyBall, from Develop in Swift Explorations Unit 3, completed into Part 3, where the onTapped function gets a little squirrelly

This is BouncyBall, from Develop in Swift Explorations Unit 3, completed into Part 3, where the onTapped function gets a little squirrelly. Use this version when you add a function to be called when the funnel is tapped and taps aren't registered in the simulator.

Teaching Develop in Swift 0 Nov 20, 2021
Condense string literals into global variables.

Gettysburg This is an implementation of the SAX interface. API Documentation Documentation of the API can be found here: Gettysburg API A note on Char

Galen Rhodes 0 Nov 12, 2021
Codeless Appodeal integration into Unity project.

Codeless out of the box Appodeal integration into Unity project. Contains global config file which provide you ability to setup Appodeal without any line of code.

Ivan Murzak 1 Dec 30, 2021
An Xcode Plugin to upload code snippets directly into Slack and Gist

XCSnippetr Share code snippets to Slack and Gist without leaving Xcode ever again! ?? Features Upload code snippets using Slack's and Github's APIs. T

Ignacio Romero Zurbuchen 100 Nov 29, 2022
LinkedLog is a Xcode plugin that includes a Xcode PCH header file template that adds the macros `LLog` and `LLogF` and parses their output to link from the console to the corresponding file and line.

LinkedLog Xcode Plugin LinkedLog is a Xcode plugin that includes a Xcode PCH file template that adds the macros LLog and LLogF. The LLog macro will wo

Julian F. Weinert 22 Nov 14, 2022