Fix all parts of the docker skeleton action which were completely broken.
Check clientApp returns a JSON parsable object and if not, report error and log a message.
Update example to show how params are received and return a proper JSON.
Fix space in path in various build scripts.
Add gradle build for docker skeleton - to enable testing locally.
Replace broken docker action tests with test that verifies the docker skeleton can tolerate an init message and can receive/respond with JSON objects. This test suite is not complete in that the docker skeleton hardcodes an example and the tests are specific to that example so cannot test that failure modes are correct yet.
Add CLI tests to download sdks and verify them.
Move sdk/docker/dockerSkeleton to sdk/docker.
Renamed clientApp to action.
Moved SDK tests.
diff --git a/tools/cli/build.gradle b/tools/cli/build.gradle
index ef52a21..6a229b0 100644
--- a/tools/cli/build.gradle
+++ b/tools/cli/build.gradle
@@ -38,7 +38,7 @@
 task distTar(dependsOn: [removeDistribution, distDocker]) << {
     run("docker rm -f cli", true) // Ignore error as this is a cleanup measure
     run("docker run --name cli whisk/cli")
-    run("docker cp cli:/cli/dist/ ${buildDir}/distributions/")
+    run("docker cp cli:/cli/dist/ \"${buildDir}/distributions/\"")
     run("docker rm -f cli")
 }
 distDocker.finalizedBy(distTar)
diff --git a/tools/cli/build.xml b/tools/cli/build.xml
index 3d6e050..f016ff8 100644
--- a/tools/cli/build.xml
+++ b/tools/cli/build.xml
@@ -12,8 +12,8 @@
         <!-- generate default.props in source directory.
              someday this should be nuked - legacy of old process -->
         <exec executable="/bin/bash" failonerror="true" output="${openwhisk.home}/tools/cli/default.props">
-            <arg line="${openwhisk.home}/tools/cli/generateDefaultProps.sh" />
-            <arg line="${basedir}" />
+            <arg line="'${openwhisk.home}/tools/cli/generateDefaultProps.sh'" />
+            <arg line="'${basedir}'" />
         </exec>
 
         <!-- copy files needed to build image to a scratch space -->
@@ -37,8 +37,8 @@
 
         <!-- generate default.props -->
         <exec executable="/bin/bash" failonerror="true" output="${cli.build.dir}/build/tmp/openwhisk/default.props">
-            <arg line="${openwhisk.home}/tools/cli/generateDefaultProps.sh" />
-            <arg line="${basedir}" />
+            <arg line="'${openwhisk.home}/tools/cli/generateDefaultProps.sh'" />
+            <arg line="'${basedir'}" />
         </exec>
 
         <!-- Python packaging expects .py extensions. -->
@@ -47,7 +47,7 @@
         <move file="${cli.build.dir}/build/tmp/__init__.py" todir="${cli.build.dir}/build/tmp/openwhisk" />
         <!-- build package for distribution -->
         <exec executable="/bin/bash" failonerror="true">
-            <arg line="${openwhisk.home}/tools/docker/dockerWithRetry.sh ${docker.timeout.long}" />
+            <arg line="'${openwhisk.home}/tools/docker/dockerWithRetry.sh' ${docker.timeout.long}" />
             <arg line="build -t whisk/cli '${cli.build.dir}'" />
         </exec>
         <exec executable="docker" failonerror="false" output="/dev/null" error="/dev/null">
diff --git a/tools/cli/wsksdk.py b/tools/cli/wsksdk.py
index 6e2be47..56ff666 100644
--- a/tools/cli/wsksdk.py
+++ b/tools/cli/wsksdk.py
@@ -50,7 +50,7 @@
             print 'Unknown SDK component:', args.component
 
     def swiftDownload(self, args, props):
-        print 'Swift SDK coming soon'
+        print 'Swift SDK coming soon.'
 
     def dockerDownload(self, args, props):
         tarFile = 'blackbox-0.1.0.tar.gz'