Permalink
Switch branches/tags
Commits on Mar 15, 2016
  1. Replace jeffh -> tryswift

    jeffh committed Mar 12, 2016
  2. French Documentation Added

    SebastienFCT authored and jeffh committed Mar 3, 2016
    - [French] README
    - [French] Create a Library
    - [French] Github.md
    - [French] Cutting a release
  3. Correct the spelling of CocoaPods and GitHub

    ReadmeCritic authored and jeffh committed Mar 3, 2016
    - [podspec] Correct the spelling of CocoaPods
    - [create a library] Correct the spelling of CocoaPods
    - [create a library] Correct the spelling of GitHub
    - [cutting a release] Correct the spelling of CocoaPods
    - [cutting a release] Correct the spelling of GitHub
    - [github checklist] Correct the spelling of GitHub
    - [github checklist] Fix typos
    - [doc] [readme] Correct the spelling of GitHub
  4. Fix filename

    gin0606 authored and jeffh committed Mar 3, 2016
  5. Update 'Create A Library' page...

    jeffh committed Feb 29, 2016
    with a new swiftenv install script.
  6. Add documentation for creating a release

    jeffh committed Feb 29, 2016
    Talks about semantic versioning. Link to this from the README directory.
  7. Add Documentation folder

    jeffh committed Feb 28, 2016
    Includes two checklists in English
  8. Add CONTRIBUTING

    jeffh committed Feb 24, 2016
    Provides the basics for reporting issues & submitting PRs. Github
    recognizes CONTRIBUTING.md and specially links to it.
    
    Ref: https://github.com/blog/1184-contributing-guidelines
  9. Updated README

    jeffh committed Feb 24, 2016
  10. Bump cocoapods version to 0.2.1

    jeffh committed Feb 24, 2016
    We need to update the pod spec version before we cut a new release.
  11. Add PromiseKit as a dependency

    jeffh committed Feb 21, 2016
    Add to Cartfile for carthage users.
    Cloned via submodule for manual integration users.
    Add dependency to podspec for cocoapod users.
    
    Updated code + tests to use PromiseKit (why not?)
  12. Add Nimble as test dependency

    jeffh committed Feb 21, 2016
    Add workspace for test dependencies. It's good practice to hide your
    test dependencies via a workspace. Don't use nimble for Linux tests
    (because snapshot doesn't support test dependencies yet).
    
    A workspace is useful to hide internal dependencies from developers that
    use your project as a submodule. Just tell them to include the project
    file instead of the workspace.
    
    For private dependencies, I'm using Carthage to do dependency
    resolution. Nimble is sourced as a submodule to make it build seemlessly
    with as an Xcode Workspace.
    
    Why not let Carthage build Nimble? Turns out there's an edge case that
    fails:
    
     - Quick & Nimble supports tvOS
     - They also depend on XCTest
     - Carthage builds fat frameworks (Simulator + Devices)
     - Bitcode and non-bitcode frameworks cannot be mixed into a fat binary
    
    This combination of cases causes a build failure. XCTest for simulators
    has bitcode OFF, but XCTest has it ON for devices. This makes it
    impossible to build a complete fat binary of Quick or Nimble in
    Carthage.
    
    There are several ways to get around this:
    
     - If you don't support tvOS, specify the --platform flag to carthage
     - Use cocoapods (if you're an application)
     - Use submodules and add Quick & Nimble as a subproject, Xcode will
       only build binaries for the target platform
    
    Why not prebuild the dependencies as frameworks? Turns out swift doesn't
    ensure that frameworks are safe to use if it's unless the *same machine*
    that builds the framework is also the one that builds the final app that
    uses it.
    
    SPM doesn't seem to build testDependencies, so we're not using Nimble
    for SWIFT_PACKAGE tests.
  13. Update layout for Swift 2/25/2016

    jeffh committed Feb 26, 2016
    Refactor tests to polyfill XCTestCaseProvider. Update test script to
    require swiftenv.
    
    Version: DEVELOPMENT-SNAPSHOT-2016-02-25-a
    
    Swift now has an official 'test' command:
    
    ```
    swift test
    ```
    
    Which can only be run **after** calling `swift build`
    
    But this requires a different structure than we have been laying out
    before. Now the tests go in a similar structure to Sources:
    
        - Sources/
            - Snorlax/
        - Tests
            - LinuxMain.swift
            - Snorlax/
    
    All the previous XCTest limitations still apply. Notice that Main.swift
    has been renamed to LinuxMain.swift (since it only really affected Linux
    usages).
    
    Also fixed the SPM tests not running in OS X.
Commits on Feb 28, 2016
  1. Add watchOS framework target

    jeffh committed Feb 22, 2016
    WatchOS frameworks do not support tests, so we don't have a watchOS test
    target.
  2. Add Linux Swift Support (Swift Package Manager)

    jeffh committed Feb 21, 2016
    Version: DEVELOPMENT-SNAPSHOT-2016-02-08-a
    
    - Add main.swift for Linux XCTest support
    - Linux version does not use PromiseKit or Nimble
    - Improve test script to support SPM tests
    - Move code to Sources directory (SPM assumes this directory structure)
    - Update travis.yml to be a matrix of Linux & OS X
    - Update tests to support XCTestCaseProvider and Xcode 7.2.1
    
    SPM assumes a directory structure similar to:
    
    - Sources/
      - Snorlax       # assumed target via package name
      - SnorlaxTests  # manually specified target
    
    Using swiftenv (https://github.com/kylef/swiftenv) to make it easier to
    switch between different swift versions in development. Set to the
    latest version at the time.
    
    The install script being pulled for travis-ci is a small script that
    installs swiftenv.
Commits on Feb 27, 2016
  1. Add Travis CI integration

    jeffh committed Feb 20, 2016
    Travis reads .travis.yml from the root directory of the repository to
    tell travis how to build and run tests.
    
    We're using the Xcode 7.2 image here. The language indicates to travis
    the OS to use (Mac) and the script indicates what command to run.
    
    Here we're just running the test script we made in the previous commit.
  2. Add script to run tests via CLI

    jeffh committed Feb 20, 2016
    We could use ruby, but it's pretty straight forward to have a test bash
    script. Simply run `./test` to run tests from the command line.
    
    The script runs OS X, iOS, and tvOS tests. Since we only have an
    xcproject, we're trusting xcodebuild to infer the project to use.
  3. Add tvOS target + scheme

    jeffh committed Feb 19, 2016
    Same things as creating an OS X or iOS framework. Shared the scheme.
  4. Make schemes shared

    jeffh committed Feb 19, 2016
    This allows our tests to run on CI (eg - Xcode Bots) by keeping
    configuration how to build tests.
    
    Technically, the userdata was committed for this scheme, but it's good
    practice to make these schemes public to "export" them.
  5. Add OS X Scheme and Target

    jeffh committed Feb 19, 2016
    Clean up Swift.h header
    
    Here we did the same thing as renaming the iOS target: change the
    PRODUCT_NAME to Snorlax. All the custom files the target template added
    could be removed.
    
    Although it's definitely possible to unify the Info.plists between the
    two targets, we've left it duplicated for now.
  6. Rename target from Snorlax -> Snorlax-iOS

    jeffh committed Feb 18, 2016
    Renames the corresponding test bundle too.
    
    This is to prepare the project for more frameworks for other platforms.
    Change the PRODUCT_NAME to Snorlax (instead of inheriting the target
    name) to keep the framework name the same, Snorlax.framework, and to
    rename the module name to Snorlax.
    
    The important piece is to have all the frameworks define the smae module
    name to make it easier for Snorlax users to share code across platforms
    with a unified import statement.
  7. Add rest() to Snorlax library

    jeffh committed Feb 18, 2016
    This is pretty much most of the "library code" that'll remain on this
    project. The code of the library is not that important in comparison to
    the rest of the project's infrastructure.
    
    Also happens to include tests, because that'll change when we integrate
    with SPM (Swift Package Manager).
  8. Add gitignore

    jeffh committed Feb 21, 2016
    Not all gitignore is applied uniformly to allow viewing of intermediate
    steps with schemes.
  9. Add README

    jeffh committed Feb 24, 2016
  10. Add MIT License

    jeffh committed Feb 19, 2016
    Feel free to do whatever you want with this library
Commits on Feb 24, 2016
  1. Initial Commit - Via Xcode

    jeffh committed Feb 18, 2016
    This is the first commit that Xcode created when creating the project.
    Nothing much else here in this commit.