   case Executable
   case Framework
   case Module
+
+  init?(string: String) {
+    switch string.lowercaseString {
+      case "unknown":    self = .Unknown
+      case "executable": self = .Executable
+      case "framework":  self = .Framework
+      case "module":     self = .Module
+      default:           return nil
+    }
+  }
 
   var description: String {
     switch self {

      return ParsingError(message: "Invalid target type; expected string")
    }

    guard let type = TargetType.fromString(typeString) else {
      return ParsingError(message: "Invalid target type '\(typeString)'")
    }


      case .Executable: return "Executable"
      case .Framework:  return "Framework"
      case .Module:     return "Module"
    }
  }
}
