Giter Site home page Giter Site logo

alvincrisuy / tuist Goto Github PK

View Code? Open in Web Editor NEW

This project forked from tuist/tuist

0.0 2.0 0.0 39.41 MB

๐Ÿš€ Create, maintain, and interact with Xcode projects at scale

Home Page: https://tuist.github.io/tuist/

License: MIT License

Makefile 0.10% Swift 99.53% Objective-C 0.08% JavaScript 0.18% Shell 0.11%

tuist's Introduction

code style: prettier CircleCI codecov Slack

What's Tuist ๐Ÿ•บ

Tuist is a command line tool that helps you generate, maintain and interact with Xcode projects.

It's open source and written in Swift.

Defining your projects ๐Ÿ’ผ

With Tuist, projects are defined in a Project.swift, also known as manifest. The manifest format abstracts you from the implementation details of Xcode projects. In your manifest you can define which targets your project has, which sources and resources belong to them, as well as the dependencies with targets in the same and other projects. The advantages of defining the projects in a manifest are:

  • It can catch misconfigurations and fail early. For example, if a target has an invalid dependency, itโ€™ll let you know before you start compiling the app.
  • Since the manifest doesnโ€™t include Xcode implementation details, the likelihood of having git conflicts is significantly lower.
  • It makes the configuration easier. The decision on how the project looks is on you. Tuist processes it and manages the complexity for you. One example of that complexity is setting up dependencies between targets.

The example below shows how projects are defined with Tuist:

import ProjectDescription

let project = Project(name: "App",
                      targets: [
                        Target(name: "App",
                               platform: .iOS,
                               product: .app,
                               bundleId: "io.tuist.App",
                               infoPlist: "Info.plist",
                               sources: "Sources/**",
                               dependencies: [
                                    /* Target dependencies can be defined here */
                                    /* .framework(path: "framework") */
                                ]),
                        Target(name: "AppTests",
                               platform: .iOS,
                               product: .unitTests,
                               bundleId: "io.tuist.AppTests",
                               infoPlist: "Tests.plist",
                               sources: "Tests/**",
                               dependencies: [
                                    .target(name: "App")
                               ])
                      ])

Although we encourage defining the manifests in Swift, Tuist also supports JSON and Yaml formats.

Interacting with your projects ๐Ÿ™‡โ€โ™€๏ธ

Tuist leverages project generation to provide a simple and convenient set of commands, standard across all the projects. The commands infer most of the necessary information from your projects, requiring you to pass only the arguments that are strictly necessary.

Having a standard command line interface makes it easier to jump between projects since thereโ€™s an interaction language everyone in the team is familiar with.

  • ๐Ÿ‘ฉโ€๐Ÿ’ป Init: Bootstraps a new project. You can specify the platform and the type of project and itโ€™ll generate all the necessary artifacts (Info.plist, AppDelegate, Project.swift, Playgroundsโ€ฆ).
  • ๐Ÿ’ซ Generate: Generates the Xcode workspace and projects to work on a particular project.
  • ๐Ÿ“ฆ Build: (Not available yet) Builds the project in the current directory. It supports all the arguments that xcodebuild supports.
  • โœ… Test: (Not available yet) Test the project in the current directory. It supports all the arguments that xcodebuild supports.
  • ๐Ÿ“ฑ Run: (Not available yet) Runs the project. If the project needs a device to run on, itโ€™ll prompt you to select one.
  • ๐Ÿš€ Release: (Not available yet) Builds and publishes your project on iTunes Connect.

The list of actions will likely grow as we get feedback from you.

Install โฌ‡๏ธ

Running script:

/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/tuist/install/master/install)"

Bootstrap your first project ๐ŸŒ€

tuist init --platform ios --product application
tuist generate # Generates Xcode project

Check out the project "Getting Started" guide to learn more about Tuist and all its features.

Setup for development ๐Ÿ‘ฉโ€๐Ÿ’ป

  1. Git clone: [email protected]:tuist/tuist.git
  2. Generate Xcode project with swift package generate-xcodeproj.
  3. Open tuist.xcodeproj.
  4. Have fun ๐Ÿค–

Shield

If your project uses Tuist, you can add the following badge to your project README:

Tuist Badge

[![Tuist Badge](https://img.shields.io/badge/powered%20by-Tuist-green.svg?longCache=true)](https://github.com/tuist)

Open source

Tuist is a proud supporter of the Software Freedom Conservacy

Become a Conservancy Supporter!

tuist's People

Contributors

esttorhe avatar dcordero avatar santos88 avatar zdnk avatar

Watchers

Alvin Cris Uy avatar  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.