All Projects → pumaswift → Puma

pumaswift / Puma

Licence: mit
🐯 Build utilities in pure Swift

Programming Languages

swift
15916 projects

Projects that are alternatives of or similar to Puma

U3d
U3d is a cross-platform set of tools to interact with Unity3D from command line.
Stars: ✭ 309 (-35.22%)
Mutual labels:  build
Fury
A new build tool for JVM languages
Stars: ✭ 384 (-19.5%)
Mutual labels:  build
Cpp Reflection
C++ Reflection Parser / Runtime Skeleton
Stars: ✭ 440 (-7.76%)
Mutual labels:  build
Tensorflow Windows Wheel
Tensorflow prebuilt binary for Windows
Stars: ✭ 3,428 (+618.66%)
Mutual labels:  build
Unity Actions
Github actions for testing and building Unity projects
Stars: ✭ 358 (-24.95%)
Mutual labels:  build
Buildtimeanalyzer For Xcode
Build Time Analyzer for Swift
Stars: ✭ 3,958 (+729.77%)
Mutual labels:  build
Ant
Apache Ant is a Java-based build tool.
Stars: ✭ 296 (-37.95%)
Mutual labels:  build
Gaia
Build powerful pipelines in any programming language.
Stars: ✭ 4,534 (+850.52%)
Mutual labels:  build
Appify
Create a macOS Application from an executable (like a Go binary)
Stars: ✭ 372 (-22.01%)
Mutual labels:  build
Assemble
Community
Stars: ✭ 3,995 (+737.53%)
Mutual labels:  build
Node Build Monitor
A Build Monitor written in Node.js, which supports several build services and can be easily extended.
Stars: ✭ 336 (-29.56%)
Mutual labels:  build
Angular Bazel Example
MOVED to the bazel nodejs monorepo 👉
Stars: ✭ 354 (-25.79%)
Mutual labels:  build
Url
Parse, build and manipulate URL's
Stars: ✭ 396 (-16.98%)
Mutual labels:  build
Packr
The simple and easy way to embed static files into Go binaries.
Stars: ✭ 3,332 (+598.53%)
Mutual labels:  build
Invoke Build
Build Automation in PowerShell
Stars: ✭ 453 (-5.03%)
Mutual labels:  build
Psdeploy
Simple PowerShell based deployments
Stars: ✭ 302 (-36.69%)
Mutual labels:  build
Samurai
ninja-compatible build tool written in C
Stars: ✭ 390 (-18.24%)
Mutual labels:  build
Platformio Atom Ide
PlatformIO IDE for Atom: The next generation integrated development environment for IoT
Stars: ✭ 475 (-0.42%)
Mutual labels:  build
Muslrust
Docker environment for building musl based static rust binaries
Stars: ✭ 456 (-4.4%)
Mutual labels:  build
Opencv Mingw Build
👀 MinGW 32bit and 64bit version of OpenCV compiled on Windows. Including OpenCV 3.3.1, 3.4.1, 3.4.1-x64, 3.4.5, 3.4.6, 3.4.7, 3.4.8-x64, 3.4.9, 4.0.0-alpha-x64, 4.0.0-rc-x64, 4.0.1-x64, 4.1.0, 4.1.0-x64, 4.1.1-x64, 4.5.0-with-contrib
Stars: ✭ 401 (-15.93%)
Mutual labels:  build

Puma

Puma is a set of build utilities to automate mobile application development and deployment.

Unlike other command line tool that you need to understand lots of command line arguments, Puma is intended to be used as a Swift library. Just import in your Swift script file and run. There's no additional configuration file, your Swift script file is the source of truth. With auto completion and type safety, you are ensured to do the right things in Puma.

  • Puma and its dependencies are written in pure Swift, making it easy to read and contribute.
  • Use latest Swift 5.1 features like function builder to enable declarative syntax
  • Type-safe. All required and optional arguments are clear.
  • No configuration file. Your Swift script is your definition.
  • Simple wrapper around existing tools like xcodebuild, instruments and agvtool
  • Reuse awesome Swift scripting dependencies from Swift community

To see Puma in action, see this gif

Below is an example script where it performs the following tasks and finally it posts to slack, for more detailed information check the documentation

import Foundation
import Puma
import PumaCore
import PumaiOS

let workflow = Workflow {
    RunScript {
        $0.script = "echo 'Hello Puma'"
    }
    
    Screenshot {
        $0.configure(
            projectType: .project("TestApp"),
            appScheme: "TestApp",
            uiTestScheme: "TestAppUITests",
            saveDirectory: Directory.downloads.appendingPathComponent("PumaScreenshots").path
        )
        
        $0.add(scenarios: [
            .init(
                destination: .init(
                    name: Destination.Name.iPhone11,
                    platform: Destination.Platform.iOSSimulator,
                    os: Destination.OS.iOS13_2_2
                ),
                language: Language.en_US,
                locale: Locale.en_US
            ),
            .init(
                destination: .init(
                    name: Destination.Name.iPhone11Pro,
                    platform: Destination.Platform.iOSSimulator,
                    os: Destination.OS.iOS13_2_2
                ),
                language: Language.ja,
                locale: Locale.ja
            )
        ])
    }
    
    ExportArchive {
        $0.isEnabled = false
        $0.configure(
            projectType: .project("TestApp"),
            archivePath: Directory.downloads.appendingPathComponent("TestApp.xcarchive").path,
            optionsPlist: .options(
                .init(
                    method: ExportArchive.ExportMethod.development,
                    signing: .automatic(
                        .init(teamId: ProcessInfo().environment["teamId"]!)
                    )
                )
            ),
            exportDirectory: Directory.downloads.path
        )
    }
    
    Slack {
        $0.post(
            message: .init(
                token: ProcessInfo().environment["slackBotToken"]!,
                channel: "random",
                text: "Hello from Puma",
                username: "onmyway133"
            )
        )
    }
}

workflow.workingDirectory = Directory.home.appendingPathComponent("XcodeProject/TestApp").path
workflow.run()

Documentation

Contributing

Puma is in its early development, we need your help.

License

Puma is released under the MIT license. See LICENSE for details.

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