Commit Graph

91 Commits

Author SHA1 Message Date
Pedro Piñera 9f6bc745b3 Remove OpenCombine 2020-02-03 08:20:55 +09:00
Pedro Piñera 0e0c62467b Extend URLSessionScheduler to have a Combine API 2020-01-21 21:28:25 +01:00
Marcin Iwanicki 1eafc16443
Make the scheme generation with testable targets stable (#892)
### Short description

We've noticed the scheme generation is not always stable. The order of testable targets in a scheme could change after re-generating the project. 
It's reproducible when multiple testable targets depend on the same target (framework, or app) within a single project.

i.e.

- ProjectA:
  - AppTarget 
  - UnitTestsTarget (dependencies: [AppTarget])
  - UITestsTarget (dependencies: [AppTarget])

### Solution

- Sorted testable targets
- Updated one of the unit tests to reproduce the issues, and avoid regression in the future
- Updated the integration tests to cover multiple testable targets user case
2020-01-21 08:22:33 +00:00
Pedro Piñera 750e76624e Version 1.1.0 2019-12-27 16:57:57 +01:00
Pedro Piñera c01652aae2 Reorganize and fix tests 2019-12-26 11:37:03 +01:00
Pedro Piñera 0f5e61480b Create TuistLoader target 2019-12-26 10:52:05 +01:00
Pedro Piñera 267455de7f Create TuistGalaxy & TuistAutomation 2019-12-19 15:42:10 +01:00
Pedro Piñera cff6671a1d Version 1.0.0 2019-12-17 10:30:59 +01:00
Pedro Piñera 7d85209985 Add tests 2019-12-10 11:33:11 -05:00
Pedro Piñera b80197aa71 Test rxRun 2019-12-10 11:33:10 -05:00
Pedro Piñera 8428793d73 Add an interface to launch processes and subscribe to the standard output and error using observables 2019-12-10 11:33:10 -05:00
Andrea Cipriani 085b2f3bf6 Add Checksum dependency via SPM 2019-12-07 18:18:03 +01:00
Pedro Piñera d2338ee7ab Add tests 2019-12-07 14:27:18 +01:00
Pedro Piñera 6832d32e08 Add RxSwift 2019-12-07 13:51:34 +01:00
Pedro Piñera 22fa2b87c5 Implement edit command 2019-11-26 13:16:39 +01:00
Pedro Piñera Buendía 863cb8a9b1
Add TuistCore framework (#669)
* Make the project build

* Fix tests

* Fix test

* Update documentation

* Remove duplicated dependency
2019-11-17 16:21:48 +01:00
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