58

GitHub - tuist/tuist: ? Create, maintain, and interact with Xcode projects at sc...

 5 years ago
source link: https://github.com/tuist/tuist
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

README.md

logo.png

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)

Contributors

This project exists thanks to all the people who contribute. [Contribute]. 68747470733a2f2f6f70656e636f6c6c6563746976652e636f6d2f74756973746170702f636f6e7472696275746f72732e7376673f77696474683d383930

Backers

Thank you to all our backers! ? [Become a backer]

68747470733a2f2f6f70656e636f6c6c6563746976652e636f6d2f74756973746170702f6261636b6572732e7376673f77696474683d383930

Sponsors

Support this project by becoming a sponsor. Your logo will show up here with a link to your website. [Become a sponsor]

68747470733a2f2f6f70656e636f6c6c6563746976652e636f6d2f74756973746170702f73706f6e736f722f302f6176617461722e737667 68747470733a2f2f6f70656e636f6c6c6563746976652e636f6d2f74756973746170702f73706f6e736f722f312f6176617461722e737667 68747470733a2f2f6f70656e636f6c6c6563746976652e636f6d2f74756973746170702f73706f6e736f722f322f6176617461722e737667 68747470733a2f2f6f70656e636f6c6c6563746976652e636f6d2f74756973746170702f73706f6e736f722f332f6176617461722e737667 68747470733a2f2f6f70656e636f6c6c6563746976652e636f6d2f74756973746170702f73706f6e736f722f342f6176617461722e737667 68747470733a2f2f6f70656e636f6c6c6563746976652e636f6d2f74756973746170702f73706f6e736f722f352f6176617461722e737667 68747470733a2f2f6f70656e636f6c6c6563746976652e636f6d2f74756973746170702f73706f6e736f722f362f6176617461722e737667 68747470733a2f2f6f70656e636f6c6c6563746976652e636f6d2f74756973746170702f73706f6e736f722f372f6176617461722e737667 68747470733a2f2f6f70656e636f6c6c6563746976652e636f6d2f74756973746170702f73706f6e736f722f382f6176617461722e737667 68747470733a2f2f6f70656e636f6c6c6563746976652e636f6d2f74756973746170702f73706f6e736f722f392f6176617461722e737667

Open source

Tuist is a proud supporter of the Software Freedom Conservacy

Become a Conservancy Supporter!


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK