Update Xcode processing to support Xcode project as root directory, clean up usage statements
diff --git a/WhiskSwiftTools/ConsoleIO.swift b/WhiskSwiftTools/ConsoleIO.swift
index 054bc6c..653aed7 100644
--- a/WhiskSwiftTools/ConsoleIO.swift
+++ b/WhiskSwiftTools/ConsoleIO.swift
@@ -43,7 +43,17 @@
         let executableName = (Process.arguments[0] as NSString).lastPathComponent
         
         print ("usage:")
-        print ("\(executableName) build")
+        print ("To install a project:")
+        print ("=====================")
+        print ("\(executableName) install (for current directory)")
+        print ("or")
+        print ("\(executableName) install <project directory>")
+        print ("To uninstall a project:")
+        print ("=======================")
+        print ("\(executableName) uninstall (for current directory)")
+        print ("or")
+        print ("\(executableName) uninstall <project directory>")
+        
         print ("Type \(executableName) -h or --help to show usage information")
     }
     
diff --git a/WhiskSwiftTools/ProjectManager.swift b/WhiskSwiftTools/ProjectManager.swift
index 3f49d0a..f7ef723 100644
--- a/WhiskSwiftTools/ProjectManager.swift
+++ b/WhiskSwiftTools/ProjectManager.swift
@@ -49,7 +49,10 @@
                 do {
                     self.projectReader?.clearAll()
                     
-                    try self.projectReader?.readRootDependencies(clone: true)
+                    if self.projectReader?.detectXcode(path: self.path) == false {
+                        try self.projectReader?.readRootDependencies(clone: true)
+                    }
+                    
                     try self.projectReader?.readProjectDirectory()
                     
                     //self.projectReader?.dumpProjectStructure()
@@ -92,7 +95,9 @@
                 do {
                     self.projectReader?.clearAll()
                     
-                    try self.projectReader?.readRootDependencies(clone: false)
+                    if self.projectReader?.detectXcode(path: self.path) == false {
+                        try self.projectReader?.readRootDependencies(clone: false)
+                    }
                     try self.projectReader?.readProjectDirectory()
                    // self.projectReader?.dumpProjectStructure()
                     
diff --git a/WhiskSwiftTools/ProjectReader.swift b/WhiskSwiftTools/ProjectReader.swift
index 7ef3c77..de3ffe5 100644
--- a/WhiskSwiftTools/ProjectReader.swift
+++ b/WhiskSwiftTools/ProjectReader.swift
@@ -41,37 +41,37 @@
     case Python
 }
 
-struct Package {
+public struct Package {
     let name: NSString
     let bindTo: String?
     let parameters: Array<[String:AnyObject]>?
 }
 
-struct Trigger {
+public struct Trigger {
     let name: NSString
     let feed: NSString?
     let parameters: Array<[String:AnyObject]>?
 }
 
-struct Rule {
+public struct Rule {
     let name: NSString
     let trigger: NSString
     let action: NSString
 }
 
-struct Sequence {
+public struct Sequence {
     let name: NSString
     let actions: Array<String>
 }
 
-struct Action {
+public struct Action {
     let name: NSString
     let path: NSString
     var runtime: Runtime
     var parameters: Array<[String:AnyObject]>?
 }
 
-struct Dependency {
+public struct Dependency {
     let name: NSString
     let url: NSString
     let version: NSString
@@ -331,7 +331,12 @@
             let xcodeProject = WhiskTokenizer(from: dirPath, to:projectPath)
             
             do {
-                try xcodeProject.readXCodeProjectDirectory()
+                let xcodeActions = try xcodeProject.readXCodeProjectDirectory()
+                
+                for xcodeAction in xcodeActions {
+                    actionsDict[xcodeAction.name] = xcodeAction
+                }
+                
             } catch {
                 print("Error reading xcode project \(error)")
             }
diff --git a/WhiskSwiftTools/WhiskInstaller.swift b/WhiskSwiftTools/WhiskInstaller.swift
index c91cc60..57383ba 100644
--- a/WhiskSwiftTools/WhiskInstaller.swift
+++ b/WhiskSwiftTools/WhiskInstaller.swift
@@ -19,10 +19,19 @@
 class WhiskInstaller {
     
     let consoleIO = ConsoleIO()
+    var projectPath: String!
+    
+    init() {
+        projectPath = getCurrentDirectory()
+    }
     
     func staticMode() {
         let argCount = Process.argc
         let argument = Process.arguments[1]
+
+        if argCount > 2 {
+            projectPath = NSString(string: Process.arguments[2]).expandingTildeInPath as String
+        }
         
         var offset = 0
         if argument.hasPrefix("--") {
@@ -63,8 +72,8 @@
     }
     
     func getCurrentDirectory() -> String {
-        //return FileManager.default.currentDirectoryPath
-        return "/Users/pcastro/Desktop/ow-projects"
+        return FileManager.default.currentDirectoryPath
+        //return "/Users/pcastro/Desktop/ow-projects"
     }
     
     func setupProjectManager() throws -> ProjectManager? {
@@ -88,7 +97,7 @@
             
             if let tokens = tokens, namespace = namespace {
                 let credentials = WhiskCredentials(accessKey: tokens[0], accessToken: tokens[1])
-                return ProjectManager(path: getCurrentDirectory(), credentials: credentials, namespace: namespace)
+                return ProjectManager(path: projectPath!, credentials: credentials, namespace: namespace)
             }
         } catch {
             print("Error reading ~/.wskprops")
diff --git a/WhiskSwiftTools/WhiskTokenizer.swift b/WhiskSwiftTools/WhiskTokenizer.swift
index c4a75a1..1dc2d89 100644
--- a/WhiskSwiftTools/WhiskTokenizer.swift
+++ b/WhiskSwiftTools/WhiskTokenizer.swift
@@ -34,6 +34,8 @@
 
 public class WhiskTokenizer {
     
+    let OpenWhiskActionDirectory = "OpenWhiskActions"
+    
     var atPath: String!
     var toPath: String!
     public var actions = [ActionToken]()
@@ -43,11 +45,12 @@
         toPath = to
     }
     
-    public func readXCodeProjectDirectory() throws {
+    public func readXCodeProjectDirectory() throws -> [Action] {
         let dir: FileManager = FileManager.default
         
+        var whiskActionArray = [Action]()
         if let enumerator: FileManager.DirectoryEnumerator = dir.enumerator(atPath: atPath) {
-            
+
             while let item = enumerator.nextObject() as? NSString {
                 
                 var isDir = ObjCBool(false)
@@ -67,8 +70,20 @@
                                     actions.append(action)
                                     
                                     do {
-                                        let fileUrl = URL(fileURLWithPath: toPath+"/\(action.actionName).swift")
+                                        
+                                        let actionDirPath = toPath+"/\(OpenWhiskActionDirectory)"
+                                        
+                                        try FileManager.default.createDirectory(atPath: actionDirPath, withIntermediateDirectories: true, attributes: nil)
+                                        
+                                        let actionPath = actionDirPath+"/\(action.actionName).swift"
+                                        
+                                        let fileUrl = URL(fileURLWithPath: actionPath)
                                         try action.actionCode.write(to: fileUrl, atomically: false, encoding: String.Encoding.utf8)
+                                        
+                                        let whiskAction = Action(name: action.actionName, path: actionPath, runtime: Runtime.Swift, parameters: nil)
+                                        
+                                        whiskActionArray.append(whiskAction)
+                                        
                                     } catch {
                                         print("Error writing actions from Xcode \(error)")
                                     }
@@ -86,6 +101,8 @@
             }
             
         }
+        
+        return whiskActionArray
     }
     
     func getActions(str: String) -> [ActionToken]? {