Swift Modules, a swift module (or package) manager #fuck_xcode #terminal_rocks
Swift Shell
Switch branches/tags
Nothing to show
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Failed to load latest commit information.
src
.gitignore
README.md
build.sh
config.sh
install.sh
main.swift
package.json
run.sh

README.md

Swift Modules

The Swift Modules manager similar to the JavaScript world's npm and bower

Installation

$ curl "https://raw.github.com/jankuca/swm/master/install.sh" | bash

Usage

Dependencies

Module dependencies are declared in a swiftmodule.json file in the JSON format:

{
  "name": "ModuleName",
  "directories": {
    "source": "src"
  },
  "dependencies": {
    "Dependency": "jankuca/dependecy",
    "MyOtherDependency": "git://github.com/jankuca/other-dependency"
  }
}
$ swm install

The dependencies are then importable via the import Swift statement using the names specified in the dependencies map of the swiftmodule.json file.

Using packages without a swiftmodule.json file

If a package does not include the swiftmodule.json file, the including package can specify the source file directory of the dependency in its swiftmodule.json.

{
  "name": "ModuleName",
  "dependencies": {
    "Dependency": "jankuca/dependency @source:src"
  }
}

Building

SWM can also build the actual app (the root module). If a source directory is specified in the swiftmodule.json file, all .swift files inside that subtree are compiled into a binary.

$ swm build

Note that swm install also runs this internally.

Code Signing

Once the app is built, it needs to be code-signed for distribution using a certificate obtained from Apple. SWM makes this dead simple by listing the available certificates and provisioning profiles.

There are two signing modes:

  1. store – should be used for signing for the App Store or other distribution
  2. device – should be used for signing for development and testing purposes; this adds a provisioning profile to the app package.
$ swm sign store
Certificate:
  1) CF826998D43332…499C595FCE980F20  "iPhone Developer: … (…)"
1
Signature for device
  Certificate: CF826998D43332…499C595FCE980F20
  Provisioning Profile: (none)
ok

The command prompts for the certificate number (1 in the case above).

$ swm sign device
Certificate:
  1) CF826998D43332…499C595FCE980F20  "iPhone Developer: … (…)"
1
Provisioning Profile:
  1) 7716db78-0b66-…-9fbf-3a9b653ec84a
1
Signature for device
  Certificate: CF826998D43332…499C595FCE980F20
  Provisioning Profile: 7716db78-0b66-…-9fbf-3a9b653ec84a
ok