Commit Graph

75 Commits

Author SHA1 Message Date
Kas d88e11951d
Fix test target build settings (#661)
Resolves: https://github.com/tuist/tuist/issues/660

- Ensure the `LD_RUNPATH_SEARCH_PATHS` build setting is set for test targets

Test Plan:

- Generate `fixtures/ios_app_with_tests`
- Verify the generated project's test target contains a valid `LD_RUNPATH_SEARCH_PATHS` build setting
2019-11-13 14:06:30 +00:00
Marek Fořt 8b0c13f011 Switch dependencies from branch to version. (#631)
* Switch dependencies from branch to version.

* Update CHANGELOG.
2019-11-11 11:33:17 +01:00
Pedro Piñera Buendía 8df4e6464b
Rename Core to Support (#621)
* Rename Core to Support

* Fix acceptance tests
2019-11-01 08:35:06 +01:00
Pedro Piñera Buendía 8ea0956e1d
Embed frameworks using a bash script (#610)
* Delete embed logic

* Add methods to read the dsym path & bcsymbolmap paths from a framework

* Place the tests in the right test case

* Implement EmbedScriptGenerator

* Test EmbedScriptGenerator

* Extract methods that interact with the system into metadata provider utilities and fix tests

* Include output paths

* Test FrameworkMetadataProvider

* Test PrecompiledMetadataProvider

* Add more tests

* Create fixture project

* Add acceptance test

* Address comments

* Use Xcode 11.1

* Update Package.resolved

* Update XcodeProj

* Make the tuistenv install test more resilient
2019-10-29 13:34:02 +01:00
Pedro Piñera Buendía 47505e679c
Shared system instance (#519)
* Add System.shared

* Implement TuistTestCase, TusitUnitTestCase, and refactor all the tests to use those classes instead.

Make some progress

Refactor tests to use TuistUnitTestCase

Create TuistTestCase

* Fix some tests

* Update the documentation to indicate that there is more than one integration tests target

* Update the CHANGELOG

* Indicate the product that we build for release

* Remove unnecessary methods
2019-10-10 11:28:51 +02:00
Marek Fořt 48233fc485 Update xcodeproj. 2019-09-11 21:30:09 +02:00
Kassem Wridan 4f69b738ca Update link generator to opt out of creating a file reference when adding local swift packages 2019-09-01 19:40:47 +01:00
Marek Fort 5f479a259c Add .local case for Package. 2019-08-28 22:04:46 +02:00
Pedro Piñera Buendía 4739ea80e0
Generate a dot graph from the project graph (#382)
* Add command to output the graph to the standard output

* Make Graph and nodes conform Encodable

* Print the graph as a json

* Some fixes after rebasing

* Pass file and line arguments

* Keep models and attributes as internal

* Extract the node classes into their own files

* Add DotGraph* elements

* Extract FrameworkNode from GraphNode

* Add tests

* Address comments
2019-06-29 08:48:24 +02:00
Pedro Piñera Buendía 68530c8edb
Upgrade XcodeProj to 7.0.0 (#421)
* Upgrade XcodeProj to 7.0.0

* Update CHANGELOG
2019-06-26 11:41:28 +02:00
Kas 1932448f59
Updating `XcodeProj` dependency version (#412)
- Adding Xcode10 constants to maintain backwards compatibiltiy (Xcode 11 is still in beta!)

Test Plan:

- Verify unit tests pass via `swift test`
- Verify acceptance tests pass via `bundle exec rake features`
2019-06-17 14:02:25 +01:00
Marcin Iwanicki bfd4f97fe0
Update XcodeProj (6029dac06eb48cc29c762965efebddb5d6c2a496 - 2019-05-21) (#364)
### Short description

Update XcodeProj version to point to current master 6029dac06eb48cc29c762965efebddb5d6c2a496 (2019-05-21). 

Includes "Add SWIFT_COMPILATION_MODE and CODE_SIGN_IDENTITY build settings" https://github.com/tuist/xcodeproj/pull/417.
2019-05-22 08:06:29 +01:00
Marcin Iwanicki 36d54f3cd4
Add support for multiple configs to TuistGenerator (#320)
Part of https://github.com/tuist/tuist/issues/160

### Short description

As mentioned in https://github.com/tuist/tuist/issues/160, currently, Tuist only supports debug and release build configurations. This can be seen as a limitation for some projects. We'd like to avoid this limitation and allow users to control the configurations themselves and base them on xcconfig files if needed.

### Solution

Added `Settings` property to `Project` and `Target` generator models. `Settings` contains `base` property for settings that are common for all the configurations. `configurations` property stores dictionary mapping `BuildConfiguration` (i.e. Release, Debug, Beta etc.) to `Configuration`. The structure won't preserve the order of the configurations but can help avoid situation when the same configuration is set twice (which would require additional linting). Maintaining the original order would be particularly difficult in cases when the defined configurations orders are different in project and target settings. To keep the ordering stable, the generator sorts the configurations alphabetically. 
To make the implementation backward compatible, `GeneratorModelLoader` always passes `release` and `debug` configurations with the settings defined in the manifest.
```swift
return TuistGenerator.Settings(base: base, configurations: [.debug: debug, .release: release]
```
2019-04-17 21:23:23 +01:00
Kas 1dd8ace215
Resolve Swift 5 Warnings (#325)
- Updating SwiftPM dependency
  - `asString` has been renamed to `pathString`
  - `Utility` module has been renamed to `SPMUtility`

Test Plan:

- Verify unit tests pass `swift test`
- Verify acceptance tests pass `bundle exec rake features`
2019-04-14 19:02:56 +01:00
Pedro Piñera Buendía a03a4e932b
Swift 5 support (#317)
* Support Swift 5

* Fix test

* Don't check if the versions match when both local and remote versions are greater or equal than 5

* Updating fixtures for Swift 5 support

- Included a build script to allow re-creating the pre-built `Framework2` framework
- Updated build script for pre-built static library to require less manual steps

* Updates for Swift 5

- `swift package tools-version --set-current`

* Relaxed error output checks in acceptance tests

* Adding trace for acceptance test (to aid troubleshooting)

* skipping build during error message acceptance test

- Adding a step to build tuist separately ahead of calling run
- When running tuist via `swift run` we now skip the build

* Disable Swiftformat
2019-04-10 08:18:52 +02:00
Kas 7833205a1e
Manifest loader now returns concrete manifest objects (#244)
- The manifest loader now returns `ProjectDescription` classes
- The model loader now transforms `ProjectDescription` classes >  generator `Models`

Test Plan:

- Verify unit tests pass `swift test`
- Verify acceptance tests pass `bundle exec rake features`
2019-03-05 13:49:42 +00:00
Pedro Piñera Buendía d9cd70e4a2
Bump xcodeproj version to 6.6.0 (#248)
* Bump xcodeproj version to 6.6.0

* update changelog
2019-03-01 21:48:52 -05:00
Kas 441ac4b88b
Decoupling Models from Manifests JSON (#237)
- Introducing a `GeneratorModelLoader` component responsible for obtaining the model objects required by the `TuistGenerator` library
- To support this, the models are being decoupled from the manifest definitions (and the JSON representation)
- The conversion between the manifest and model types takes place within the model loader

Test Plan:

- Ensure unit tests continue to pass `swift test`
- Ensure acceptance tests pass `bundle exec rake features`
- Verify projects within the `fixtures` directory are still correctly generated when performing `tuist generate`
2019-02-22 07:09:29 +00:00
Oliver Atkinson dd5c4152a1 Remove YAML project specification, add Setup.swift and Workspace.swift to the generated workspace file 2019-02-21 17:04:17 +00:00
Kas 710a32c142 Introducing `TuistGenerator` (#224)
- Adding a new library `TuistGenerator` with stubbed implementation

Test Plan:

- Ensure Tuist continues to build `swift build`
- Ensure unit tests pass `swift test`
2019-02-16 08:34:07 +01:00
Pedro Piñera Buendía 0d33599af6
Replace SwiftShell and use SPM.Process (#181)
* Refactor the project to use the SPM Process class

* Fix tests

* Fix printer
2018-12-20 20:43:34 +01:00
Pedro Piñera 5c2dc30e15 Fix issue with interruption signals not being propagated 2018-12-20 17:47:35 +01:00
Pedro Piñera Buendía 25de26f075
Use the patch version of SwiftShell (#180)
* Use the patch version of SwiftShell

* Update CHANGELOG

* Fix repository url

* Regenerate Package.resolved
2018-12-20 15:38:26 +01:00
Pedro Piñera Buendía 3571783ad2
Remplace ReactiveTask with SwiftShell (#179)
* Remplace ReactiveTask with SwiftShell

* Update CHANGELOG

* Remove Result import

* Fix issue with UpCarthage don't running when the Cartfile.resolved is missing

* Update CHANGELOG
2018-12-20 13:36:43 +01:00
Pedro Piñera Buendía 5bf812df44
"tuist up" command (#158)
* Define force argument

* Add documentation

* Update Installer to accept force installs

* Add tests

* Define models

* Add the up attribute to the project model

* Add models to TuistKit

* Include up in the manifest generated by the init command

* Implement HomebrewCommand

* Re-organize commands into multiple files

* Reorganize folders

* Implement up command, print a warning when running generate and the environment is not ready and add some tests

* Test Homebrew command

* Allow passing the working directory to System

* Rename UpCommand to Up

* More renaming

* Define UpCarthage and UpYarn

* Print a warning from the focus command

* Implement UpCarthage

* Define MockUp

* Format

* Don't print a warning if the environment is not met

* Solve conflicts after rebasing

* Lint UpCustom

* Implement UpCustom

* Add Carthage util to update dependencies and get the list of outdated ones

* Test UpCarthage

* Remove integration tests from the package

* Add -p argument to the Up command

* Some polishing
2018-12-20 11:50:43 +01:00
Pedro Piñera c124028bfd Move core back to the project 2018-10-12 08:20:39 +02:00
Pedro Piñera Buendía 8fcbe8bc3f
Generate projects in a DerivedProjects directory (#146)
* Add option to generate the projects and workspaces in the ~/.tuist/DerivedProjects directory

* Remove unnecessary import

* Test ProjectDirectoryHelper

* Update CHANGELOG

* Remove unnecessary line
2018-10-09 10:04:51 +03:00
Pedro Piñera f7c2ca7cf9 Bump core version 2018-10-05 16:50:55 +02:00
Pedro Piñera Buendía 96a17b1594
Move Constants from TuistCore to TuistShared (#143) 2018-10-05 15:59:27 +03:00
Pedro Piñera Buendía 57159867b5
Extract Core into its own repository (#141) 2018-09-28 12:43:25 +02:00
Pedro Piñera Buendía 1d60266ca9
Bump xcodeproj to 6.0.0 (#133)
* Bump xcodeproj to 6.0.0

* Remove warning

* Get tests passing

* Don't import xcodeproj with testable

* Add entry to changelog

* Build with Xcode 10 on CI

* Add .swift-version file

* Fix test
2018-09-19 11:44:31 +02:00
Pedro Piñera Buendía a385f27235
Generate .gitignore when bootstrapping a project (#118)
* Generate .gitignore file and format the code with the latest version of swiftformat

* Update CHANGELOG
2018-09-04 18:39:51 +02:00
Pedro Piñera Buendía 125e52ece0
Support JSON and YAML manifests (#110)
* Add Yams dependency

* Use snake case for enum values

* Add support for JSON and Yaml manifests
2018-08-28 10:52:17 +02:00
Pedro Piñera Buendía dc198b42b8
Add ReactiveTask (#109) 2018-08-26 20:59:52 +02:00
Pedro Piñera Buendía 2d2054cd38
Remove ReactiveTask (#94) 2018-08-20 10:20:16 +02:00
Pedro Piñera Buendía 48cbba359a
Use https links (#91)
* Use https links

* Replace missing link

* Update changelog
2018-08-17 12:50:46 +02:00
Pedro Piñera 13284c081e Update System.swift to use ReactiveTask 2018-08-15 18:00:33 +02:00
Pedro Piñera Buendía 22eb69e98e
Implement command runner (#81)
* wip

* Get the runner working

* Add tests

* Update CHANGELOG

* Compile tuistenv
2018-07-31 21:55:26 +02:00
Pedro Piñera 8ec3c00253 Update SwiftShell version 2018-07-26 16:09:12 -04:00
Pedro Piñera Buendía 01c9078575
Merge tuist-embed into tuist (#80)
* Remove tuist-embed target

* Merge tuist-embed into tuist
2018-07-25 18:23:58 -04:00
Pedro Piñera db4b615d31 Implement updater command and generate tuistenv 2018-07-25 08:38:16 -04:00
Pedro Piñera 88821dd884 Use version of SwiftShell that traps the signals 2018-07-24 15:21:56 -04:00
Pedro Piñera 4d37811c10 Add system 2018-07-23 18:28:03 -04:00
Pedro Piñera c416b70e45 Rename project 2018-07-23 07:59:52 -04:00
Pedro Piñera c6ce6e084f Rename usages of xcode-project-manager to tuist 2018-07-23 07:35:31 -04:00
Pedro Piñera Buendía 8e38281fb4
Add documentation generation and document the release process (#71)
* Move xpmkit constants into xpmcore constants

* Add RELEASE.md document

* Generate documentation

* Remove xpmtools
2018-07-21 19:56:49 -04:00
Pedro Piñera c58776bf3b Update init to support the path argument 2018-07-21 00:30:41 -04:00
Pedro Piñera f5227366f7 Add integration tests target 2018-07-21 00:30:41 -04:00
Pedro Piñera 07819f4f11 Update Init command to support platform and product and generate the Info.plist files automatically 2018-07-21 00:30:41 -04:00
Pedro Piñera a7aabc4248 Refactor validators and rename them to linters 2018-07-20 14:03:54 -04:00