You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@openwhisk.apache.org by cs...@apache.org on 2018/01/27 19:55:55 UTC

[incubator-openwhisk-cli] branch master updated (ce9b6be -> 44e3bfc)

This is an automated email from the ASF dual-hosted git repository.

csantanapr pushed a change to branch master
in repository https://gitbox.apache.org/repos/asf/incubator-openwhisk-cli.git.


    from ce9b6be  Add i18n process to build.gradle (#209)
     new c615efb  Go format source code
     new f02d6a7  Fail Travis when Go formatting errors exist
     new 44e3bfc  Fix test breakage...

The 3 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails.  The revisions
listed as "add" were already present in the repository and have only
been added to this reference.


Summary of changes:
 .travis.yml                                        |    3 +
 build.gradle                                       |    4 +
 commands/action.go                                 | 1829 ++++++++++----------
 commands/activation.go                             |  738 ++++----
 commands/api.go                                    | 1671 +++++++++---------
 commands/commands.go                               |  370 ++--
 commands/flags.go                                  |  225 ++-
 commands/namespace.go                              |  180 +-
 commands/package.go                                |  978 +++++------
 commands/property.go                               |  998 +++++------
 commands/qualified_name.go                         |  204 +--
 commands/rule.go                                   |  754 ++++----
 commands/sdk.go                                    |  381 ++--
 commands/shared.go                                 |   31 +-
 commands/trigger.go                                | 1043 ++++++-----
 commands/util.go                                   | 1711 +++++++++---------
 commands/wsk.go                                    |   70 +-
 main.go                                            |  138 +-
 tests/src/integration/command_test.go              |  942 +++++-----
 tests/src/integration/common/utils.go              |  132 +-
 tests/src/integration/common/wsk.go                |   66 +-
 tests/src/integration/integration_test.go          |  994 +++++------
 .../whisk/core/cli/test/WskWebActionsTests.scala   |    5 +-
 wski18n/detection.go                               |   24 +-
 wski18n/i18n.go                                    |  152 +-
 wski18n/i18n_resources.go                          |  510 +++---
 26 files changed, 7089 insertions(+), 7064 deletions(-)

-- 
To stop receiving notification emails like this one, please contact
csantanapr@apache.org.

[incubator-openwhisk-cli] 01/03: Go format source code

Posted by cs...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

csantanapr pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/incubator-openwhisk-cli.git

commit c615efb697af7ef05c9b238005d5c8efe506c323
Author: dubeejw <jw...@us.ibm.com>
AuthorDate: Sat Jan 27 10:16:57 2018 -0500

    Go format source code
---
 commands/action.go         | 1829 ++++++++++++++++++++++----------------------
 commands/activation.go     |  738 +++++++++---------
 commands/api.go            | 1671 ++++++++++++++++++++--------------------
 commands/commands.go       |  370 ++++-----
 commands/flags.go          |  225 +++---
 commands/namespace.go      |  180 ++---
 commands/package.go        |  978 +++++++++++------------
 commands/property.go       |  998 ++++++++++++------------
 commands/qualified_name.go |  204 ++---
 commands/rule.go           |  754 +++++++++---------
 commands/sdk.go            |  381 ++++-----
 commands/shared.go         |   31 +-
 commands/trigger.go        | 1043 +++++++++++++------------
 commands/util.go           | 1711 ++++++++++++++++++++---------------------
 commands/wsk.go            |   70 +-
 main.go                    |  138 ++--
 16 files changed, 5668 insertions(+), 5653 deletions(-)

diff --git a/commands/action.go b/commands/action.go
index df75ffd..4d3be58 100644
--- a/commands/action.go
+++ b/commands/action.go
@@ -18,1077 +18,1078 @@
 package commands
 
 import (
-    "encoding/base64"
-    "errors"
-    "fmt"
-    "path/filepath"
-    "io"
-    "strings"
-    "os"
-
-    "github.com/apache/incubator-openwhisk-client-go/whisk"
-    "github.com/apache/incubator-openwhisk-cli/wski18n"
-
-    "github.com/fatih/color"
-    "github.com/spf13/cobra"
-    "github.com/mattn/go-colorable"
+	"encoding/base64"
+	"errors"
+	"fmt"
+	"io"
+	"os"
+	"path/filepath"
+	"strings"
+
+	"github.com/apache/incubator-openwhisk-cli/wski18n"
+	"github.com/apache/incubator-openwhisk-client-go/whisk"
+
+	"github.com/fatih/color"
+	"github.com/mattn/go-colorable"
+	"github.com/spf13/cobra"
 )
 
 const (
-    MEMORY_LIMIT      = 256
-    TIMEOUT_LIMIT     = 60000
-    LOGSIZE_LIMIT     = 10
-    ACTIVATION_ID     = "activationId"
-    WEB_EXPORT_ANNOT  = "web-export"
-    RAW_HTTP_ANNOT    = "raw-http"
-    FINAL_ANNOT       = "final"
-    NODE_JS_EXT       = ".js"
-    PYTHON_EXT        = ".py"
-    JAVA_EXT          = ".jar"
-    SWIFT_EXT         = ".swift"
-    ZIP_EXT           = ".zip"
-    PHP_EXT           = ".php"
-    NODE_JS           = "nodejs"
-    PYTHON            = "python"
-    JAVA              = "java"
-    SWIFT             = "swift"
-    PHP               = "php"
-    DEFAULT           = "default"
-    BLACKBOX          = "blackbox"
-    SEQUENCE          = "sequence"
+	MEMORY_LIMIT     = 256
+	TIMEOUT_LIMIT    = 60000
+	LOGSIZE_LIMIT    = 10
+	ACTIVATION_ID    = "activationId"
+	WEB_EXPORT_ANNOT = "web-export"
+	RAW_HTTP_ANNOT   = "raw-http"
+	FINAL_ANNOT      = "final"
+	NODE_JS_EXT      = ".js"
+	PYTHON_EXT       = ".py"
+	JAVA_EXT         = ".jar"
+	SWIFT_EXT        = ".swift"
+	ZIP_EXT          = ".zip"
+	PHP_EXT          = ".php"
+	NODE_JS          = "nodejs"
+	PYTHON           = "python"
+	JAVA             = "java"
+	SWIFT            = "swift"
+	PHP              = "php"
+	DEFAULT          = "default"
+	BLACKBOX         = "blackbox"
+	SEQUENCE         = "sequence"
 )
 
 var actionCmd = &cobra.Command{
-    Use:   "action",
-    Short: wski18n.T("work with actions"),
+	Use:   "action",
+	Short: wski18n.T("work with actions"),
 }
 
 var actionCreateCmd = &cobra.Command{
-    Use:           "create ACTION_NAME ACTION",
-    Short:         wski18n.T("create a new action"),
-    SilenceUsage:  true,
-    SilenceErrors: true,
-    PreRunE:       SetupClientConfig,
-    RunE: func(cmd *cobra.Command, args []string) error {
-        var action *whisk.Action
-        var err error
-
-        if whiskErr := CheckArgs(
-            args,
-            1,
-            2,
-            "Action create",
-            wski18n.T("An action name and code artifact are required.")); whiskErr != nil {
-                return whiskErr
-        }
-
-        if action, err = parseAction(cmd, args, false); err != nil {
-            return actionParseError(cmd, args, err)
-        }
-
-        if _, _, err = Client.Actions.Insert(action, false); err != nil {
-            return actionInsertError(action, err)
-        }
-
-        printActionCreated(action.Name)
-
-        return nil
-    },
+	Use:           "create ACTION_NAME ACTION",
+	Short:         wski18n.T("create a new action"),
+	SilenceUsage:  true,
+	SilenceErrors: true,
+	PreRunE:       SetupClientConfig,
+	RunE: func(cmd *cobra.Command, args []string) error {
+		var action *whisk.Action
+		var err error
+
+		if whiskErr := CheckArgs(
+			args,
+			1,
+			2,
+			"Action create",
+			wski18n.T("An action name and code artifact are required.")); whiskErr != nil {
+			return whiskErr
+		}
+
+		if action, err = parseAction(cmd, args, false); err != nil {
+			return actionParseError(cmd, args, err)
+		}
+
+		if _, _, err = Client.Actions.Insert(action, false); err != nil {
+			return actionInsertError(action, err)
+		}
+
+		printActionCreated(action.Name)
+
+		return nil
+	},
 }
 
 var actionUpdateCmd = &cobra.Command{
-    Use:           "update ACTION_NAME [ACTION]",
-    Short:         wski18n.T("update an existing action, or create an action if it does not exist"),
-    SilenceUsage:  true,
-    SilenceErrors: true,
-    PreRunE:       SetupClientConfig,
-    RunE: func(cmd *cobra.Command, args []string) error {
-        var action *whisk.Action
-        var err error
-
-        if whiskErr := CheckArgs(
-            args,
-            1,
-            2,
-            "Action update",
-            wski18n.T("An action name is required. A code artifact is optional.")); whiskErr != nil {
-                return whiskErr
-        }
-
-        if action, err = parseAction(cmd, args, true); err != nil {
-            return actionParseError(cmd, args, err)
-        }
-
-        if _, _, err = Client.Actions.Insert(action, true); err != nil {
-            return actionInsertError(action, err)
-        }
-
-        printActionUpdated(action.Name)
-
-        return nil
-    },
+	Use:           "update ACTION_NAME [ACTION]",
+	Short:         wski18n.T("update an existing action, or create an action if it does not exist"),
+	SilenceUsage:  true,
+	SilenceErrors: true,
+	PreRunE:       SetupClientConfig,
+	RunE: func(cmd *cobra.Command, args []string) error {
+		var action *whisk.Action
+		var err error
+
+		if whiskErr := CheckArgs(
+			args,
+			1,
+			2,
+			"Action update",
+			wski18n.T("An action name is required. A code artifact is optional.")); whiskErr != nil {
+			return whiskErr
+		}
+
+		if action, err = parseAction(cmd, args, true); err != nil {
+			return actionParseError(cmd, args, err)
+		}
+
+		if _, _, err = Client.Actions.Insert(action, true); err != nil {
+			return actionInsertError(action, err)
+		}
+
+		printActionUpdated(action.Name)
+
+		return nil
+	},
 }
 
 var actionInvokeCmd = &cobra.Command{
-    Use:           "invoke ACTION_NAME",
-    Short:         wski18n.T("invoke action"),
-    SilenceUsage:  true,
-    SilenceErrors: true,
-    PreRunE:       SetupClientConfig,
-    RunE: func(cmd *cobra.Command, args []string) error {
-        var err error
-        var parameters interface{}
-        var qualifiedName = new(QualifiedName)
-        var paramArgs []string
-
-        if whiskErr := CheckArgs(
-            args,
-            1,
-            1,
-            "Action invoke",
-            wski18n.T("An action name is required.")); whiskErr != nil {
-                return whiskErr
-        }
-
-        if qualifiedName, err = NewQualifiedName(args[0]); err != nil {
-            return NewQualifiedNameError(args[0], err)
-        }
-
-        Client.Namespace = qualifiedName.GetNamespace()
-        paramArgs = Flags.common.param
-
-        if len(paramArgs) > 0 {
-            if parameters, err = getJSONFromStrings(paramArgs, false); err != nil {
-                return getJSONFromStringsParamError(paramArgs, false, err)
-            }
-        }
-        if Flags.action.result {
-            Flags.common.blocking = true}
-
-        res, _, err := Client.Actions.Invoke(
-            qualifiedName.GetEntityName(),
-            parameters,
-            Flags.common.blocking,
-            Flags.action.result)
-
-        return handleInvocationResponse(*qualifiedName, parameters, res, err)
-    },
+	Use:           "invoke ACTION_NAME",
+	Short:         wski18n.T("invoke action"),
+	SilenceUsage:  true,
+	SilenceErrors: true,
+	PreRunE:       SetupClientConfig,
+	RunE: func(cmd *cobra.Command, args []string) error {
+		var err error
+		var parameters interface{}
+		var qualifiedName = new(QualifiedName)
+		var paramArgs []string
+
+		if whiskErr := CheckArgs(
+			args,
+			1,
+			1,
+			"Action invoke",
+			wski18n.T("An action name is required.")); whiskErr != nil {
+			return whiskErr
+		}
+
+		if qualifiedName, err = NewQualifiedName(args[0]); err != nil {
+			return NewQualifiedNameError(args[0], err)
+		}
+
+		Client.Namespace = qualifiedName.GetNamespace()
+		paramArgs = Flags.common.param
+
+		if len(paramArgs) > 0 {
+			if parameters, err = getJSONFromStrings(paramArgs, false); err != nil {
+				return getJSONFromStringsParamError(paramArgs, false, err)
+			}
+		}
+		if Flags.action.result {
+			Flags.common.blocking = true
+		}
+
+		res, _, err := Client.Actions.Invoke(
+			qualifiedName.GetEntityName(),
+			parameters,
+			Flags.common.blocking,
+			Flags.action.result)
+
+		return handleInvocationResponse(*qualifiedName, parameters, res, err)
+	},
 }
 
 func handleInvocationResponse(
-    qualifiedName QualifiedName,
-    parameters interface{},
-    result map[string]interface{},
-    err error) (error) {
-        if err == nil {
-            printInvocationMsg(
-                qualifiedName.GetNamespace(),
-                qualifiedName.GetEntityName(),
-                getValueFromJSONResponse(ACTIVATION_ID, result),
-                result,
-                color.Output)
-        } else {
-            if !Flags.common.blocking {
-                return handleInvocationError(err, qualifiedName.GetEntityName(), parameters)
-            } else {
-                if isBlockingTimeout(err) {
-                    printBlockingTimeoutMsg(
-                        qualifiedName.GetNamespace(),
-                        qualifiedName.GetEntityName(),
-                        getValueFromJSONResponse(ACTIVATION_ID, result))
-                } else if isApplicationError(err) {
-                    printInvocationMsg(
-                        qualifiedName.GetNamespace(),
-                        qualifiedName.GetEntityName(),
-                        getValueFromJSONResponse(ACTIVATION_ID, result),
-                        result,
-                        colorable.NewColorableStderr())
-                } else {
-                    return handleInvocationError(err, qualifiedName.GetEntityName(), parameters)
-                }
-            }
-        }
-
-        return err
+	qualifiedName QualifiedName,
+	parameters interface{},
+	result map[string]interface{},
+	err error) error {
+	if err == nil {
+		printInvocationMsg(
+			qualifiedName.GetNamespace(),
+			qualifiedName.GetEntityName(),
+			getValueFromJSONResponse(ACTIVATION_ID, result),
+			result,
+			color.Output)
+	} else {
+		if !Flags.common.blocking {
+			return handleInvocationError(err, qualifiedName.GetEntityName(), parameters)
+		} else {
+			if isBlockingTimeout(err) {
+				printBlockingTimeoutMsg(
+					qualifiedName.GetNamespace(),
+					qualifiedName.GetEntityName(),
+					getValueFromJSONResponse(ACTIVATION_ID, result))
+			} else if isApplicationError(err) {
+				printInvocationMsg(
+					qualifiedName.GetNamespace(),
+					qualifiedName.GetEntityName(),
+					getValueFromJSONResponse(ACTIVATION_ID, result),
+					result,
+					colorable.NewColorableStderr())
+			} else {
+				return handleInvocationError(err, qualifiedName.GetEntityName(), parameters)
+			}
+		}
+	}
+
+	return err
 }
 
 var actionGetCmd = &cobra.Command{
-    Use:           "get ACTION_NAME [FIELD_FILTER | --summary | --url]",
-    Short:         wski18n.T("get action"),
-    SilenceUsage:  true,
-    SilenceErrors: true,
-    PreRunE:       SetupClientConfig,
-    RunE: func(cmd *cobra.Command, args []string) error {
-        var err error
-        var field string
-        var action *whisk.Action
-        var qualifiedName = new(QualifiedName)
-
-        if whiskErr := CheckArgs(args, 1, 2, "Action get", wski18n.T("An action name is required.")); whiskErr != nil {
-            return whiskErr
-        }
-
-        if !Flags.action.url && !Flags.common.summary && len(args) > 1 {
-            field = args[1]
-
-            if !fieldExists(&whisk.Action{}, field) {
-                return invalidFieldFilterError(field)
-            }
-        }
-
-        if qualifiedName, err = NewQualifiedName(args[0]); err != nil {
-            return NewQualifiedNameError(args[0], err)
-        }
-
-        Client.Namespace = qualifiedName.GetNamespace()
-
-        if action, _, err = Client.Actions.Get(qualifiedName.GetEntityName()); err != nil {
-            return actionGetError(qualifiedName.GetEntityName(), err)
-        }
-
-        if Flags.action.url {
-            actionURL, err := action.ActionURL(Properties.APIHost,
-                DefaultOpenWhiskApiPath,
-                Properties.APIVersion,
-                qualifiedName.GetPackageName())
-            if err != nil {
-                errStr := wski18n.T("Invalid host address '{{.host}}': {{.err}}",
-                        map[string]interface{}{"host": Properties.APIHost, "err": err})
-                werr := whisk.MakeWskError(errors.New(errStr), whisk.EXIT_CODE_ERR_GENERAL, whisk.DISPLAY_MSG, whisk.NO_DISPLAY_USAGE)
-                return werr
-            }
-            printActionGetWithURL(qualifiedName.GetEntity(), actionURL)
-        } else if Flags.common.summary {
-            printSummary(action)
-        } else if cmd.LocalFlags().Changed(SAVE_AS_FLAG) || cmd.LocalFlags().Changed(SAVE_FLAG) {
-            return saveCode(*action, Flags.action.saveAs)
-        } else {
-            if len(field) > 0 {
-                printActionGetWithField(qualifiedName.GetEntityName(), field, action)
-            } else {
-                printActionGet(qualifiedName.GetEntityName(), action)
-            }
-        }
-
-        return nil
-    },
+	Use:           "get ACTION_NAME [FIELD_FILTER | --summary | --url]",
+	Short:         wski18n.T("get action"),
+	SilenceUsage:  true,
+	SilenceErrors: true,
+	PreRunE:       SetupClientConfig,
+	RunE: func(cmd *cobra.Command, args []string) error {
+		var err error
+		var field string
+		var action *whisk.Action
+		var qualifiedName = new(QualifiedName)
+
+		if whiskErr := CheckArgs(args, 1, 2, "Action get", wski18n.T("An action name is required.")); whiskErr != nil {
+			return whiskErr
+		}
+
+		if !Flags.action.url && !Flags.common.summary && len(args) > 1 {
+			field = args[1]
+
+			if !fieldExists(&whisk.Action{}, field) {
+				return invalidFieldFilterError(field)
+			}
+		}
+
+		if qualifiedName, err = NewQualifiedName(args[0]); err != nil {
+			return NewQualifiedNameError(args[0], err)
+		}
+
+		Client.Namespace = qualifiedName.GetNamespace()
+
+		if action, _, err = Client.Actions.Get(qualifiedName.GetEntityName()); err != nil {
+			return actionGetError(qualifiedName.GetEntityName(), err)
+		}
+
+		if Flags.action.url {
+			actionURL, err := action.ActionURL(Properties.APIHost,
+				DefaultOpenWhiskApiPath,
+				Properties.APIVersion,
+				qualifiedName.GetPackageName())
+			if err != nil {
+				errStr := wski18n.T("Invalid host address '{{.host}}': {{.err}}",
+					map[string]interface{}{"host": Properties.APIHost, "err": err})
+				werr := whisk.MakeWskError(errors.New(errStr), whisk.EXIT_CODE_ERR_GENERAL, whisk.DISPLAY_MSG, whisk.NO_DISPLAY_USAGE)
+				return werr
+			}
+			printActionGetWithURL(qualifiedName.GetEntity(), actionURL)
+		} else if Flags.common.summary {
+			printSummary(action)
+		} else if cmd.LocalFlags().Changed(SAVE_AS_FLAG) || cmd.LocalFlags().Changed(SAVE_FLAG) {
+			return saveCode(*action, Flags.action.saveAs)
+		} else {
+			if len(field) > 0 {
+				printActionGetWithField(qualifiedName.GetEntityName(), field, action)
+			} else {
+				printActionGet(qualifiedName.GetEntityName(), action)
+			}
+		}
+
+		return nil
+	},
 }
 
 var actionDeleteCmd = &cobra.Command{
-    Use:           "delete ACTION_NAME",
-    Short:         wski18n.T("delete action"),
-    SilenceUsage:  true,
-    SilenceErrors: true,
-    PreRunE:       SetupClientConfig,
-    RunE: func(cmd *cobra.Command, args []string) error {
-        var qualifiedName = new(QualifiedName)
-        var err error
-
-        if whiskErr := CheckArgs(
-            args,
-            1,
-            1,
-            "Action delete",
-            wski18n.T("An action name is required.")); whiskErr != nil {
-                return whiskErr
-        }
-
-        if qualifiedName, err = NewQualifiedName(args[0]); err != nil {
-            return NewQualifiedNameError(args[0], err)
-        }
-
-        Client.Namespace = qualifiedName.GetNamespace()
-
-        if _, err = Client.Actions.Delete(qualifiedName.GetEntityName()); err != nil {
-            return actionDeleteError(qualifiedName.GetEntityName(), err)
-        }
-
-        printActionDeleted(qualifiedName.GetEntityName())
-
-        return nil
-    },
+	Use:           "delete ACTION_NAME",
+	Short:         wski18n.T("delete action"),
+	SilenceUsage:  true,
+	SilenceErrors: true,
+	PreRunE:       SetupClientConfig,
+	RunE: func(cmd *cobra.Command, args []string) error {
+		var qualifiedName = new(QualifiedName)
+		var err error
+
+		if whiskErr := CheckArgs(
+			args,
+			1,
+			1,
+			"Action delete",
+			wski18n.T("An action name is required.")); whiskErr != nil {
+			return whiskErr
+		}
+
+		if qualifiedName, err = NewQualifiedName(args[0]); err != nil {
+			return NewQualifiedNameError(args[0], err)
+		}
+
+		Client.Namespace = qualifiedName.GetNamespace()
+
+		if _, err = Client.Actions.Delete(qualifiedName.GetEntityName()); err != nil {
+			return actionDeleteError(qualifiedName.GetEntityName(), err)
+		}
+
+		printActionDeleted(qualifiedName.GetEntityName())
+
+		return nil
+	},
 }
 
 var actionListCmd = &cobra.Command{
-    Use:           "list [ NAMESPACE | PACKAGE_NAME ]",
-    Short:         wski18n.T("list all actions in a namespace or actions contained in a package"),
-    SilenceUsage:  true,
-    SilenceErrors: true,
-    PreRunE:       SetupClientConfig,
-    RunE: func(cmd *cobra.Command, args []string) error {
-        var qualifiedName = new(QualifiedName)
-        var actions []whisk.Action
-        var err error
-
-        if whiskErr := CheckArgs(
-            args,
-            0,
-            1,
-            "Action list",
-            wski18n.T("An optional namespace is the only valid argument.")); whiskErr != nil {
-            return whiskErr
-        }
-
-        if len(args) == 1 {
-            if qualifiedName, err = NewQualifiedName(args[0]); err != nil {
-                return NewQualifiedNameError(args[0], err)
-            }
-
-            Client.Namespace = qualifiedName.GetNamespace()
-        }
-
-        options := &whisk.ActionListOptions{
-            Skip:  Flags.common.skip,
-            Limit: Flags.common.limit,
-        }
-
-        if actions, _, err = Client.Actions.List(qualifiedName.GetEntityName(), options); err != nil {
-            return actionListError(qualifiedName.GetEntityName(), options, err)
-        }
-
-        sortByName := Flags.common.nameSort
-        printList(actions, sortByName)
-
-        return nil
-    },
+	Use:           "list [ NAMESPACE | PACKAGE_NAME ]",
+	Short:         wski18n.T("list all actions in a namespace or actions contained in a package"),
+	SilenceUsage:  true,
+	SilenceErrors: true,
+	PreRunE:       SetupClientConfig,
+	RunE: func(cmd *cobra.Command, args []string) error {
+		var qualifiedName = new(QualifiedName)
+		var actions []whisk.Action
+		var err error
+
+		if whiskErr := CheckArgs(
+			args,
+			0,
+			1,
+			"Action list",
+			wski18n.T("An optional namespace is the only valid argument.")); whiskErr != nil {
+			return whiskErr
+		}
+
+		if len(args) == 1 {
+			if qualifiedName, err = NewQualifiedName(args[0]); err != nil {
+				return NewQualifiedNameError(args[0], err)
+			}
+
+			Client.Namespace = qualifiedName.GetNamespace()
+		}
+
+		options := &whisk.ActionListOptions{
+			Skip:  Flags.common.skip,
+			Limit: Flags.common.limit,
+		}
+
+		if actions, _, err = Client.Actions.List(qualifiedName.GetEntityName(), options); err != nil {
+			return actionListError(qualifiedName.GetEntityName(), options, err)
+		}
+
+		sortByName := Flags.common.nameSort
+		printList(actions, sortByName)
+
+		return nil
+	},
 }
 
 func parseAction(cmd *cobra.Command, args []string, update bool) (*whisk.Action, error) {
-    var err error
-    var existingAction *whisk.Action
-    var paramArgs []string
-    var annotArgs []string
-    var parameters interface{}
-    var annotations interface{}
-
-    var qualifiedName = new(QualifiedName)
-
-    if qualifiedName, err = NewQualifiedName(args[0]); err != nil {
-        return nil, NewQualifiedNameError(args[0], err)
-    }
-
-    Client.Namespace = qualifiedName.GetNamespace()
-    action := new(whisk.Action)
-    action.Name = qualifiedName.GetEntityName()
-    action.Namespace = qualifiedName.GetNamespace()
-    action.Limits = getLimits(
-        cmd.LocalFlags().Changed(MEMORY_FLAG),
-        cmd.LocalFlags().Changed(LOG_SIZE_FLAG),
-        cmd.LocalFlags().Changed(TIMEOUT_FLAG),
-        Flags.action.memory,
-        Flags.action.logsize,
-        Flags.action.timeout)
-
-    paramArgs = Flags.common.param
-    annotArgs = Flags.common.annotation
-
-    if len(paramArgs) > 0 {
-        if parameters, err = getJSONFromStrings(paramArgs, true); err != nil {
-            return nil, getJSONFromStringsParamError(paramArgs, true, err)
-        }
-
-        action.Parameters = parameters.(whisk.KeyValueArr)
-    }
-
-    if len(annotArgs) > 0 {
-        if annotations, err = getJSONFromStrings(annotArgs, true); err != nil {
-            return nil, getJSONFromStringsAnnotError(annotArgs, true, err)
-        }
-
-        action.Annotations = annotations.(whisk.KeyValueArr)
-    }
-
-    if len(Flags.action.kind) > 0 && len(Flags.action.docker) > 0 {
-        errStr := wski18n.T("Cannot specify both --kind and --docker at the same time.")
-        return nil, whisk.MakeWskError(errors.New(errStr), whisk.NOT_ALLOWED, whisk.DISPLAY_MSG, whisk.NO_DISPLAY_USAGE)
-    }
-
-    if Flags.action.copy {
-        var copiedQualifiedName = new(QualifiedName)
-
-        if copiedQualifiedName, err = NewQualifiedName(args[1]); err != nil {
-            return nil, NewQualifiedNameError(args[1], err)
-        }
-
-        Client.Namespace = copiedQualifiedName.GetNamespace()
-
-        if existingAction, _, err = Client.Actions.Get(copiedQualifiedName.GetEntityName()); err != nil {
-            return nil, actionGetError(copiedQualifiedName.GetEntityName(), err)
-        }
-
-        Client.Namespace = qualifiedName.GetNamespace()
-        action.Exec = existingAction.Exec
-        action.Parameters = append(action.Parameters, existingAction.Parameters...)
-        action.Annotations = append(action.Annotations, existingAction.Annotations...)
-    } else if Flags.action.sequence {
-        if len(args) == 2 {
-            action.Exec = new(whisk.Exec)
-            action.Exec.Kind = SEQUENCE
-            action.Exec.Components = csvToQualifiedActions(args[1])
-        } else {
-            return nil, noArtifactError()
-        }
-    } else if len(args) > 1 || len(Flags.action.docker) > 0 {
-        action.Exec, err = getExec(args, Flags.action)
-        if err != nil {
-            return nil, err
-        }
-    } else if !update {
-        return nil, noArtifactError()
-    }
-
-    if cmd.LocalFlags().Changed(WEB_FLAG) {
-        preserveAnnotations := action.Annotations == nil
-        action.Annotations, err = webAction(Flags.action.web, action.Annotations, qualifiedName.GetEntityName(), preserveAnnotations)
-    }
-
-    whisk.Debug(whisk.DbgInfo, "Parsed action struct: %#v\n", action)
-
-    return action, err
+	var err error
+	var existingAction *whisk.Action
+	var paramArgs []string
+	var annotArgs []string
+	var parameters interface{}
+	var annotations interface{}
+
+	var qualifiedName = new(QualifiedName)
+
+	if qualifiedName, err = NewQualifiedName(args[0]); err != nil {
+		return nil, NewQualifiedNameError(args[0], err)
+	}
+
+	Client.Namespace = qualifiedName.GetNamespace()
+	action := new(whisk.Action)
+	action.Name = qualifiedName.GetEntityName()
+	action.Namespace = qualifiedName.GetNamespace()
+	action.Limits = getLimits(
+		cmd.LocalFlags().Changed(MEMORY_FLAG),
+		cmd.LocalFlags().Changed(LOG_SIZE_FLAG),
+		cmd.LocalFlags().Changed(TIMEOUT_FLAG),
+		Flags.action.memory,
+		Flags.action.logsize,
+		Flags.action.timeout)
+
+	paramArgs = Flags.common.param
+	annotArgs = Flags.common.annotation
+
+	if len(paramArgs) > 0 {
+		if parameters, err = getJSONFromStrings(paramArgs, true); err != nil {
+			return nil, getJSONFromStringsParamError(paramArgs, true, err)
+		}
+
+		action.Parameters = parameters.(whisk.KeyValueArr)
+	}
+
+	if len(annotArgs) > 0 {
+		if annotations, err = getJSONFromStrings(annotArgs, true); err != nil {
+			return nil, getJSONFromStringsAnnotError(annotArgs, true, err)
+		}
+
+		action.Annotations = annotations.(whisk.KeyValueArr)
+	}
+
+	if len(Flags.action.kind) > 0 && len(Flags.action.docker) > 0 {
+		errStr := wski18n.T("Cannot specify both --kind and --docker at the same time.")
+		return nil, whisk.MakeWskError(errors.New(errStr), whisk.NOT_ALLOWED, whisk.DISPLAY_MSG, whisk.NO_DISPLAY_USAGE)
+	}
+
+	if Flags.action.copy {
+		var copiedQualifiedName = new(QualifiedName)
+
+		if copiedQualifiedName, err = NewQualifiedName(args[1]); err != nil {
+			return nil, NewQualifiedNameError(args[1], err)
+		}
+
+		Client.Namespace = copiedQualifiedName.GetNamespace()
+
+		if existingAction, _, err = Client.Actions.Get(copiedQualifiedName.GetEntityName()); err != nil {
+			return nil, actionGetError(copiedQualifiedName.GetEntityName(), err)
+		}
+
+		Client.Namespace = qualifiedName.GetNamespace()
+		action.Exec = existingAction.Exec
+		action.Parameters = append(action.Parameters, existingAction.Parameters...)
+		action.Annotations = append(action.Annotations, existingAction.Annotations...)
+	} else if Flags.action.sequence {
+		if len(args) == 2 {
+			action.Exec = new(whisk.Exec)
+			action.Exec.Kind = SEQUENCE
+			action.Exec.Components = csvToQualifiedActions(args[1])
+		} else {
+			return nil, noArtifactError()
+		}
+	} else if len(args) > 1 || len(Flags.action.docker) > 0 {
+		action.Exec, err = getExec(args, Flags.action)
+		if err != nil {
+			return nil, err
+		}
+	} else if !update {
+		return nil, noArtifactError()
+	}
+
+	if cmd.LocalFlags().Changed(WEB_FLAG) {
+		preserveAnnotations := action.Annotations == nil
+		action.Annotations, err = webAction(Flags.action.web, action.Annotations, qualifiedName.GetEntityName(), preserveAnnotations)
+	}
+
+	whisk.Debug(whisk.DbgInfo, "Parsed action struct: %#v\n", action)
+
+	return action, err
 }
 
 func getExec(args []string, params ActionFlags) (*whisk.Exec, error) {
-    var err error
-    var code string
-    var exec *whisk.Exec
-
-    exec = new(whisk.Exec)
-    kind := params.kind
-    isNative := params.native
-    docker := params.docker
-    mainEntry := params.main
-    ext := ""
-
-    if len(args) == 2 {
-        artifact := args[1]
-        ext = filepath.Ext(artifact)
-        code, err = ReadFile(artifact)
-
-        if err != nil {
-            whisk.Debug(whisk.DbgError, "ReadFile(%s) error: %s\n", artifact, err)
-            return nil, err
-        }
-
-        if ext == ZIP_EXT || ext == JAVA_EXT {
-            code = base64.StdEncoding.EncodeToString([]byte(code))
-        }
-
-        exec.Code = &code
-    } else if len(args) == 1 && len(docker) == 0 {
-        return nil, noArtifactError()
-    } else if len(args) > 1 {
-        return nil, noArtifactError()
-    }
-
-    if len(kind) > 0 {
-        exec.Kind = kind
-    } else if len(docker) > 0 || isNative {
-        exec.Kind = BLACKBOX
-        if isNative {
-            exec.Image = "openwhisk/dockerskeleton"
-        } else {
-            exec.Image = docker
-        }
-    } else if ext == SWIFT_EXT {
-        exec.Kind = fmt.Sprintf("%s:%s", SWIFT, DEFAULT)
-    } else if ext == NODE_JS_EXT {
-        exec.Kind = fmt.Sprintf("%s:%s", NODE_JS, DEFAULT)
-    } else if ext == PYTHON_EXT {
-        exec.Kind = fmt.Sprintf("%s:%s", PYTHON, DEFAULT)
-    } else if ext == JAVA_EXT {
-        exec.Kind = fmt.Sprintf("%s:%s", JAVA, DEFAULT)
-    } else if ext == PHP_EXT {
-        exec.Kind = fmt.Sprintf("%s:%s", PHP, DEFAULT)
-    } else {
-        if ext == ZIP_EXT {
-            return nil, zipKindError()
-        } else {
-            return nil, extensionError(ext)
-        }
-    }
-
-    // Error if entry point is not specified for Java
-    if len(mainEntry) != 0 {
-        exec.Main = mainEntry
-    } else {
-        if exec.Kind == "java" {
-            return nil, javaEntryError()
-        }
-    }
-
-    return exec, nil
+	var err error
+	var code string
+	var exec *whisk.Exec
+
+	exec = new(whisk.Exec)
+	kind := params.kind
+	isNative := params.native
+	docker := params.docker
+	mainEntry := params.main
+	ext := ""
+
+	if len(args) == 2 {
+		artifact := args[1]
+		ext = filepath.Ext(artifact)
+		code, err = ReadFile(artifact)
+
+		if err != nil {
+			whisk.Debug(whisk.DbgError, "ReadFile(%s) error: %s\n", artifact, err)
+			return nil, err
+		}
+
+		if ext == ZIP_EXT || ext == JAVA_EXT {
+			code = base64.StdEncoding.EncodeToString([]byte(code))
+		}
+
+		exec.Code = &code
+	} else if len(args) == 1 && len(docker) == 0 {
+		return nil, noArtifactError()
+	} else if len(args) > 1 {
+		return nil, noArtifactError()
+	}
+
+	if len(kind) > 0 {
+		exec.Kind = kind
+	} else if len(docker) > 0 || isNative {
+		exec.Kind = BLACKBOX
+		if isNative {
+			exec.Image = "openwhisk/dockerskeleton"
+		} else {
+			exec.Image = docker
+		}
+	} else if ext == SWIFT_EXT {
+		exec.Kind = fmt.Sprintf("%s:%s", SWIFT, DEFAULT)
+	} else if ext == NODE_JS_EXT {
+		exec.Kind = fmt.Sprintf("%s:%s", NODE_JS, DEFAULT)
+	} else if ext == PYTHON_EXT {
+		exec.Kind = fmt.Sprintf("%s:%s", PYTHON, DEFAULT)
+	} else if ext == JAVA_EXT {
+		exec.Kind = fmt.Sprintf("%s:%s", JAVA, DEFAULT)
+	} else if ext == PHP_EXT {
+		exec.Kind = fmt.Sprintf("%s:%s", PHP, DEFAULT)
+	} else {
+		if ext == ZIP_EXT {
+			return nil, zipKindError()
+		} else {
+			return nil, extensionError(ext)
+		}
+	}
+
+	// Error if entry point is not specified for Java
+	if len(mainEntry) != 0 {
+		exec.Main = mainEntry
+	} else {
+		if exec.Kind == "java" {
+			return nil, javaEntryError()
+		}
+	}
+
+	return exec, nil
 }
 
 func getBinaryKindExtension(runtime string) (extension string) {
-    switch strings.ToLower(runtime) {
-    case JAVA:
-        extension = JAVA_EXT
-    default:
-        extension = ZIP_EXT
-    }
-
-    return extension
+	switch strings.ToLower(runtime) {
+	case JAVA:
+		extension = JAVA_EXT
+	default:
+		extension = ZIP_EXT
+	}
+
+	return extension
 }
 
 func getKindExtension(runtime string) (extension string) {
-    switch strings.ToLower(runtime) {
-    case NODE_JS:
-        extension = NODE_JS_EXT
-    case PYTHON:
-        extension = PYTHON_EXT
-    case SWIFT:
-        fallthrough
-    case PHP:
-        extension = fmt.Sprintf(".%s", runtime)
-    }
-
-    return extension
+	switch strings.ToLower(runtime) {
+	case NODE_JS:
+		extension = NODE_JS_EXT
+	case PYTHON:
+		extension = PYTHON_EXT
+	case SWIFT:
+		fallthrough
+	case PHP:
+		extension = fmt.Sprintf(".%s", runtime)
+	}
+
+	return extension
 }
 
 func saveCode(action whisk.Action, filename string) (err error) {
-    var code string
-    var runtime string
-    var exec whisk.Exec
-
-    exec = *action.Exec
-    runtime = strings.Split(exec.Kind, ":")[0]
-
-    if strings.ToLower(runtime) == BLACKBOX {
-        return cannotSaveImageError()
-    } else if strings.ToLower(runtime) == SEQUENCE {
-        return cannotSaveSequenceError()
-    }
-
-    if exec.Code != nil {
-        code = *exec.Code
-    }
-
-    if *exec.Binary {
-        decoded, _ := base64.StdEncoding.DecodeString(code)
-        code = string(decoded)
-
-        if len(filename) == 0 {
-            filename = action.Name + getBinaryKindExtension(runtime)
-        }
-    } else {
-        if len(filename) == 0 {
-            filename = action.Name + getKindExtension(runtime)
-        }
-    }
-
-    if exists, err := FileExists(filename); err != nil {
-        return err
-    } else if exists {
-        return fileExistsError(filename)
-    }
-
-    if err := writeFile(filename, code); err != nil {
-        return err
-    }
-
-    pwd, err := os.Getwd()
-    if err != nil {
-        whisk.Debug(whisk.DbgError, "os.Getwd() error: %s\n", err)
-        return err
-    }
-
-    savedPath := fmt.Sprintf("%s%s%s", pwd, string(os.PathSeparator), filename)
-
-    printSavedActionCodeSuccess(savedPath)
-
-    return nil
+	var code string
+	var runtime string
+	var exec whisk.Exec
+
+	exec = *action.Exec
+	runtime = strings.Split(exec.Kind, ":")[0]
+
+	if strings.ToLower(runtime) == BLACKBOX {
+		return cannotSaveImageError()
+	} else if strings.ToLower(runtime) == SEQUENCE {
+		return cannotSaveSequenceError()
+	}
+
+	if exec.Code != nil {
+		code = *exec.Code
+	}
+
+	if *exec.Binary {
+		decoded, _ := base64.StdEncoding.DecodeString(code)
+		code = string(decoded)
+
+		if len(filename) == 0 {
+			filename = action.Name + getBinaryKindExtension(runtime)
+		}
+	} else {
+		if len(filename) == 0 {
+			filename = action.Name + getKindExtension(runtime)
+		}
+	}
+
+	if exists, err := FileExists(filename); err != nil {
+		return err
+	} else if exists {
+		return fileExistsError(filename)
+	}
+
+	if err := writeFile(filename, code); err != nil {
+		return err
+	}
+
+	pwd, err := os.Getwd()
+	if err != nil {
+		whisk.Debug(whisk.DbgError, "os.Getwd() error: %s\n", err)
+		return err
+	}
+
+	savedPath := fmt.Sprintf("%s%s%s", pwd, string(os.PathSeparator), filename)
+
+	printSavedActionCodeSuccess(savedPath)
+
+	return nil
 }
 
-func webAction(webMode string, annotations whisk.KeyValueArr, entityName string, preserveAnnotations bool) (whisk.KeyValueArr, error){
-    switch strings.ToLower(webMode) {
-    case "yes":
-        fallthrough
-    case "true":
-        return webActionAnnotations(preserveAnnotations, annotations, entityName, addWebAnnotations)
-    case "no":
-        fallthrough
-    case "false":
-        return webActionAnnotations(preserveAnnotations, annotations, entityName, deleteWebAnnotations)
-    case "raw":
-        return webActionAnnotations(preserveAnnotations, annotations, entityName, addRawAnnotations)
-    default:
-        return nil, webInputError(webMode)
-    }
+func webAction(webMode string, annotations whisk.KeyValueArr, entityName string, preserveAnnotations bool) (whisk.KeyValueArr, error) {
+	switch strings.ToLower(webMode) {
+	case "yes":
+		fallthrough
+	case "true":
+		return webActionAnnotations(preserveAnnotations, annotations, entityName, addWebAnnotations)
+	case "no":
+		fallthrough
+	case "false":
+		return webActionAnnotations(preserveAnnotations, annotations, entityName, deleteWebAnnotations)
+	case "raw":
+		return webActionAnnotations(preserveAnnotations, annotations, entityName, addRawAnnotations)
+	default:
+		return nil, webInputError(webMode)
+	}
 }
 
-type WebActionAnnotationMethod func(annotations whisk.KeyValueArr) (whisk.KeyValueArr)
+type WebActionAnnotationMethod func(annotations whisk.KeyValueArr) whisk.KeyValueArr
 
 func webActionAnnotations(
-    preserveAnnotations bool,
-    annotations whisk.KeyValueArr,
-    entityName string,
-    webActionAnnotationMethod WebActionAnnotationMethod) (whisk.KeyValueArr, error) {
-        var action *whisk.Action
-        var err error
-
-        if preserveAnnotations {
-            if action, _, err = Client.Actions.Get(entityName); err != nil {
-                whiskErr, isWhiskError := err.(*whisk.WskError)
-
-                if (isWhiskError && whiskErr.ExitCode != whisk.EXIT_CODE_NOT_FOUND) || !isWhiskError {
-                    return nil, actionGetError(entityName, err)
-                }
-            } else {
-                annotations = whisk.KeyValueArr.AppendKeyValueArr(annotations, action.Annotations)
-            }
-        }
-
-        annotations = webActionAnnotationMethod(annotations)
-
-        return annotations, nil
+	preserveAnnotations bool,
+	annotations whisk.KeyValueArr,
+	entityName string,
+	webActionAnnotationMethod WebActionAnnotationMethod) (whisk.KeyValueArr, error) {
+	var action *whisk.Action
+	var err error
+
+	if preserveAnnotations {
+		if action, _, err = Client.Actions.Get(entityName); err != nil {
+			whiskErr, isWhiskError := err.(*whisk.WskError)
+
+			if (isWhiskError && whiskErr.ExitCode != whisk.EXIT_CODE_NOT_FOUND) || !isWhiskError {
+				return nil, actionGetError(entityName, err)
+			}
+		} else {
+			annotations = whisk.KeyValueArr.AppendKeyValueArr(annotations, action.Annotations)
+		}
+	}
+
+	annotations = webActionAnnotationMethod(annotations)
+
+	return annotations, nil
 }
 
-func addWebAnnotations(annotations whisk.KeyValueArr) (whisk.KeyValueArr) {
-    annotations = deleteWebAnnotationKeys(annotations)
-    annotations = addKeyValue(WEB_EXPORT_ANNOT, true, annotations)
-    annotations = addKeyValue(RAW_HTTP_ANNOT, false, annotations)
-    annotations = addKeyValue(FINAL_ANNOT, true, annotations)
+func addWebAnnotations(annotations whisk.KeyValueArr) whisk.KeyValueArr {
+	annotations = deleteWebAnnotationKeys(annotations)
+	annotations = addKeyValue(WEB_EXPORT_ANNOT, true, annotations)
+	annotations = addKeyValue(RAW_HTTP_ANNOT, false, annotations)
+	annotations = addKeyValue(FINAL_ANNOT, true, annotations)
 
-    return annotations
+	return annotations
 }
 
-func deleteWebAnnotations(annotations whisk.KeyValueArr) (whisk.KeyValueArr) {
-    annotations = deleteWebAnnotationKeys(annotations)
-    annotations = addKeyValue(WEB_EXPORT_ANNOT, false, annotations)
-    annotations = addKeyValue(RAW_HTTP_ANNOT, false, annotations)
-    annotations = addKeyValue(FINAL_ANNOT, false, annotations)
+func deleteWebAnnotations(annotations whisk.KeyValueArr) whisk.KeyValueArr {
+	annotations = deleteWebAnnotationKeys(annotations)
+	annotations = addKeyValue(WEB_EXPORT_ANNOT, false, annotations)
+	annotations = addKeyValue(RAW_HTTP_ANNOT, false, annotations)
+	annotations = addKeyValue(FINAL_ANNOT, false, annotations)
 
-    return annotations
+	return annotations
 }
 
-func addRawAnnotations(annotations whisk.KeyValueArr) (whisk.KeyValueArr) {
-    annotations = deleteWebAnnotationKeys(annotations)
-    annotations = addKeyValue(WEB_EXPORT_ANNOT, true, annotations)
-    annotations = addKeyValue(RAW_HTTP_ANNOT, true, annotations)
-    annotations = addKeyValue(FINAL_ANNOT, true, annotations)
+func addRawAnnotations(annotations whisk.KeyValueArr) whisk.KeyValueArr {
+	annotations = deleteWebAnnotationKeys(annotations)
+	annotations = addKeyValue(WEB_EXPORT_ANNOT, true, annotations)
+	annotations = addKeyValue(RAW_HTTP_ANNOT, true, annotations)
+	annotations = addKeyValue(FINAL_ANNOT, true, annotations)
 
-    return annotations
+	return annotations
 }
 
-func deleteWebAnnotationKeys(annotations whisk.KeyValueArr) (whisk.KeyValueArr) {
-    annotations = deleteKey(WEB_EXPORT_ANNOT, annotations)
-    annotations = deleteKey(RAW_HTTP_ANNOT, annotations)
-    annotations = deleteKey(FINAL_ANNOT, annotations)
+func deleteWebAnnotationKeys(annotations whisk.KeyValueArr) whisk.KeyValueArr {
+	annotations = deleteKey(WEB_EXPORT_ANNOT, annotations)
+	annotations = deleteKey(RAW_HTTP_ANNOT, annotations)
+	annotations = deleteKey(FINAL_ANNOT, annotations)
 
-    return annotations
+	return annotations
 }
 
-func getLimits(memorySet bool, logSizeSet bool, timeoutSet bool, memory int, logSize int, timeout int) (*whisk.Limits) {
-    var limits *whisk.Limits
+func getLimits(memorySet bool, logSizeSet bool, timeoutSet bool, memory int, logSize int, timeout int) *whisk.Limits {
+	var limits *whisk.Limits
 
-    if memorySet || logSizeSet || timeoutSet {
-        limits = new(whisk.Limits)
+	if memorySet || logSizeSet || timeoutSet {
+		limits = new(whisk.Limits)
 
-        if memorySet {
-            limits.Memory = &memory
-        }
+		if memorySet {
+			limits.Memory = &memory
+		}
 
-        if logSizeSet {
-            limits.Logsize = &logSize
-        }
+		if logSizeSet {
+			limits.Logsize = &logSize
+		}
 
-        if timeoutSet {
-            limits.Timeout = &timeout
-        }
-    }
+		if timeoutSet {
+			limits.Timeout = &timeout
+		}
+	}
 
-    return limits
+	return limits
 }
 
-func nestedError(errorMessage string, err error) (error) {
-    return whisk.MakeWskErrorFromWskError(
-        errors.New(errorMessage),
-        err,
-        whisk.EXIT_CODE_ERR_GENERAL,
-        whisk.DISPLAY_MSG,
-        whisk.DISPLAY_USAGE)
+func nestedError(errorMessage string, err error) error {
+	return whisk.MakeWskErrorFromWskError(
+		errors.New(errorMessage),
+		err,
+		whisk.EXIT_CODE_ERR_GENERAL,
+		whisk.DISPLAY_MSG,
+		whisk.DISPLAY_USAGE)
 }
 
-func nonNestedError(errorMessage string) (error) {
-    return whisk.MakeWskError(
-        errors.New(errorMessage),
-        whisk.EXIT_CODE_ERR_USAGE,
-        whisk.DISPLAY_MSG,
-        whisk.DISPLAY_USAGE)
+func nonNestedError(errorMessage string) error {
+	return whisk.MakeWskError(
+		errors.New(errorMessage),
+		whisk.EXIT_CODE_ERR_USAGE,
+		whisk.DISPLAY_MSG,
+		whisk.DISPLAY_USAGE)
 }
 
-func actionParseError(cmd *cobra.Command, args []string, err error) (error) {
-    whisk.Debug(whisk.DbgError, "parseAction(%s, %s) error: %s\n", cmd, args, err)
+func actionParseError(cmd *cobra.Command, args []string, err error) error {
+	whisk.Debug(whisk.DbgError, "parseAction(%s, %s) error: %s\n", cmd, args, err)
 
-    errMsg := wski18n.T(
-        "Invalid argument(s). {{.required}}",
-        map[string]interface{}{
-            "required": err,
-        })
+	errMsg := wski18n.T(
+		"Invalid argument(s). {{.required}}",
+		map[string]interface{}{
+			"required": err,
+		})
 
-    return nestedError(errMsg, err)
+	return nestedError(errMsg, err)
 }
 
-func actionInsertError(action *whisk.Action, err error) (error) {
-    whisk.Debug(whisk.DbgError, "Client.Actions.Insert(%#v, false) error: %s\n", action, err)
+func actionInsertError(action *whisk.Action, err error) error {
+	whisk.Debug(whisk.DbgError, "Client.Actions.Insert(%#v, false) error: %s\n", action, err)
 
-    errMsg := wski18n.T(
-        "Unable to create action '{{.name}}': {{.err}}",
-        map[string]interface{}{
-            "name": action.Name,
-            "err": err,
-        })
+	errMsg := wski18n.T(
+		"Unable to create action '{{.name}}': {{.err}}",
+		map[string]interface{}{
+			"name": action.Name,
+			"err":  err,
+		})
 
-    return nestedError(errMsg, err)
+	return nestedError(errMsg, err)
 }
 
-func getJSONFromStringsParamError(params []string, keyValueFormat bool, err error) (error) {
-    whisk.Debug(whisk.DbgError, "getJSONFromStrings(%#v, %t) failed: %s\n", params, keyValueFormat, err)
+func getJSONFromStringsParamError(params []string, keyValueFormat bool, err error) error {
+	whisk.Debug(whisk.DbgError, "getJSONFromStrings(%#v, %t) failed: %s\n", params, keyValueFormat, err)
 
-    errMsg := wski18n.T(
-        "Invalid parameter argument '{{.param}}': {{.err}}",
-        map[string]interface{}{
-            "param": fmt.Sprintf("%#v", params),
-            "err": err,
-        })
+	errMsg := wski18n.T(
+		"Invalid parameter argument '{{.param}}': {{.err}}",
+		map[string]interface{}{
+			"param": fmt.Sprintf("%#v", params),
+			"err":   err,
+		})
 
-    return nestedError(errMsg, err)
+	return nestedError(errMsg, err)
 }
 
-func getJSONFromStringsAnnotError(annots []string, keyValueFormat bool, err error) (error) {
-    whisk.Debug(whisk.DbgError, "getJSONFromStrings(%#v, %t) failed: %s\n", annots, keyValueFormat, err)
+func getJSONFromStringsAnnotError(annots []string, keyValueFormat bool, err error) error {
+	whisk.Debug(whisk.DbgError, "getJSONFromStrings(%#v, %t) failed: %s\n", annots, keyValueFormat, err)
 
-    errMsg := wski18n.T(
-        "Invalid annotation argument '{{.annotation}}': {{.err}}",
-        map[string]interface{}{
-            "annotation": fmt.Sprintf("%#v", annots),
-            "err": err,
-        })
+	errMsg := wski18n.T(
+		"Invalid annotation argument '{{.annotation}}': {{.err}}",
+		map[string]interface{}{
+			"annotation": fmt.Sprintf("%#v", annots),
+			"err":        err,
+		})
 
-    return nestedError(errMsg, err)
+	return nestedError(errMsg, err)
 }
 
-func invalidFieldFilterError(field string) (error) {
-    errMsg := wski18n.T(
-        "Invalid field filter '{{.arg}}'.",
-        map[string]interface{}{
-            "arg": field,
-        })
+func invalidFieldFilterError(field string) error {
+	errMsg := wski18n.T(
+		"Invalid field filter '{{.arg}}'.",
+		map[string]interface{}{
+			"arg": field,
+		})
 
-    return nonNestedError(errMsg)
+	return nonNestedError(errMsg)
 }
 
-func actionDeleteError(entityName string, err error) (error) {
-    whisk.Debug(whisk.DbgError, "Client.Actions.Delete(%s) error: %s\n", entityName, err)
+func actionDeleteError(entityName string, err error) error {
+	whisk.Debug(whisk.DbgError, "Client.Actions.Delete(%s) error: %s\n", entityName, err)
 
-    errMsg := wski18n.T(
-        "Unable to delete action '{{.name}}': {{.err}}",
-        map[string]interface{}{
-            "name": entityName,
-            "err": err,
-        })
+	errMsg := wski18n.T(
+		"Unable to delete action '{{.name}}': {{.err}}",
+		map[string]interface{}{
+			"name": entityName,
+			"err":  err,
+		})
 
-    return nestedError(errMsg, err)
+	return nestedError(errMsg, err)
 }
 
-func actionGetError(entityName string, err error) (error) {
-    whisk.Debug(whisk.DbgError, "Client.Actions.Get(%s) error: %s\n", entityName, err)
+func actionGetError(entityName string, err error) error {
+	whisk.Debug(whisk.DbgError, "Client.Actions.Get(%s) error: %s\n", entityName, err)
 
-    errMsg := wski18n.T(
-        "Unable to get action '{{.name}}': {{.err}}",
-        map[string]interface{}{
-            "name": entityName,
-            "err": err,
-        })
+	errMsg := wski18n.T(
+		"Unable to get action '{{.name}}': {{.err}}",
+		map[string]interface{}{
+			"name": entityName,
+			"err":  err,
+		})
 
-    return nestedError(errMsg, err)
+	return nestedError(errMsg, err)
 }
 
-func handleInvocationError(err error, entityName string, parameters interface{}) (error) {
-    whisk.Debug(
-        whisk.DbgError,
-        "Client.Actions.Invoke(%s, %s, %t) error: %s\n",
-        entityName, parameters,
-        Flags.common.blocking,
-        err)
-
-    errMsg := wski18n.T(
-        "Unable to invoke action '{{.name}}': {{.err}}",
-        map[string]interface{}{
-            "name": entityName,
-            "err": err,
-        })
-
-    return nestedError(errMsg, err)
+func handleInvocationError(err error, entityName string, parameters interface{}) error {
+	whisk.Debug(
+		whisk.DbgError,
+		"Client.Actions.Invoke(%s, %s, %t) error: %s\n",
+		entityName, parameters,
+		Flags.common.blocking,
+		err)
+
+	errMsg := wski18n.T(
+		"Unable to invoke action '{{.name}}': {{.err}}",
+		map[string]interface{}{
+			"name": entityName,
+			"err":  err,
+		})
+
+	return nestedError(errMsg, err)
 }
 
-func actionListError(entityName string, options *whisk.ActionListOptions, err error) (error) {
-    whisk.Debug(whisk.DbgError, "Client.Actions.List(%s, %#v) error: %s\n", entityName, options, err)
+func actionListError(entityName string, options *whisk.ActionListOptions, err error) error {
+	whisk.Debug(whisk.DbgError, "Client.Actions.List(%s, %#v) error: %s\n", entityName, options, err)
 
-    errMsg := wski18n.T(
-        "Unable to obtain the list of actions for namespace '{{.name}}': {{.err}}",
-        map[string]interface{}{
-            "name": getClientNamespace(),
-            "err": err,
-        })
+	errMsg := wski18n.T(
+		"Unable to obtain the list of actions for namespace '{{.name}}': {{.err}}",
+		map[string]interface{}{
+			"name": getClientNamespace(),
+			"err":  err,
+		})
 
-    return nestedError(errMsg, err)
+	return nestedError(errMsg, err)
 }
 
-func webInputError(arg string) (error) {
-    errMsg := wski18n.T(
-        "Invalid argument '{{.arg}}' for --web flag. Valid input consist of 'yes', 'true', 'raw', 'false', or 'no'.",
-        map[string]interface{}{
-            "arg": arg,
-        })
+func webInputError(arg string) error {
+	errMsg := wski18n.T(
+		"Invalid argument '{{.arg}}' for --web flag. Valid input consist of 'yes', 'true', 'raw', 'false', or 'no'.",
+		map[string]interface{}{
+			"arg": arg,
+		})
 
-    return nonNestedError(errMsg)
+	return nonNestedError(errMsg)
 }
 
-func zipKindError() (error) {
-    errMsg := wski18n.T("creating an action from a .zip artifact requires specifying the action kind explicitly")
+func zipKindError() error {
+	errMsg := wski18n.T("creating an action from a .zip artifact requires specifying the action kind explicitly")
 
-    return nonNestedError(errMsg)
+	return nonNestedError(errMsg)
 }
 
-func noArtifactError() (error) {
-    errMsg := wski18n.T("An action name and code artifact are required.")
+func noArtifactError() error {
+	errMsg := wski18n.T("An action name and code artifact are required.")
 
-    return nonNestedError(errMsg)
+	return nonNestedError(errMsg)
 }
 
-func extensionError(extension string) (error) {
-    errMsg := wski18n.T(
-        "'{{.name}}' is not a supported action runtime",
-        map[string]interface{}{
-            "name": extension,
-        })
+func extensionError(extension string) error {
+	errMsg := wski18n.T(
+		"'{{.name}}' is not a supported action runtime",
+		map[string]interface{}{
+			"name": extension,
+		})
 
-    return nonNestedError(errMsg)
+	return nonNestedError(errMsg)
 }
 
-func javaEntryError() (error) {
-    errMsg := wski18n.T("Java actions require --main to specify the fully-qualified name of the main class")
+func javaEntryError() error {
+	errMsg := wski18n.T("Java actions require --main to specify the fully-qualified name of the main class")
 
-    return nonNestedError(errMsg)
+	return nonNestedError(errMsg)
 }
 
-func cannotSaveImageError() (error) {
-    return nonNestedError(wski18n.T("Cannot save Docker images"))
+func cannotSaveImageError() error {
+	return nonNestedError(wski18n.T("Cannot save Docker images"))
 }
 
-func cannotSaveSequenceError() (error) {
-    return nonNestedError(wski18n.T("Cannot save action sequences"))
+func cannotSaveSequenceError() error {
+	return nonNestedError(wski18n.T("Cannot save action sequences"))
 }
 
-func fileExistsError(file string) (error) {
-    errMsg := wski18n.T("The file '{{.file}}' already exists", map[string]interface{} {
-        "file": file,
-    })
+func fileExistsError(file string) error {
+	errMsg := wski18n.T("The file '{{.file}}' already exists", map[string]interface{}{
+		"file": file,
+	})
 
-    return nonNestedError(errMsg)
+	return nonNestedError(errMsg)
 }
 
 func printActionCreated(entityName string) {
-    fmt.Fprintf(
-        color.Output,
-        wski18n.T(
-            "{{.ok}} created action {{.name}}\n",
-            map[string]interface{}{
-                "ok": color.GreenString("ok:"),
-                "name": boldString(entityName),
-            }))
+	fmt.Fprintf(
+		color.Output,
+		wski18n.T(
+			"{{.ok}} created action {{.name}}\n",
+			map[string]interface{}{
+				"ok":   color.GreenString("ok:"),
+				"name": boldString(entityName),
+			}))
 }
 
 func printActionUpdated(entityName string) {
-    fmt.Fprintf(
-        color.Output,
-        wski18n.T(
-            "{{.ok}} updated action {{.name}}\n",
-            map[string]interface{}{
-                "ok": color.GreenString("ok:"),
-                "name": boldString(entityName),
-            }))
+	fmt.Fprintf(
+		color.Output,
+		wski18n.T(
+			"{{.ok}} updated action {{.name}}\n",
+			map[string]interface{}{
+				"ok":   color.GreenString("ok:"),
+				"name": boldString(entityName),
+			}))
 }
 
 func printBlockingTimeoutMsg(namespace string, entityName string, activationID interface{}) {
-    fmt.Fprintf(
-        colorable.NewColorableStderr(),
-        wski18n.T(
-            "{{.ok}} invoked /{{.namespace}}/{{.name}}, but the request has not yet finished, with id {{.id}}\n",
-            map[string]interface{}{
-                "ok": color.GreenString("ok:"),
-                "namespace": boldString(namespace),
-                "name": boldString(entityName),
-                "id": boldString(activationID),
-            }))
+	fmt.Fprintf(
+		colorable.NewColorableStderr(),
+		wski18n.T(
+			"{{.ok}} invoked /{{.namespace}}/{{.name}}, but the request has not yet finished, with id {{.id}}\n",
+			map[string]interface{}{
+				"ok":        color.GreenString("ok:"),
+				"namespace": boldString(namespace),
+				"name":      boldString(entityName),
+				"id":        boldString(activationID),
+			}))
 }
 
 func printInvocationMsg(
-    namespace string,
-    entityName string,
-    activationID interface{},
-    response map[string]interface{},
-    outputStream io.Writer) {
-        if !Flags.action.result {
-            fmt.Fprintf(
-                outputStream,
-                wski18n.T(
-                    "{{.ok}} invoked /{{.namespace}}/{{.name}} with id {{.id}}\n",
-                    map[string]interface{}{
-                        "ok": color.GreenString("ok:"),
-                        "namespace": boldString(namespace),
-                        "name": boldString(entityName),
-                        "id": boldString(activationID),
-                    }))
-        }
-
-        if Flags.common.blocking {
-            printJSON(response, outputStream)
-        }
+	namespace string,
+	entityName string,
+	activationID interface{},
+	response map[string]interface{},
+	outputStream io.Writer) {
+	if !Flags.action.result {
+		fmt.Fprintf(
+			outputStream,
+			wski18n.T(
+				"{{.ok}} invoked /{{.namespace}}/{{.name}} with id {{.id}}\n",
+				map[string]interface{}{
+					"ok":        color.GreenString("ok:"),
+					"namespace": boldString(namespace),
+					"name":      boldString(entityName),
+					"id":        boldString(activationID),
+				}))
+	}
+
+	if Flags.common.blocking {
+		printJSON(response, outputStream)
+	}
 }
 
 func printActionGetWithField(entityName string, field string, action *whisk.Action) {
-    fmt.Fprintf(
-        color.Output,
-        wski18n.T(
-            "{{.ok}} got action {{.name}}, displaying field {{.field}}\n",
-            map[string]interface{}{
-                "ok": color.GreenString("ok:"),
-                "name": boldString(entityName),
-                "field": boldString(field),
-            }))
-
-    printField(action, field)
+	fmt.Fprintf(
+		color.Output,
+		wski18n.T(
+			"{{.ok}} got action {{.name}}, displaying field {{.field}}\n",
+			map[string]interface{}{
+				"ok":    color.GreenString("ok:"),
+				"name":  boldString(entityName),
+				"field": boldString(field),
+			}))
+
+	printField(action, field)
 }
 
 func printActionGetWithURL(entityName string, actionURL string) {
-    fmt.Fprintf(
-        color.Output,
-        wski18n.T("{{.ok}} got action {{.name}}\n",
-            map[string]interface{}{
-                "ok": color.GreenString("ok:"),
-                "name": boldString(entityName),
-            }))
-    fmt.Println(actionURL)
+	fmt.Fprintf(
+		color.Output,
+		wski18n.T("{{.ok}} got action {{.name}}\n",
+			map[string]interface{}{
+				"ok":   color.GreenString("ok:"),
+				"name": boldString(entityName),
+			}))
+	fmt.Println(actionURL)
 }
 
 func printActionGet(entityName string, action *whisk.Action) {
-    fmt.Fprintf(
-        color.Output,
-        wski18n.T("{{.ok}} got action {{.name}}\n",
-            map[string]interface{}{
-                "ok": color.GreenString("ok:"),
-                "name": boldString(entityName),
-            }))
-
-    printJSON(action)
+	fmt.Fprintf(
+		color.Output,
+		wski18n.T("{{.ok}} got action {{.name}}\n",
+			map[string]interface{}{
+				"ok":   color.GreenString("ok:"),
+				"name": boldString(entityName),
+			}))
+
+	printJSON(action)
 }
 
 func printActionDeleted(entityName string) {
-    fmt.Fprintf(
-        color.Output,
-        wski18n.T(
-            "{{.ok}} deleted action {{.name}}\n",
-            map[string]interface{}{
-                "ok": color.GreenString("ok:"),
-                "name": boldString(entityName),
-            }))
+	fmt.Fprintf(
+		color.Output,
+		wski18n.T(
+			"{{.ok}} deleted action {{.name}}\n",
+			map[string]interface{}{
+				"ok":   color.GreenString("ok:"),
+				"name": boldString(entityName),
+			}))
 }
 
 func printSavedActionCodeSuccess(name string) {
-    fmt.Fprintf(
-        color.Output,
-        wski18n.T(
-            "{{.ok}} saved action code to {{.name}}\n",
-            map[string]interface{}{
-                "ok": color.GreenString("ok:"),
-                "name": boldString(name),
-            }))
+	fmt.Fprintf(
+		color.Output,
+		wski18n.T(
+			"{{.ok}} saved action code to {{.name}}\n",
+			map[string]interface{}{
+				"ok":   color.GreenString("ok:"),
+				"name": boldString(name),
+			}))
 }
 
 // Check if the specified action is a web-action
-func isWebAction(client *whisk.Client, qname QualifiedName) (error) {
-    var err error = nil
-
-    savedNs := client.Namespace
-    client.Namespace = qname.GetNamespace()
-    fullActionName := "/" + qname.GetNamespace() + "/" + qname.GetEntityName()
-
-    action, _, err := client.Actions.Get(qname.GetEntityName())
-
-    if err != nil {
-        whisk.Debug(whisk.DbgError, "client.Actions.Get(%s) error: %s\n", fullActionName, err)
-        whisk.Debug(whisk.DbgError, "Unable to obtain action '%s' for web action validation\n", fullActionName)
-        errMsg := wski18n.T("Unable to get action '{{.name}}': {{.err}}",
-            map[string]interface{}{"name": fullActionName, "err": err})
-        err = whisk.MakeWskErrorFromWskError(errors.New(errMsg), err, whisk.EXIT_CODE_ERR_NETWORK, whisk.DISPLAY_MSG,
-            whisk.NO_DISPLAY_USAGE)
-    } else {
-        err = errors.New(wski18n.T("Action '{{.name}}' is not a web action. Issue 'wsk action update \"{{.name}}\" --web true' to convert the action to a web action.",
-            map[string]interface{}{"name": fullActionName}))
-
-        if action.WebAction() {
-            err = nil
-        }
-    }
-
-    client.Namespace = savedNs
-
-    return err
+func isWebAction(client *whisk.Client, qname QualifiedName) error {
+	var err error = nil
+
+	savedNs := client.Namespace
+	client.Namespace = qname.GetNamespace()
+	fullActionName := "/" + qname.GetNamespace() + "/" + qname.GetEntityName()
+
+	action, _, err := client.Actions.Get(qname.GetEntityName())
+
+	if err != nil {
+		whisk.Debug(whisk.DbgError, "client.Actions.Get(%s) error: %s\n", fullActionName, err)
+		whisk.Debug(whisk.DbgError, "Unable to obtain action '%s' for web action validation\n", fullActionName)
+		errMsg := wski18n.T("Unable to get action '{{.name}}': {{.err}}",
+			map[string]interface{}{"name": fullActionName, "err": err})
+		err = whisk.MakeWskErrorFromWskError(errors.New(errMsg), err, whisk.EXIT_CODE_ERR_NETWORK, whisk.DISPLAY_MSG,
+			whisk.NO_DISPLAY_USAGE)
+	} else {
+		err = errors.New(wski18n.T("Action '{{.name}}' is not a web action. Issue 'wsk action update \"{{.name}}\" --web true' to convert the action to a web action.",
+			map[string]interface{}{"name": fullActionName}))
+
+		if action.WebAction() {
+			err = nil
+		}
+	}
+
+	client.Namespace = savedNs
+
+	return err
 }
 
 func init() {
-    actionCreateCmd.Flags().BoolVar(&Flags.action.native, "native", false, wski18n.T("treat ACTION as native action (zip file provides a compatible executable to run)"))
-    actionCreateCmd.Flags().StringVar(&Flags.action.docker, "docker", "", wski18n.T("use provided docker image (a path on DockerHub) to run the action"))
-    actionCreateCmd.Flags().BoolVar(&Flags.action.copy, "copy", false, wski18n.T("treat ACTION as the name of an existing action"))
-    actionCreateCmd.Flags().BoolVar(&Flags.action.sequence, "sequence", false, wski18n.T("treat ACTION as comma separated sequence of actions to invoke"))
-    actionCreateCmd.Flags().StringVar(&Flags.action.kind, "kind", "", wski18n.T("the `KIND` of the action runtime (example: swift:default, nodejs:default)"))
-    actionCreateCmd.Flags().StringVar(&Flags.action.main, "main", "", wski18n.T("the name of the action entry point (function or fully-qualified method name when applicable)"))
-    actionCreateCmd.Flags().IntVarP(&Flags.action.timeout, TIMEOUT_FLAG, "t", TIMEOUT_LIMIT, wski18n.T("the timeout `LIMIT` in milliseconds after which the action is terminated"))
-    actionCreateCmd.Flags().IntVarP(&Flags.action.memory, MEMORY_FLAG, "m", MEMORY_LIMIT, wski18n.T("the maximum memory `LIMIT` in MB for the action"))
-    actionCreateCmd.Flags().IntVarP(&Flags.action.logsize, LOG_SIZE_FLAG, "l", LOGSIZE_LIMIT, wski18n.T("the maximum log size `LIMIT` in MB for the action"))
-    actionCreateCmd.Flags().StringSliceVarP(&Flags.common.annotation, "annotation", "a", nil, wski18n.T("annotation values in `KEY VALUE` format"))
-    actionCreateCmd.Flags().StringVarP(&Flags.common.annotFile, "annotation-file", "A", "", wski18n.T("`FILE` containing annotation values in JSON format"))
-    actionCreateCmd.Flags().StringSliceVarP(&Flags.common.param, "param", "p", nil, wski18n.T("parameter values in `KEY VALUE` format"))
-    actionCreateCmd.Flags().StringVarP(&Flags.common.paramFile, "param-file", "P", "", wski18n.T("`FILE` containing parameter values in JSON format"))
-    actionCreateCmd.Flags().StringVar(&Flags.action.web, WEB_FLAG, "", wski18n.T("treat ACTION as a web action, a raw HTTP web action, or as a standard action; yes | true = web action, raw = raw HTTP web action, no | false = standard action"))
-
-    actionUpdateCmd.Flags().BoolVar(&Flags.action.native, "native", false, wski18n.T("treat ACTION as native action (zip file provides a compatible executable to run)"))
-    actionUpdateCmd.Flags().StringVar(&Flags.action.docker, "docker", "", wski18n.T("use provided docker image (a path on DockerHub) to run the action"))
-    actionUpdateCmd.Flags().BoolVar(&Flags.action.copy, "copy", false, wski18n.T("treat ACTION as the name of an existing action"))
-    actionUpdateCmd.Flags().BoolVar(&Flags.action.sequence, "sequence", false, wski18n.T("treat ACTION as comma separated sequence of actions to invoke"))
-    actionUpdateCmd.Flags().StringVar(&Flags.action.kind, "kind", "", wski18n.T("the `KIND` of the action runtime (example: swift:default, nodejs:default)"))
-    actionUpdateCmd.Flags().StringVar(&Flags.action.main, "main", "", wski18n.T("the name of the action entry point (function or fully-qualified method name when applicable)"))
-    actionUpdateCmd.Flags().IntVarP(&Flags.action.timeout, TIMEOUT_FLAG, "t", TIMEOUT_LIMIT, wski18n.T("the timeout `LIMIT` in milliseconds after which the action is terminated"))
-    actionUpdateCmd.Flags().IntVarP(&Flags.action.memory, MEMORY_FLAG, "m", MEMORY_LIMIT, wski18n.T("the maximum memory `LIMIT` in MB for the action"))
-    actionUpdateCmd.Flags().IntVarP(&Flags.action.logsize, LOG_SIZE_FLAG, "l", LOGSIZE_LIMIT, wski18n.T("the maximum log size `LIMIT` in MB for the action"))
-    actionUpdateCmd.Flags().StringSliceVarP(&Flags.common.annotation, "annotation", "a", []string{}, wski18n.T("annotation values in `KEY VALUE` format"))
-    actionUpdateCmd.Flags().StringVarP(&Flags.common.annotFile, "annotation-file", "A", "", wski18n.T("`FILE` containing annotation values in JSON format"))
-    actionUpdateCmd.Flags().StringSliceVarP(&Flags.common.param, "param", "p", []string{}, wski18n.T("parameter values in `KEY VALUE` format"))
-    actionUpdateCmd.Flags().StringVarP(&Flags.common.paramFile, "param-file", "P", "", wski18n.T("`FILE` containing parameter values in JSON format"))
-    actionUpdateCmd.Flags().StringVar(&Flags.action.web, WEB_FLAG, "", wski18n.T("treat ACTION as a web action, a raw HTTP web action, or as a standard action; yes | true = web action, raw = raw HTTP web action, no | false = standard action"))
-
-    actionInvokeCmd.Flags().StringSliceVarP(&Flags.common.param, "param", "p", []string{}, wski18n.T("parameter values in `KEY VALUE` format"))
-    actionInvokeCmd.Flags().StringVarP(&Flags.common.paramFile, "param-file", "P", "", wski18n.T("`FILE` containing parameter values in JSON format"))
-    actionInvokeCmd.Flags().BoolVarP(&Flags.common.blocking, "blocking", "b", false, wski18n.T("blocking invoke"))
-    actionInvokeCmd.Flags().BoolVarP(&Flags.action.result, "result", "r", false, wski18n.T("blocking invoke; show only activation result (unless there is a failure)"))
-
-    actionGetCmd.Flags().BoolVarP(&Flags.common.summary, "summary", "s", false, wski18n.T("summarize action details; parameters with prefix \"*\" are bound, \"**\" are bound and finalized"))
-    actionGetCmd.Flags().BoolVarP(&Flags.action.url, "url", "r", false, wski18n.T("get action url"))
-    actionGetCmd.Flags().StringVar(&Flags.action.saveAs, SAVE_AS_FLAG, "", wski18n.T("file to save action code to"))
-    actionGetCmd.Flags().BoolVarP(&Flags.action.save, SAVE_FLAG, "", false, wski18n.T("save action code to file corresponding with action name"))
-
-    actionListCmd.Flags().IntVarP(&Flags.common.skip, "skip", "s", 0, wski18n.T("exclude the first `SKIP` number of actions from the result"))
-    actionListCmd.Flags().IntVarP(&Flags.common.limit, "limit", "l", 30, wski18n.T("only return `LIMIT` number of actions from the collection"))
-    actionListCmd.Flags().BoolVarP(&Flags.common.nameSort, "name-sort", "n", false, wski18n.T("sorts a list alphabetically by entity name; only applicable within the limit/skip returned entity block"))
-
-    actionCmd.AddCommand(
-        actionCreateCmd,
-        actionUpdateCmd,
-        actionInvokeCmd,
-        actionGetCmd,
-        actionDeleteCmd,
-        actionListCmd,
-    )
+	actionCreateCmd.Flags().BoolVar(&Flags.action.native, "native", false, wski18n.T("treat ACTION as native action (zip file provides a compatible executable to run)"))
+	actionCreateCmd.Flags().StringVar(&Flags.action.docker, "docker", "", wski18n.T("use provided docker image (a path on DockerHub) to run the action"))
+	actionCreateCmd.Flags().BoolVar(&Flags.action.copy, "copy", false, wski18n.T("treat ACTION as the name of an existing action"))
+	actionCreateCmd.Flags().BoolVar(&Flags.action.sequence, "sequence", false, wski18n.T("treat ACTION as comma separated sequence of actions to invoke"))
+	actionCreateCmd.Flags().StringVar(&Flags.action.kind, "kind", "", wski18n.T("the `KIND` of the action runtime (example: swift:default, nodejs:default)"))
+	actionCreateCmd.Flags().StringVar(&Flags.action.main, "main", "", wski18n.T("the name of the action entry point (function or fully-qualified method name when applicable)"))
+	actionCreateCmd.Flags().IntVarP(&Flags.action.timeout, TIMEOUT_FLAG, "t", TIMEOUT_LIMIT, wski18n.T("the timeout `LIMIT` in milliseconds after which the action is terminated"))
+	actionCreateCmd.Flags().IntVarP(&Flags.action.memory, MEMORY_FLAG, "m", MEMORY_LIMIT, wski18n.T("the maximum memory `LIMIT` in MB for the action"))
+	actionCreateCmd.Flags().IntVarP(&Flags.action.logsize, LOG_SIZE_FLAG, "l", LOGSIZE_LIMIT, wski18n.T("the maximum log size `LIMIT` in MB for the action"))
+	actionCreateCmd.Flags().StringSliceVarP(&Flags.common.annotation, "annotation", "a", nil, wski18n.T("annotation values in `KEY VALUE` format"))
+	actionCreateCmd.Flags().StringVarP(&Flags.common.annotFile, "annotation-file", "A", "", wski18n.T("`FILE` containing annotation values in JSON format"))
+	actionCreateCmd.Flags().StringSliceVarP(&Flags.common.param, "param", "p", nil, wski18n.T("parameter values in `KEY VALUE` format"))
+	actionCreateCmd.Flags().StringVarP(&Flags.common.paramFile, "param-file", "P", "", wski18n.T("`FILE` containing parameter values in JSON format"))
+	actionCreateCmd.Flags().StringVar(&Flags.action.web, WEB_FLAG, "", wski18n.T("treat ACTION as a web action, a raw HTTP web action, or as a standard action; yes | true = web action, raw = raw HTTP web action, no | false = standard action"))
+
+	actionUpdateCmd.Flags().BoolVar(&Flags.action.native, "native", false, wski18n.T("treat ACTION as native action (zip file provides a compatible executable to run)"))
+	actionUpdateCmd.Flags().StringVar(&Flags.action.docker, "docker", "", wski18n.T("use provided docker image (a path on DockerHub) to run the action"))
+	actionUpdateCmd.Flags().BoolVar(&Flags.action.copy, "copy", false, wski18n.T("treat ACTION as the name of an existing action"))
+	actionUpdateCmd.Flags().BoolVar(&Flags.action.sequence, "sequence", false, wski18n.T("treat ACTION as comma separated sequence of actions to invoke"))
+	actionUpdateCmd.Flags().StringVar(&Flags.action.kind, "kind", "", wski18n.T("the `KIND` of the action runtime (example: swift:default, nodejs:default)"))
+	actionUpdateCmd.Flags().StringVar(&Flags.action.main, "main", "", wski18n.T("the name of the action entry point (function or fully-qualified method name when applicable)"))
+	actionUpdateCmd.Flags().IntVarP(&Flags.action.timeout, TIMEOUT_FLAG, "t", TIMEOUT_LIMIT, wski18n.T("the timeout `LIMIT` in milliseconds after which the action is terminated"))
+	actionUpdateCmd.Flags().IntVarP(&Flags.action.memory, MEMORY_FLAG, "m", MEMORY_LIMIT, wski18n.T("the maximum memory `LIMIT` in MB for the action"))
+	actionUpdateCmd.Flags().IntVarP(&Flags.action.logsize, LOG_SIZE_FLAG, "l", LOGSIZE_LIMIT, wski18n.T("the maximum log size `LIMIT` in MB for the action"))
+	actionUpdateCmd.Flags().StringSliceVarP(&Flags.common.annotation, "annotation", "a", []string{}, wski18n.T("annotation values in `KEY VALUE` format"))
+	actionUpdateCmd.Flags().StringVarP(&Flags.common.annotFile, "annotation-file", "A", "", wski18n.T("`FILE` containing annotation values in JSON format"))
+	actionUpdateCmd.Flags().StringSliceVarP(&Flags.common.param, "param", "p", []string{}, wski18n.T("parameter values in `KEY VALUE` format"))
+	actionUpdateCmd.Flags().StringVarP(&Flags.common.paramFile, "param-file", "P", "", wski18n.T("`FILE` containing parameter values in JSON format"))
+	actionUpdateCmd.Flags().StringVar(&Flags.action.web, WEB_FLAG, "", wski18n.T("treat ACTION as a web action, a raw HTTP web action, or as a standard action; yes | true = web action, raw = raw HTTP web action, no | false = standard action"))
+
+	actionInvokeCmd.Flags().StringSliceVarP(&Flags.common.param, "param", "p", []string{}, wski18n.T("parameter values in `KEY VALUE` format"))
+	actionInvokeCmd.Flags().StringVarP(&Flags.common.paramFile, "param-file", "P", "", wski18n.T("`FILE` containing parameter values in JSON format"))
+	actionInvokeCmd.Flags().BoolVarP(&Flags.common.blocking, "blocking", "b", false, wski18n.T("blocking invoke"))
+	actionInvokeCmd.Flags().BoolVarP(&Flags.action.result, "result", "r", false, wski18n.T("blocking invoke; show only activation result (unless there is a failure)"))
+
+	actionGetCmd.Flags().BoolVarP(&Flags.common.summary, "summary", "s", false, wski18n.T("summarize action details; parameters with prefix \"*\" are bound, \"**\" are bound and finalized"))
+	actionGetCmd.Flags().BoolVarP(&Flags.action.url, "url", "r", false, wski18n.T("get action url"))
+	actionGetCmd.Flags().StringVar(&Flags.action.saveAs, SAVE_AS_FLAG, "", wski18n.T("file to save action code to"))
+	actionGetCmd.Flags().BoolVarP(&Flags.action.save, SAVE_FLAG, "", false, wski18n.T("save action code to file corresponding with action name"))
+
+	actionListCmd.Flags().IntVarP(&Flags.common.skip, "skip", "s", 0, wski18n.T("exclude the first `SKIP` number of actions from the result"))
+	actionListCmd.Flags().IntVarP(&Flags.common.limit, "limit", "l", 30, wski18n.T("only return `LIMIT` number of actions from the collection"))
+	actionListCmd.Flags().BoolVarP(&Flags.common.nameSort, "name-sort", "n", false, wski18n.T("sorts a list alphabetically by entity name; only applicable within the limit/skip returned entity block"))
+
+	actionCmd.AddCommand(
+		actionCreateCmd,
+		actionUpdateCmd,
+		actionInvokeCmd,
+		actionGetCmd,
+		actionDeleteCmd,
+		actionListCmd,
+	)
 }
diff --git a/commands/activation.go b/commands/activation.go
index 22713b7..a360270 100644
--- a/commands/activation.go
+++ b/commands/activation.go
@@ -18,403 +18,403 @@
 package commands
 
 import (
-    "errors"
-    "fmt"
-    "os"
-    "os/signal"
-    "syscall"
-    "time"
-
-    "github.com/apache/incubator-openwhisk-client-go/whisk"
-    "github.com/apache/incubator-openwhisk-cli/wski18n"
-
-    "github.com/fatih/color"
-    "github.com/spf13/cobra"
+	"errors"
+	"fmt"
+	"os"
+	"os/signal"
+	"syscall"
+	"time"
+
+	"github.com/apache/incubator-openwhisk-cli/wski18n"
+	"github.com/apache/incubator-openwhisk-client-go/whisk"
+
+	"github.com/fatih/color"
+	"github.com/spf13/cobra"
 )
 
 const (
-    PollInterval = time.Second * 2
-    Delay        = time.Second * 5
-    MAX_ACTIVATION_LIMIT = 200
-    DEFAULT_ACTIVATION_LIMIT = 30
+	PollInterval             = time.Second * 2
+	Delay                    = time.Second * 5
+	MAX_ACTIVATION_LIMIT     = 200
+	DEFAULT_ACTIVATION_LIMIT = 30
 )
 
 var activationCmd = &cobra.Command{
-    Use:   "activation",
-    Short: wski18n.T("work with activations"),
+	Use:   "activation",
+	Short: wski18n.T("work with activations"),
 }
 
 var activationListCmd = &cobra.Command{
-    Use:   "list [NAMESPACE or NAME]",
-    Short: wski18n.T("list activations"),
-    SilenceUsage:   true,
-    SilenceErrors:  true,
-    PreRunE: SetupClientConfig,
-    RunE: func(cmd *cobra.Command, args []string) error {
-        var err error
-        var qualifiedName = new(QualifiedName)
-
-        if whiskErr := CheckArgs(args, 0, 1, "Activation list",
-            wski18n.T("An optional namespace is the only valid argument.")); whiskErr != nil {
-            return whiskErr
-        }
-
-        // Specifying an activation item name filter is optional
-        if len(args) == 1 {
-            whisk.Debug(whisk.DbgInfo, "Activation item name filter '%s' provided\n", args[0])
-
-            if qualifiedName, err = NewQualifiedName(args[0]); err != nil {
-                return NewQualifiedNameError(args[0], err)
-            }
-
-            Client.Namespace = qualifiedName.GetNamespace()
-        }
-
-        options := &whisk.ActivationListOptions{
-            Name:  qualifiedName.GetEntityName(),
-            Limit: Flags.common.limit,
-            Skip:  Flags.common.skip,
-            Upto:  Flags.activation.upto,
-            Since: Flags.activation.since,
-            Docs:  Flags.common.full,
-        }
-
-        activations, _, err := Client.Activations.List(options)
-        if err != nil {
-            whisk.Debug(whisk.DbgError, "Client.Activations.List() error: %s\n", err)
-            errStr := wski18n.T("Unable to obtain the list of activations for namespace '{{.name}}': {{.err}}",
-                    map[string]interface{}{"name": getClientNamespace(), "err": err})
-            werr := whisk.MakeWskErrorFromWskError(errors.New(errStr), err, whisk.EXIT_CODE_ERR_GENERAL,
-                whisk.DISPLAY_MSG, whisk.NO_DISPLAY_USAGE)
-            return werr
-        }
-
-        // When the --full (URL contains "?docs=true") option is specified, display the entire activation details
-        if options.Docs == true {
-            printFullActivationList(activations)
-        } else {
-            printList(activations, false)   // Default sorting for Activations are by creation time, hence sortByName is always false
-        }
-
-        return nil
-    },
+	Use:           "list [NAMESPACE or NAME]",
+	Short:         wski18n.T("list activations"),
+	SilenceUsage:  true,
+	SilenceErrors: true,
+	PreRunE:       SetupClientConfig,
+	RunE: func(cmd *cobra.Command, args []string) error {
+		var err error
+		var qualifiedName = new(QualifiedName)
+
+		if whiskErr := CheckArgs(args, 0, 1, "Activation list",
+			wski18n.T("An optional namespace is the only valid argument.")); whiskErr != nil {
+			return whiskErr
+		}
+
+		// Specifying an activation item name filter is optional
+		if len(args) == 1 {
+			whisk.Debug(whisk.DbgInfo, "Activation item name filter '%s' provided\n", args[0])
+
+			if qualifiedName, err = NewQualifiedName(args[0]); err != nil {
+				return NewQualifiedNameError(args[0], err)
+			}
+
+			Client.Namespace = qualifiedName.GetNamespace()
+		}
+
+		options := &whisk.ActivationListOptions{
+			Name:  qualifiedName.GetEntityName(),
+			Limit: Flags.common.limit,
+			Skip:  Flags.common.skip,
+			Upto:  Flags.activation.upto,
+			Since: Flags.activation.since,
+			Docs:  Flags.common.full,
+		}
+
+		activations, _, err := Client.Activations.List(options)
+		if err != nil {
+			whisk.Debug(whisk.DbgError, "Client.Activations.List() error: %s\n", err)
+			errStr := wski18n.T("Unable to obtain the list of activations for namespace '{{.name}}': {{.err}}",
+				map[string]interface{}{"name": getClientNamespace(), "err": err})
+			werr := whisk.MakeWskErrorFromWskError(errors.New(errStr), err, whisk.EXIT_CODE_ERR_GENERAL,
+				whisk.DISPLAY_MSG, whisk.NO_DISPLAY_USAGE)
+			return werr
+		}
+
+		// When the --full (URL contains "?docs=true") option is specified, display the entire activation details
+		if options.Docs == true {
+			printFullActivationList(activations)
+		} else {
+			printList(activations, false) // Default sorting for Activations are by creation time, hence sortByName is always false
+		}
+
+		return nil
+	},
 }
 
 var activationGetCmd = &cobra.Command{
-    Use:   "get (ACTIVATION_ID | --last) [FIELD_FILTER]",
-    Short: wski18n.T("get activation"),
-    SilenceUsage:   true,
-    SilenceErrors:  true,
-    PreRunE: SetupClientConfig,
-    RunE: func(cmd *cobra.Command, args []string) error {
-        var field string
-        var err error
-
-        if args, err = lastFlag(args); err != nil {  // Checks if any errors occured in lastFlag(args)
-          whisk.Debug(whisk.DbgError, "lastFlag(%#v) failed: %s\n", args, err)
-          errStr := wski18n.T("Unable to get activation: {{.err}}",
-            map[string]interface{}{"err": err})
-          werr := whisk.MakeWskErrorFromWskError(errors.New(errStr), err, whisk.EXIT_CODE_ERR_GENERAL, whisk.DISPLAY_MSG, whisk.NO_DISPLAY_USAGE)
-          return werr
-        }
-        if whiskErr := CheckArgs(args, 1, 2, "Activation get",
-                wski18n.T("An activation ID is required.")); whiskErr != nil {
-            return whiskErr
-        }
-
-        if len(args) > 1 {
-            field = args[1]
-
-            if !fieldExists(&whisk.Activation{}, field) {
-                errMsg := wski18n.T("Invalid field filter '{{.arg}}'.", map[string]interface{}{"arg": field})
-                whiskErr := whisk.MakeWskError(errors.New(errMsg), whisk.EXIT_CODE_ERR_GENERAL,
-                    whisk.DISPLAY_MSG, whisk.NO_DISPLAY_USAGE)
-                return whiskErr
-            }
-        }
-
-        id := args[0]
-        activation, _, err := Client.Activations.Get(id)
-        if err != nil {
-            whisk.Debug(whisk.DbgError, "Client.Activations.Get(%s) failed: %s\n", id, err)
-            errStr := wski18n.T("Unable to get activation '{{.id}}': {{.err}}",
-                    map[string]interface{}{"id": id, "err": err})
-            werr := whisk.MakeWskErrorFromWskError(errors.New(errStr), err, whisk.EXIT_CODE_ERR_GENERAL, whisk.DISPLAY_MSG, whisk.NO_DISPLAY_USAGE)
-            return werr
-        }
-
-        if Flags.common.summary {
-            fmt.Printf(
-                wski18n.T("activation result for '/{{.namespace}}/{{.name}}' ({{.status}} at {{.time}})\n",
-                    map[string]interface{}{
-                        "namespace": activation.Namespace,
-                        "name": activation.Name,
-                        "status": activation.Response.Status,
-                        "time": time.Unix(activation.End/1000, 0)}))
-            printJSON(activation.Response.Result)
-        } else {
-
-            if len(field) > 0 {
-                fmt.Fprintf(color.Output,
-                    wski18n.T("{{.ok}} got activation {{.id}}, displaying field {{.field}}\n",
-                        map[string]interface{}{"ok": color.GreenString("ok:"), "id": boldString(id),
-                        "field": boldString(field)}))
-                printField(activation, field)
-            } else {
-                fmt.Fprintf(color.Output, wski18n.T("{{.ok}} got activation {{.id}}\n",
-                        map[string]interface{}{"ok": color.GreenString("ok:"), "id": boldString(id)}))
-                printJSON(activation)
-            }
-        }
-
-        return nil
-    },
+	Use:           "get (ACTIVATION_ID | --last) [FIELD_FILTER]",
+	Short:         wski18n.T("get activation"),
+	SilenceUsage:  true,
+	SilenceErrors: true,
+	PreRunE:       SetupClientConfig,
+	RunE: func(cmd *cobra.Command, args []string) error {
+		var field string
+		var err error
+
+		if args, err = lastFlag(args); err != nil { // Checks if any errors occured in lastFlag(args)
+			whisk.Debug(whisk.DbgError, "lastFlag(%#v) failed: %s\n", args, err)
+			errStr := wski18n.T("Unable to get activation: {{.err}}",
+				map[string]interface{}{"err": err})
+			werr := whisk.MakeWskErrorFromWskError(errors.New(errStr), err, whisk.EXIT_CODE_ERR_GENERAL, whisk.DISPLAY_MSG, whisk.NO_DISPLAY_USAGE)
+			return werr
+		}
+		if whiskErr := CheckArgs(args, 1, 2, "Activation get",
+			wski18n.T("An activation ID is required.")); whiskErr != nil {
+			return whiskErr
+		}
+
+		if len(args) > 1 {
+			field = args[1]
+
+			if !fieldExists(&whisk.Activation{}, field) {
+				errMsg := wski18n.T("Invalid field filter '{{.arg}}'.", map[string]interface{}{"arg": field})
+				whiskErr := whisk.MakeWskError(errors.New(errMsg), whisk.EXIT_CODE_ERR_GENERAL,
+					whisk.DISPLAY_MSG, whisk.NO_DISPLAY_USAGE)
+				return whiskErr
+			}
+		}
+
+		id := args[0]
+		activation, _, err := Client.Activations.Get(id)
+		if err != nil {
+			whisk.Debug(whisk.DbgError, "Client.Activations.Get(%s) failed: %s\n", id, err)
+			errStr := wski18n.T("Unable to get activation '{{.id}}': {{.err}}",
+				map[string]interface{}{"id": id, "err": err})
+			werr := whisk.MakeWskErrorFromWskError(errors.New(errStr), err, whisk.EXIT_CODE_ERR_GENERAL, whisk.DISPLAY_MSG, whisk.NO_DISPLAY_USAGE)
+			return werr
+		}
+
+		if Flags.common.summary {
+			fmt.Printf(
+				wski18n.T("activation result for '/{{.namespace}}/{{.name}}' ({{.status}} at {{.time}})\n",
+					map[string]interface{}{
+						"namespace": activation.Namespace,
+						"name":      activation.Name,
+						"status":    activation.Response.Status,
+						"time":      time.Unix(activation.End/1000, 0)}))
+			printJSON(activation.Response.Result)
+		} else {
+
+			if len(field) > 0 {
+				fmt.Fprintf(color.Output,
+					wski18n.T("{{.ok}} got activation {{.id}}, displaying field {{.field}}\n",
+						map[string]interface{}{"ok": color.GreenString("ok:"), "id": boldString(id),
+							"field": boldString(field)}))
+				printField(activation, field)
+			} else {
+				fmt.Fprintf(color.Output, wski18n.T("{{.ok}} got activation {{.id}}\n",
+					map[string]interface{}{"ok": color.GreenString("ok:"), "id": boldString(id)}))
+				printJSON(activation)
+			}
+		}
+
+		return nil
+	},
 }
 
 var activationLogsCmd = &cobra.Command{
-    Use:   "logs (ACTIVATION_ID | --last)",
-    Short: wski18n.T("get the logs of an activation"),
-    SilenceUsage:   true,
-    SilenceErrors:  true,
-    PreRunE: SetupClientConfig,
-    RunE: func(cmd *cobra.Command, args []string) error {
-        var err error
-
-        if args, err = lastFlag(args); err != nil {  // Checks if any errors occured in lastFlag(args)
-          whisk.Debug(whisk.DbgError, "lastFlag(%#v) failed: %s\n", args, err)
-          errStr := wski18n.T("Unable to get logs for activation: {{.err}}",
-            map[string]interface{}{"err": err})
-          werr := whisk.MakeWskErrorFromWskError(errors.New(errStr), err, whisk.EXIT_CODE_ERR_GENERAL, whisk.DISPLAY_MSG, whisk.NO_DISPLAY_USAGE)
-          return werr
-        }
-        if whiskErr := CheckArgs(args, 1, 1, "Activation logs",
-                wski18n.T("An activation ID is required.")); whiskErr != nil {
-            return whiskErr
-        }
-
-        id := args[0]
-        activation, _, err := Client.Activations.Logs(id)
-        if err != nil {
-            whisk.Debug(whisk.DbgError, "Client.Activations.Logs(%s) failed: %s\n", id, err)
-            errStr := wski18n.T("Unable to get logs for activation '{{.id}}': {{.err}}",
-                map[string]interface{}{"id": id, "err": err})
-            werr := whisk.MakeWskErrorFromWskError(errors.New(errStr), err, whisk.EXIT_CODE_ERR_GENERAL, whisk.DISPLAY_MSG, whisk.NO_DISPLAY_USAGE)
-            return werr
-        }
-
-        printActivationLogs(activation.Logs)
-        return nil
-    },
+	Use:           "logs (ACTIVATION_ID | --last)",
+	Short:         wski18n.T("get the logs of an activation"),
+	SilenceUsage:  true,
+	SilenceErrors: true,
+	PreRunE:       SetupClientConfig,
+	RunE: func(cmd *cobra.Command, args []string) error {
+		var err error
+
+		if args, err = lastFlag(args); err != nil { // Checks if any errors occured in lastFlag(args)
+			whisk.Debug(whisk.DbgError, "lastFlag(%#v) failed: %s\n", args, err)
+			errStr := wski18n.T("Unable to get logs for activation: {{.err}}",
+				map[string]interface{}{"err": err})
+			werr := whisk.MakeWskErrorFromWskError(errors.New(errStr), err, whisk.EXIT_CODE_ERR_GENERAL, whisk.DISPLAY_MSG, whisk.NO_DISPLAY_USAGE)
+			return werr
+		}
+		if whiskErr := CheckArgs(args, 1, 1, "Activation logs",
+			wski18n.T("An activation ID is required.")); whiskErr != nil {
+			return whiskErr
+		}
+
+		id := args[0]
+		activation, _, err := Client.Activations.Logs(id)
+		if err != nil {
+			whisk.Debug(whisk.DbgError, "Client.Activations.Logs(%s) failed: %s\n", id, err)
+			errStr := wski18n.T("Unable to get logs for activation '{{.id}}': {{.err}}",
+				map[string]interface{}{"id": id, "err": err})
+			werr := whisk.MakeWskErrorFromWskError(errors.New(errStr), err, whisk.EXIT_CODE_ERR_GENERAL, whisk.DISPLAY_MSG, whisk.NO_DISPLAY_USAGE)
+			return werr
+		}
+
+		printActivationLogs(activation.Logs)
+		return nil
+	},
 }
 
 var activationResultCmd = &cobra.Command{
-    Use:   "result (ACTIVATION_ID | --last)",
-    Short: "get the result of an activation",
-    SilenceUsage:   true,
-    SilenceErrors:  true,
-    PreRunE: SetupClientConfig,
-    RunE: func(cmd *cobra.Command, args []string) error {
-        var err error
-
-        if args, err = lastFlag(args); err != nil {  // Checks if any errors occured in lastFlag(args)
-          whisk.Debug(whisk.DbgError, "lastFlag(%#v) failed: %s\n", args, err)
-          errStr := wski18n.T("Unable to get result for activation: {{.err}}",
-            map[string]interface{}{"err": err})
-          werr := whisk.MakeWskErrorFromWskError(errors.New(errStr), err, whisk.EXIT_CODE_ERR_GENERAL, whisk.DISPLAY_MSG, whisk.NO_DISPLAY_USAGE)
-          return werr
-        }
-        if whiskErr := CheckArgs(args, 1, 1, "Activation result",
-                wski18n.T("An activation ID is required.")); whiskErr != nil {
-            return whiskErr
-        }
-
-        id := args[0]
-        result, _, err := Client.Activations.Result(id)
-        if err != nil {
-            whisk.Debug(whisk.DbgError, "Client.Activations.result(%s) failed: %s\n", id, err)
-            errStr := wski18n.T("Unable to get result for activation '{{.id}}': {{.err}}",
-                    map[string]interface{}{"id": id, "err": err})
-            werr := whisk.MakeWskErrorFromWskError(errors.New(errStr), err, whisk.EXIT_CODE_ERR_GENERAL, whisk.DISPLAY_MSG, whisk.NO_DISPLAY_USAGE)
-            return werr
-        }
-
-        printJSON(result.Result)
-        return nil
-    },
+	Use:           "result (ACTIVATION_ID | --last)",
+	Short:         "get the result of an activation",
+	SilenceUsage:  true,
+	SilenceErrors: true,
+	PreRunE:       SetupClientConfig,
+	RunE: func(cmd *cobra.Command, args []string) error {
+		var err error
+
+		if args, err = lastFlag(args); err != nil { // Checks if any errors occured in lastFlag(args)
+			whisk.Debug(whisk.DbgError, "lastFlag(%#v) failed: %s\n", args, err)
+			errStr := wski18n.T("Unable to get result for activation: {{.err}}",
+				map[string]interface{}{"err": err})
+			werr := whisk.MakeWskErrorFromWskError(errors.New(errStr), err, whisk.EXIT_CODE_ERR_GENERAL, whisk.DISPLAY_MSG, whisk.NO_DISPLAY_USAGE)
+			return werr
+		}
+		if whiskErr := CheckArgs(args, 1, 1, "Activation result",
+			wski18n.T("An activation ID is required.")); whiskErr != nil {
+			return whiskErr
+		}
+
+		id := args[0]
+		result, _, err := Client.Activations.Result(id)
+		if err != nil {
+			whisk.Debug(whisk.DbgError, "Client.Activations.result(%s) failed: %s\n", id, err)
+			errStr := wski18n.T("Unable to get result for activation '{{.id}}': {{.err}}",
+				map[string]interface{}{"id": id, "err": err})
+			werr := whisk.MakeWskErrorFromWskError(errors.New(errStr), err, whisk.EXIT_CODE_ERR_GENERAL, whisk.DISPLAY_MSG, whisk.NO_DISPLAY_USAGE)
+			return werr
+		}
+
+		printJSON(result.Result)
+		return nil
+	},
 }
 
 // lastFlag(args) retrieves the last activation with flag -l or --last
 // Param: Brings in []strings from args
 // Return: Returns a []string with the latest ID or the original args and any errors
 func lastFlag(args []string) ([]string, error) {
-    if Flags.activation.last {
-        options := &whisk.ActivationListOptions {
-            Limit: 1,
-            Skip: 0,
-        }
-        activations,_, err := Client.Activations.List(options)
-        if err != nil {    // Checks Activations.List for errors when retrieving latest activaiton
-            whisk.Debug(whisk.DbgError, "Client.Activations.List(%#v) error during lastFlag: %s\n", options, err)
-            return args, err
-        }
-        if len(activations) == 0 {    // Checks to to see if there are activations available
-            whisk.Debug(whisk.DbgError, "No activations found in activation list\n")
-            errStr := wski18n.T("Activation list does not contain any activations.")
-            whiskErr := whisk.MakeWskError(errors.New(errStr), whisk.EXIT_CODE_ERR_GENERAL, whisk.DISPLAY_MSG, whisk.DISPLAY_USAGE)
-            return args, whiskErr
-        }
-        if len(args) == 0 {
-            whisk.Debug(whisk.DbgInfo, "Appending most recent activation ID(%s) into args\n", activations[0].ActivationID)
-            args = append(args, activations[0].ActivationID)
-        } else {
-                whisk.Debug(whisk.DbgInfo, "Appending most recent activation ID(%s) into args\n", activations[0].ActivationID)
-                args = append(args, activations[0].ActivationID)
-                whisk.Debug(whisk.DbgInfo, "Allocating appended ID to correct position in args\n")
-                args[0], args[len(args) - 1] = args[len(args) - 1], args[0]    // IDs should be located at args[0], if 1 or more arguments are given ID has to be moved to args[0]
-        }
-    }
-    return args, nil
+	if Flags.activation.last {
+		options := &whisk.ActivationListOptions{
+			Limit: 1,
+			Skip:  0,
+		}
+		activations, _, err := Client.Activations.List(options)
+		if err != nil { // Checks Activations.List for errors when retrieving latest activaiton
+			whisk.Debug(whisk.DbgError, "Client.Activations.List(%#v) error during lastFlag: %s\n", options, err)
+			return args, err
+		}
+		if len(activations) == 0 { // Checks to to see if there are activations available
+			whisk.Debug(whisk.DbgError, "No activations found in activation list\n")
+			errStr := wski18n.T("Activation list does not contain any activations.")
+			whiskErr := whisk.MakeWskError(errors.New(errStr), whisk.EXIT_CODE_ERR_GENERAL, whisk.DISPLAY_MSG, whisk.DISPLAY_USAGE)
+			return args, whiskErr
+		}
+		if len(args) == 0 {
+			whisk.Debug(whisk.DbgInfo, "Appending most recent activation ID(%s) into args\n", activations[0].ActivationID)
+			args = append(args, activations[0].ActivationID)
+		} else {
+			whisk.Debug(whisk.DbgInfo, "Appending most recent activation ID(%s) into args\n", activations[0].ActivationID)
+			args = append(args, activations[0].ActivationID)
+			whisk.Debug(whisk.DbgInfo, "Allocating appended ID to correct position in args\n")
+			args[0], args[len(args)-1] = args[len(args)-1], args[0] // IDs should be located at args[0], if 1 or more arguments are given ID has to be moved to args[0]
+		}
+	}
+	return args, nil
 }
 
 var activationPollCmd = &cobra.Command{
-    Use:   "poll [ NAMESPACE | ACTION_NAME ]",
-    Short: wski18n.T("poll continuously for log messages from currently running actions"),
-    SilenceUsage:   true,
-    SilenceErrors:  true,
-    PreRunE: SetupClientConfig,
-    RunE: func(cmd *cobra.Command, args []string) error {
-        var name string
-        var pollSince int64 // Represents an instant in time (in milliseconds since Jan 1 1970)
-
-        if len(args) == 1 {
-            name = args[0]
-        } else if whiskErr := CheckArgs(args, 0, 1, "Activation poll",
-                wski18n.T("An optional namespace is the only valid argument.")); whiskErr != nil {
-            return whiskErr
-        }
-
-        c := make(chan os.Signal, 1)
-        signal.Notify(c, os.Interrupt)
-        signal.Notify(c, syscall.SIGTERM)
-        go func() {
-            <-c
-            fmt.Println(wski18n.T("Poll terminated"))
-            os.Exit(1)
-        }()
-        fmt.Println(wski18n.T("Enter Ctrl-c to exit."))
-
-        // Map used to track activation records already displayed to the console
-        reported := make(map[string]bool)
-
-        if Flags.activation.sinceSeconds+
-        Flags.activation.sinceMinutes+
-        Flags.activation.sinceHours+
-        Flags.activation.sinceDays ==
-        0 {
-            options := &whisk.ActivationListOptions{
-                Limit: 1,
-                Docs:  true,
-            }
-            activationList, _, err := Client.Activations.List(options)
-            if err != nil {
-                whisk.Debug(whisk.DbgWarn, "Client.Activations.List() error: %s\n", err)
-                whisk.Debug(whisk.DbgWarn, "Ignoring Client.Activations.List failure; polling for activations since 'now'\n")
-                pollSince = time.Now().Unix() * 1000    // Convert to milliseconds
-            } else {
-                if len(activationList) > 0 {
-                    lastActivation := activationList[0]     // Activation.Start is in milliseconds since Jan 1 1970
-                    pollSince = lastActivation.Start + 1    // Use it's start time as the basis of the polling
-                }
-            }
-        } else {
-            pollSince = time.Now().Unix() * 1000    // Convert to milliseconds
-
-            // ParseDuration takes a string like "2h45m15s"; create this duration string from the command arguments
-            durationStr := fmt.Sprintf("%dh%dm%ds",
-                Flags.activation.sinceHours + Flags.activation.sinceDays*24,
-                Flags.activation.sinceMinutes,
-                Flags.activation.sinceSeconds,
-            )
-            duration, err := time.ParseDuration(durationStr)
-            if err == nil {
-                pollSince = pollSince - duration.Nanoseconds()/1000/1000    // Convert to milliseconds
-            } else {
-                whisk.Debug(whisk.DbgError, "time.ParseDuration(%s) failure: %s\n", durationStr, err)
-            }
-        }
-
-        fmt.Printf(wski18n.T("Polling for activation logs\n"))
-        whisk.Verbose("Polling starts from %s\n", time.Unix(pollSince/1000, 0))
-        localStartTime := time.Now()
-
-        // Polling loop
-        for {
-            if Flags.activation.exit > 0 {
-                localDuration := time.Since(localStartTime)
-                if int(localDuration.Seconds()) > Flags.activation.exit {
-                    whisk.Debug(whisk.DbgInfo, "Poll time (%d seconds) expired; polling loop stopped\n", Flags.activation.exit)
-                    return nil
-                }
-            }
-            whisk.Verbose("Polling for activations since %s\n", time.Unix(pollSince/1000, 0))
-            options := &whisk.ActivationListOptions{
-                Name:  name,
-                Since: pollSince,
-                Docs:  true,
-                Limit: 0,
-                Skip: 0,
-            }
-
-            activations, _, err := Client.Activations.List(options)
-            if err != nil {
-                whisk.Debug(whisk.DbgWarn, "Client.Activations.List() error: %s\n", err)
-                whisk.Debug(whisk.DbgWarn, "Ignoring Client.Activations.List failure; continuing to poll for activations\n")
-                continue
-            }
-
-            for _, activation := range activations {
-                if reported[activation.ActivationID] == true {
-                    continue
-                } else {
-                    fmt.Printf(
-                        wski18n.T("\nActivation: '{{.name}}' ({{.id}})\n",
-                            map[string]interface{}{"name": activation.Name, "id": activation.ActivationID}))
-                    printJSON(activation.Logs)
-                    reported[activation.ActivationID] = true
-                }
-            }
-            time.Sleep(time.Second * 2)
-        }
-        return nil
-    },
+	Use:           "poll [ NAMESPACE | ACTION_NAME ]",
+	Short:         wski18n.T("poll continuously for log messages from currently running actions"),
+	SilenceUsage:  true,
+	SilenceErrors: true,
+	PreRunE:       SetupClientConfig,
+	RunE: func(cmd *cobra.Command, args []string) error {
+		var name string
+		var pollSince int64 // Represents an instant in time (in milliseconds since Jan 1 1970)
+
+		if len(args) == 1 {
+			name = args[0]
+		} else if whiskErr := CheckArgs(args, 0, 1, "Activation poll",
+			wski18n.T("An optional namespace is the only valid argument.")); whiskErr != nil {
+			return whiskErr
+		}
+
+		c := make(chan os.Signal, 1)
+		signal.Notify(c, os.Interrupt)
+		signal.Notify(c, syscall.SIGTERM)
+		go func() {
+			<-c
+			fmt.Println(wski18n.T("Poll terminated"))
+			os.Exit(1)
+		}()
+		fmt.Println(wski18n.T("Enter Ctrl-c to exit."))
+
+		// Map used to track activation records already displayed to the console
+		reported := make(map[string]bool)
+
+		if Flags.activation.sinceSeconds+
+			Flags.activation.sinceMinutes+
+			Flags.activation.sinceHours+
+			Flags.activation.sinceDays ==
+			0 {
+			options := &whisk.ActivationListOptions{
+				Limit: 1,
+				Docs:  true,
+			}
+			activationList, _, err := Client.Activations.List(options)
+			if err != nil {
+				whisk.Debug(whisk.DbgWarn, "Client.Activations.List() error: %s\n", err)
+				whisk.Debug(whisk.DbgWarn, "Ignoring Client.Activations.List failure; polling for activations since 'now'\n")
+				pollSince = time.Now().Unix() * 1000 // Convert to milliseconds
+			} else {
+				if len(activationList) > 0 {
+					lastActivation := activationList[0]  // Activation.Start is in milliseconds since Jan 1 1970
+					pollSince = lastActivation.Start + 1 // Use it's start time as the basis of the polling
+				}
+			}
+		} else {
+			pollSince = time.Now().Unix() * 1000 // Convert to milliseconds
+
+			// ParseDuration takes a string like "2h45m15s"; create this duration string from the command arguments
+			durationStr := fmt.Sprintf("%dh%dm%ds",
+				Flags.activation.sinceHours+Flags.activation.sinceDays*24,
+				Flags.activation.sinceMinutes,
+				Flags.activation.sinceSeconds,
+			)
+			duration, err := time.ParseDuration(durationStr)
+			if err == nil {
+				pollSince = pollSince - duration.Nanoseconds()/1000/1000 // Convert to milliseconds
+			} else {
+				whisk.Debug(whisk.DbgError, "time.ParseDuration(%s) failure: %s\n", durationStr, err)
+			}
+		}
+
+		fmt.Printf(wski18n.T("Polling for activation logs\n"))
+		whisk.Verbose("Polling starts from %s\n", time.Unix(pollSince/1000, 0))
+		localStartTime := time.Now()
+
+		// Polling loop
+		for {
+			if Flags.activation.exit > 0 {
+				localDuration := time.Since(localStartTime)
+				if int(localDuration.Seconds()) > Flags.activation.exit {
+					whisk.Debug(whisk.DbgInfo, "Poll time (%d seconds) expired; polling loop stopped\n", Flags.activation.exit)
+					return nil
+				}
+			}
+			whisk.Verbose("Polling for activations since %s\n", time.Unix(pollSince/1000, 0))
+			options := &whisk.ActivationListOptions{
+				Name:  name,
+				Since: pollSince,
+				Docs:  true,
+				Limit: 0,
+				Skip:  0,
+			}
+
+			activations, _, err := Client.Activations.List(options)
+			if err != nil {
+				whisk.Debug(whisk.DbgWarn, "Client.Activations.List() error: %s\n", err)
+				whisk.Debug(whisk.DbgWarn, "Ignoring Client.Activations.List failure; continuing to poll for activations\n")
+				continue
+			}
+
+			for _, activation := range activations {
+				if reported[activation.ActivationID] == true {
+					continue
+				} else {
+					fmt.Printf(
+						wski18n.T("\nActivation: '{{.name}}' ({{.id}})\n",
+							map[string]interface{}{"name": activation.Name, "id": activation.ActivationID}))
+					printJSON(activation.Logs)
+					reported[activation.ActivationID] = true
+				}
+			}
+			time.Sleep(time.Second * 2)
+		}
+		return nil
+	},
 }
 
 func init() {
-    activationListCmd.Flags().IntVarP(&Flags.common.skip, "skip", "s", 0, wski18n.T("exclude the first `SKIP` number of activations from the result"))
-    activationListCmd.Flags().IntVarP(&Flags.common.limit, "limit", "l", DEFAULT_ACTIVATION_LIMIT, wski18n.T("only return `LIMIT` number of activations from the collection with a maximum LIMIT of {{.max}} activations",
-        map[string]interface{}{"max": MAX_ACTIVATION_LIMIT}))
-    activationListCmd.Flags().BoolVarP(&Flags.common.full, "full", "f", false, wski18n.T("include full activation description"))
-    activationListCmd.Flags().Int64Var(&Flags.activation.upto, "upto", 0, wski18n.T("return activations with timestamps earlier than `UPTO`; measured in milliseconds since Th, 01, Jan 1970"))
-    activationListCmd.Flags().Int64Var(&Flags.activation.since, "since", 0, wski18n.T("return activations with timestamps later than `SINCE`; measured in milliseconds since Th, 01, Jan 1970"))
-
-    activationGetCmd.Flags().BoolVarP(&Flags.common.summary, "summary", "s", false, wski18n.T("summarize activation details"))
-    activationGetCmd.Flags().BoolVarP(&Flags.activation.last, "last", "l", false, wski18n.T("retrieves the last activation"))
-
-    activationLogsCmd.Flags().BoolVarP(&Flags.activation.last, "last", "l", false, wski18n.T("retrieves the last activation"))
-    activationLogsCmd.Flags().BoolVarP(&Flags.activation.strip, "strip", "r", false, wski18n.T("strip timestamp and stream information"))
-    activationResultCmd.Flags().BoolVarP(&Flags.activation.last, "last", "l", false, wski18n.T("retrieves the last activation"))
-
-    activationPollCmd.Flags().IntVarP(&Flags.activation.exit, "exit", "e", 0, wski18n.T("stop polling after `SECONDS` seconds"))
-    activationPollCmd.Flags().IntVar(&Flags.activation.sinceSeconds, "since-seconds", 0, wski18n.T("start polling for activations `SECONDS` seconds ago"))
-    activationPollCmd.Flags().IntVar(&Flags.activation.sinceMinutes, "since-minutes", 0, wski18n.T("start polling for activations `MINUTES` minutes ago"))
-    activationPollCmd.Flags().IntVar(&Flags.activation.sinceHours, "since-hours", 0, wski18n.T("start polling for activations `HOURS` hours ago"))
-    activationPollCmd.Flags().IntVar(&Flags.activation.sinceDays, "since-days", 0, wski18n.T("start polling for activations `DAYS` days ago"))
-
-    activationCmd.AddCommand(
-        activationListCmd,
-        activationGetCmd,
-        activationLogsCmd,
-        activationResultCmd,
-        activationPollCmd,
-    )
+	activationListCmd.Flags().IntVarP(&Flags.common.skip, "skip", "s", 0, wski18n.T("exclude the first `SKIP` number of activations from the result"))
+	activationListCmd.Flags().IntVarP(&Flags.common.limit, "limit", "l", DEFAULT_ACTIVATION_LIMIT, wski18n.T("only return `LIMIT` number of activations from the collection with a maximum LIMIT of {{.max}} activations",
+		map[string]interface{}{"max": MAX_ACTIVATION_LIMIT}))
+	activationListCmd.Flags().BoolVarP(&Flags.common.full, "full", "f", false, wski18n.T("include full activation description"))
+	activationListCmd.Flags().Int64Var(&Flags.activation.upto, "upto", 0, wski18n.T("return activations with timestamps earlier than `UPTO`; measured in milliseconds since Th, 01, Jan 1970"))
+	activationListCmd.Flags().Int64Var(&Flags.activation.since, "since", 0, wski18n.T("return activations with timestamps later than `SINCE`; measured in milliseconds since Th, 01, Jan 1970"))
+
+	activationGetCmd.Flags().BoolVarP(&Flags.common.summary, "summary", "s", false, wski18n.T("summarize activation details"))
+	activationGetCmd.Flags().BoolVarP(&Flags.activation.last, "last", "l", false, wski18n.T("retrieves the last activation"))
+
+	activationLogsCmd.Flags().BoolVarP(&Flags.activation.last, "last", "l", false, wski18n.T("retrieves the last activation"))
+	activationLogsCmd.Flags().BoolVarP(&Flags.activation.strip, "strip", "r", false, wski18n.T("strip timestamp and stream information"))
+	activationResultCmd.Flags().BoolVarP(&Flags.activation.last, "last", "l", false, wski18n.T("retrieves the last activation"))
+
+	activationPollCmd.Flags().IntVarP(&Flags.activation.exit, "exit", "e", 0, wski18n.T("stop polling after `SECONDS` seconds"))
+	activationPollCmd.Flags().IntVar(&Flags.activation.sinceSeconds, "since-seconds", 0, wski18n.T("start polling for activations `SECONDS` seconds ago"))
+	activationPollCmd.Flags().IntVar(&Flags.activation.sinceMinutes, "since-minutes", 0, wski18n.T("start polling for activations `MINUTES` minutes ago"))
+	activationPollCmd.Flags().IntVar(&Flags.activation.sinceHours, "since-hours", 0, wski18n.T("start polling for activations `HOURS` hours ago"))
+	activationPollCmd.Flags().IntVar(&Flags.activation.sinceDays, "since-days", 0, wski18n.T("start polling for activations `DAYS` days ago"))
+
+	activationCmd.AddCommand(
+		activationListCmd,
+		activationGetCmd,
+		activationLogsCmd,
+		activationResultCmd,
+		activationPollCmd,
+	)
 }
diff --git a/commands/api.go b/commands/api.go
index f4bc225..50b8d89 100644
--- a/commands/api.go
+++ b/commands/api.go
@@ -18,587 +18,586 @@
 package commands
 
 import (
-    "bytes"
-    "bufio"
-    "errors"
-    "fmt"
-    "reflect"
-    "strconv"
-    "strings"
-
-    "github.com/apache/incubator-openwhisk-client-go/whisk"
-    "github.com/apache/incubator-openwhisk-cli/wski18n"
-
-    "github.com/fatih/color"
-    "github.com/ghodss/yaml"
-    "github.com/spf13/cobra"
-    "encoding/json"
+	"bufio"
+	"bytes"
+	"errors"
+	"fmt"
+	"reflect"
+	"strconv"
+	"strings"
+
+	"github.com/apache/incubator-openwhisk-cli/wski18n"
+	"github.com/apache/incubator-openwhisk-client-go/whisk"
+
+	"encoding/json"
+	"github.com/fatih/color"
+	"github.com/ghodss/yaml"
+	"github.com/spf13/cobra"
 )
 
 const (
-    yamlFileExtension = "yaml"
-    ymlFileExtension = "yml"
+	yamlFileExtension = "yaml"
+	ymlFileExtension  = "yml"
 
-    formatOptionYaml = "yaml"
-    formatOptionJson = "json"
+	formatOptionYaml = "yaml"
+	formatOptionJson = "json"
 )
 
 var apiCmd = &cobra.Command{
-    Use:   "api",
-    Short: wski18n.T("work with APIs"),
+	Use:   "api",
+	Short: wski18n.T("work with APIs"),
 }
 
 var fmtString = "%-30s %7s %20s  %s\n"
 
 func IsValidApiVerb(verb string) (error, bool) {
-    // Is the API verb valid?
-    if _, ok := whisk.ApiVerbs[strings.ToUpper(verb)]; !ok {
-        whisk.Debug(whisk.DbgError, "Invalid API verb: '%s'\n", verb)
-        errMsg := wski18n.T("'{{.verb}}' is not a valid API verb.  Valid values are: {{.verbs}}",
-                map[string]interface{}{
-                    "verb": verb,
-                    "verbs": reflect.ValueOf(whisk.ApiVerbs).MapKeys()})
-        whiskErr := whisk.MakeWskError(errors.New(errMsg), whisk.EXIT_CODE_ERR_GENERAL,
-            whisk.DISPLAY_MSG, whisk.DISPLAY_USAGE)
-        return whiskErr, false
-    }
-    return nil, true
+	// Is the API verb valid?
+	if _, ok := whisk.ApiVerbs[strings.ToUpper(verb)]; !ok {
+		whisk.Debug(whisk.DbgError, "Invalid API verb: '%s'\n", verb)
+		errMsg := wski18n.T("'{{.verb}}' is not a valid API verb.  Valid values are: {{.verbs}}",
+			map[string]interface{}{
+				"verb":  verb,
+				"verbs": reflect.ValueOf(whisk.ApiVerbs).MapKeys()})
+		whiskErr := whisk.MakeWskError(errors.New(errMsg), whisk.EXIT_CODE_ERR_GENERAL,
+			whisk.DISPLAY_MSG, whisk.DISPLAY_USAGE)
+		return whiskErr, false
+	}
+	return nil, true
 }
 
 func hasPathPrefix(path string) (error, bool) {
-    if (! strings.HasPrefix(path, "/")) {
-        whisk.Debug(whisk.DbgError, "path does not begin with '/': '%s'\n", path)
-        errMsg := wski18n.T("'{{.path}}' must begin with '/'.",
-                map[string]interface{}{
-                    "path": path,
-                })
-        whiskErr := whisk.MakeWskError(errors.New(errMsg), whisk.EXIT_CODE_ERR_GENERAL,
-            whisk.DISPLAY_MSG, whisk.DISPLAY_USAGE)
-        return whiskErr, false
-    }
-    return nil, true
+	if !strings.HasPrefix(path, "/") {
+		whisk.Debug(whisk.DbgError, "path does not begin with '/': '%s'\n", path)
+		errMsg := wski18n.T("'{{.path}}' must begin with '/'.",
+			map[string]interface{}{
+				"path": path,
+			})
+		whiskErr := whisk.MakeWskError(errors.New(errMsg), whisk.EXIT_CODE_ERR_GENERAL,
+			whisk.DISPLAY_MSG, whisk.DISPLAY_USAGE)
+		return whiskErr, false
+	}
+	return nil, true
 }
 
 func isValidBasepath(basepath string) (error, bool) {
-    if whiskerr, ok := hasPathPrefix(basepath); !ok {
-        return whiskerr, false
-    }
-    return nil, true
+	if whiskerr, ok := hasPathPrefix(basepath); !ok {
+		return whiskerr, false
+	}
+	return nil, true
 }
 
 func isValidRelpath(relpath string) (error, bool) {
-    if whiskerr, ok := hasPathPrefix(relpath); !ok {
-        return whiskerr, false
-    }
-    return nil, true
+	if whiskerr, ok := hasPathPrefix(relpath); !ok {
+		return whiskerr, false
+	}
+	return nil, true
 }
 
 /*
  * Pull the managedUrl (external API URL) from the API configuration
  */
 func getManagedUrl(api *whisk.RetApi, relpath string, operation string) (url string) {
-    baseUrl := strings.TrimSuffix(api.BaseUrl, "/")
-    whisk.Debug(whisk.DbgInfo, "getManagedUrl: baseUrl = '%s', relpath = '%s', operation = '%s'\n", baseUrl, relpath, operation)
-    for path, _ := range api.Swagger.Paths {
-        whisk.Debug(whisk.DbgInfo, "getManagedUrl: comparing api relpath: '%s'\n", path)
-        if (path == relpath) {
-            whisk.Debug(whisk.DbgInfo, "getManagedUrl: relpath matches '%s'\n", relpath)
-            for op, _  := range api.Swagger.Paths[path] {
-                whisk.Debug(whisk.DbgInfo, "getManagedUrl: comparing operation: '%s'\n", op)
-                if (strings.ToLower(op) == strings.ToLower(operation)) {
-                    whisk.Debug(whisk.DbgInfo, "getManagedUrl: operation matches: '%s'\n", operation)
-                    url = baseUrl+path
-                }
-            }
-        }
-    }
-    return url
+	baseUrl := strings.TrimSuffix(api.BaseUrl, "/")
+	whisk.Debug(whisk.DbgInfo, "getManagedUrl: baseUrl = '%s', relpath = '%s', operation = '%s'\n", baseUrl, relpath, operation)
+	for path, _ := range api.Swagger.Paths {
+		whisk.Debug(whisk.DbgInfo, "getManagedUrl: comparing api relpath: '%s'\n", path)
+		if path == relpath {
+			whisk.Debug(whisk.DbgInfo, "getManagedUrl: relpath matches '%s'\n", relpath)
+			for op, _ := range api.Swagger.Paths[path] {
+				whisk.Debug(whisk.DbgInfo, "getManagedUrl: comparing operation: '%s'\n", op)
+				if strings.ToLower(op) == strings.ToLower(operation) {
+					whisk.Debug(whisk.DbgInfo, "getManagedUrl: operation matches: '%s'\n", operation)
+					url = baseUrl + path
+				}
+			}
+		}
+	}
+	return url
 }
 
 //////////////
 // Commands //
 //////////////
 var apiCreateCmd = &cobra.Command{
-    Use:           "create ([BASE_PATH] API_PATH API_VERB ACTION] | --config-file CFG_FILE) ",
-    Short:         wski18n.T("create a new API"),
-    SilenceUsage:  true,
-    SilenceErrors: true,
-    PreRunE:       SetupClientConfig,
-    RunE: func(cmd *cobra.Command, args []string) error {
-        var api *whisk.Api
-        var err error
-        var qname = new(QualifiedName)
-
-        if (len(args) == 0 && Flags.api.configfile == "") {
-            whisk.Debug(whisk.DbgError, "No swagger file and no arguments\n")
-            errMsg := wski18n.T("Invalid argument(s). Specify a swagger file or specify an API base path with an API path, an API verb, and an action name.")
-            whiskErr := whisk.MakeWskError(errors.New(errMsg), whisk.EXIT_CODE_ERR_GENERAL,
-                whisk.DISPLAY_MSG, whisk.DISPLAY_USAGE)
-            return whiskErr
-        } else if (len(args) == 0 && Flags.api.configfile != "") {
-            api, err = parseSwaggerApi()
-            if err != nil {
-                whisk.Debug(whisk.DbgError, "parseSwaggerApi() error: %s\n", err)
-                errMsg := wski18n.T("Unable to parse swagger file: {{.err}}", map[string]interface{}{"err": err})
-                whiskErr := whisk.MakeWskErrorFromWskError(errors.New(errMsg), err, whisk.EXIT_CODE_ERR_GENERAL,
-                    whisk.DISPLAY_MSG, whisk.DISPLAY_USAGE)
-                return whiskErr
-            }
-        } else {
-            if whiskErr := CheckArgs(args, 3, 4, "Api create",
-                wski18n.T("Specify a swagger file or specify an API base path with an API path, an API verb, and an action name.")); whiskErr != nil {
-                return whiskErr
-            }
-            api, qname, err = parseApi(cmd, args)
-            if err != nil {
-                whisk.Debug(whisk.DbgError, "parseApi(%s, %s) error: %s\n", cmd, args, err)
-                errMsg := wski18n.T("Unable to parse api command arguments: {{.err}}",
-                    map[string]interface{}{"err": err})
-                whiskErr := whisk.MakeWskErrorFromWskError(errors.New(errMsg), err, whisk.EXIT_CODE_ERR_GENERAL,
-                    whisk.DISPLAY_MSG, whisk.DISPLAY_USAGE)
-                return whiskErr
-            }
-
-            // Confirm that the specified action is a web-action
-            err = isWebAction(Client, *qname)
-            if err != nil {
-                whisk.Debug(whisk.DbgError, "isWebAction(%v) is false: %s\n", qname, err)
-                whiskErr := whisk.MakeWskError(err, whisk.EXIT_CODE_ERR_GENERAL, whisk.DISPLAY_MSG, whisk.DISPLAY_USAGE)
-                return whiskErr
-            }
-        }
-
-        apiCreateReq := new(whisk.ApiCreateRequest)
-        apiCreateReq.ApiDoc = api
-
-        apiCreateReqOptions := new(whisk.ApiCreateRequestOptions)
-        if apiCreateReqOptions.SpaceGuid, err = getUserContextId(); err != nil {
-            return err
-        }
-        if apiCreateReqOptions.AccessToken, err = getAccessToken(); err != nil {
-            return err
-        }
-        apiCreateReqOptions.ResponseType = Flags.api.resptype
-        whisk.Debug(whisk.DbgInfo, "AccessToken: %s\nSpaceGuid: %s\nResponsType: %s",
-            apiCreateReqOptions.AccessToken, apiCreateReqOptions.SpaceGuid, apiCreateReqOptions.ResponseType)
-
-        retApi, _, err := Client.Apis.Insert(apiCreateReq, apiCreateReqOptions, whisk.DoNotOverwrite)
-        if err != nil {
-            whisk.Debug(whisk.DbgError, "Client.Apis.Insert(%#v, false) error: %s\n", api, err)
-            errMsg := wski18n.T("Unable to create API: {{.err}}", map[string]interface{}{"err": err})
-            whiskErr := whisk.MakeWskError(errors.New(errMsg), whisk.EXIT_CODE_ERR_GENERAL,
-                whisk.DISPLAY_MSG, whisk.NO_DISPLAY_USAGE)
-            return whiskErr
-        }
-
-        if (api.Swagger == "") {
-            baseUrl := retApi.BaseUrl
-            fmt.Fprintf(color.Output,
-                wski18n.T("{{.ok}} created API {{.path}} {{.verb}} for action {{.name}}\n{{.fullpath}}\n",
-                    map[string]interface{}{
-                        "ok": color.GreenString("ok:"),
-                        "path": strings.TrimSuffix(api.GatewayBasePath, "/")+api.GatewayRelPath,
-                        "verb": api.GatewayMethod,
-                        "name": boldString("/"+api.Action.Namespace+"/"+api.Action.Name),
-                        "fullpath": strings.TrimSuffix(baseUrl, "/")+api.GatewayRelPath,
-                    }))
-        } else {
-            whisk.Debug(whisk.DbgInfo, "Processing swagger based create API response\n")
-            baseUrl := retApi.BaseUrl
-            for path, _ := range retApi.Swagger.Paths {
-                managedUrl := strings.TrimSuffix(baseUrl, "/")+path
-                whisk.Debug(whisk.DbgInfo, "Managed path: '%s'\n",managedUrl)
-                for op, opv  := range retApi.Swagger.Paths[path] {
-                    whisk.Debug(whisk.DbgInfo, "Path operation: '%s'\n", op)
-                    var fqActionName string
-                    if (opv.XOpenWhisk == nil) {
-                        fqActionName = ""
-                    } else if (len(opv.XOpenWhisk.Package) > 0) {
-                        fqActionName = "/"+opv.XOpenWhisk.Namespace+"/"+opv.XOpenWhisk.Package+"/"+opv.XOpenWhisk.ActionName
-                    } else {
-                        fqActionName = "/"+opv.XOpenWhisk.Namespace+"/"+opv.XOpenWhisk.ActionName
-                    }
-
-                    whisk.Debug(whisk.DbgInfo, "baseUrl '%s'  Path '%s'  Path obj %+v\n", baseUrl, path, opv)
-                    if len(fqActionName) > 0 {
-                        fmt.Fprintf(color.Output,
-                            wski18n.T("{{.ok}} created API {{.path}} {{.verb}} for action {{.name}}\n{{.fullpath}}\n",
-                                map[string]interface{}{
-                                    "ok": color.GreenString("ok:"),
-                                    "path": strings.TrimSuffix(retApi.Swagger.BasePath, "/") + path,
-                                    "verb": op,
-                                    "name": boldString(fqActionName),
-                                    "fullpath": managedUrl,
-                                }))
-                    } else {
-                        fmt.Fprintf(color.Output,
-                            wski18n.T("{{.ok}} created API {{.path}} {{.verb}}\n{{.fullpath}}\n",
-                                map[string]interface{}{
-                                    "ok": color.GreenString("ok:"),
-                                    "path": strings.TrimSuffix(retApi.Swagger.BasePath, "/") + path,
-                                    "verb": op,
-                                    "fullpath": managedUrl,
-                                }))
-                    }
-                }
-            }
-        }
-
-
-        return nil
-    },
+	Use:           "create ([BASE_PATH] API_PATH API_VERB ACTION] | --config-file CFG_FILE) ",
+	Short:         wski18n.T("create a new API"),
+	SilenceUsage:  true,
+	SilenceErrors: true,
+	PreRunE:       SetupClientConfig,
+	RunE: func(cmd *cobra.Command, args []string) error {
+		var api *whisk.Api
+		var err error
+		var qname = new(QualifiedName)
+
+		if len(args) == 0 && Flags.api.configfile == "" {
+			whisk.Debug(whisk.DbgError, "No swagger file and no arguments\n")
+			errMsg := wski18n.T("Invalid argument(s). Specify a swagger file or specify an API base path with an API path, an API verb, and an action name.")
+			whiskErr := whisk.MakeWskError(errors.New(errMsg), whisk.EXIT_CODE_ERR_GENERAL,
+				whisk.DISPLAY_MSG, whisk.DISPLAY_USAGE)
+			return whiskErr
+		} else if len(args) == 0 && Flags.api.configfile != "" {
+			api, err = parseSwaggerApi()
+			if err != nil {
+				whisk.Debug(whisk.DbgError, "parseSwaggerApi() error: %s\n", err)
+				errMsg := wski18n.T("Unable to parse swagger file: {{.err}}", map[string]interface{}{"err": err})
+				whiskErr := whisk.MakeWskErrorFromWskError(errors.New(errMsg), err, whisk.EXIT_CODE_ERR_GENERAL,
+					whisk.DISPLAY_MSG, whisk.DISPLAY_USAGE)
+				return whiskErr
+			}
+		} else {
+			if whiskErr := CheckArgs(args, 3, 4, "Api create",
+				wski18n.T("Specify a swagger file or specify an API base path with an API path, an API verb, and an action name.")); whiskErr != nil {
+				return whiskErr
+			}
+			api, qname, err = parseApi(cmd, args)
+			if err != nil {
+				whisk.Debug(whisk.DbgError, "parseApi(%s, %s) error: %s\n", cmd, args, err)
+				errMsg := wski18n.T("Unable to parse api command arguments: {{.err}}",
+					map[string]interface{}{"err": err})
+				whiskErr := whisk.MakeWskErrorFromWskError(errors.New(errMsg), err, whisk.EXIT_CODE_ERR_GENERAL,
+					whisk.DISPLAY_MSG, whisk.DISPLAY_USAGE)
+				return whiskErr
+			}
+
+			// Confirm that the specified action is a web-action
+			err = isWebAction(Client, *qname)
+			if err != nil {
+				whisk.Debug(whisk.DbgError, "isWebAction(%v) is false: %s\n", qname, err)
+				whiskErr := whisk.MakeWskError(err, whisk.EXIT_CODE_ERR_GENERAL, whisk.DISPLAY_MSG, whisk.DISPLAY_USAGE)
+				return whiskErr
+			}
+		}
+
+		apiCreateReq := new(whisk.ApiCreateRequest)
+		apiCreateReq.ApiDoc = api
+
+		apiCreateReqOptions := new(whisk.ApiCreateRequestOptions)
+		if apiCreateReqOptions.SpaceGuid, err = getUserContextId(); err != nil {
+			return err
+		}
+		if apiCreateReqOptions.AccessToken, err = getAccessToken(); err != nil {
+			return err
+		}
+		apiCreateReqOptions.ResponseType = Flags.api.resptype
+		whisk.Debug(whisk.DbgInfo, "AccessToken: %s\nSpaceGuid: %s\nResponsType: %s",
+			apiCreateReqOptions.AccessToken, apiCreateReqOptions.SpaceGuid, apiCreateReqOptions.ResponseType)
+
+		retApi, _, err := Client.Apis.Insert(apiCreateReq, apiCreateReqOptions, whisk.DoNotOverwrite)
+		if err != nil {
+			whisk.Debug(whisk.DbgError, "Client.Apis.Insert(%#v, false) error: %s\n", api, err)
+			errMsg := wski18n.T("Unable to create API: {{.err}}", map[string]interface{}{"err": err})
+			whiskErr := whisk.MakeWskError(errors.New(errMsg), whisk.EXIT_CODE_ERR_GENERAL,
+				whisk.DISPLAY_MSG, whisk.NO_DISPLAY_USAGE)
+			return whiskErr
+		}
+
+		if api.Swagger == "" {
+			baseUrl := retApi.BaseUrl
+			fmt.Fprintf(color.Output,
+				wski18n.T("{{.ok}} created API {{.path}} {{.verb}} for action {{.name}}\n{{.fullpath}}\n",
+					map[string]interface{}{
+						"ok":       color.GreenString("ok:"),
+						"path":     strings.TrimSuffix(api.GatewayBasePath, "/") + api.GatewayRelPath,
+						"verb":     api.GatewayMethod,
+						"name":     boldString("/" + api.Action.Namespace + "/" + api.Action.Name),
+						"fullpath": strings.TrimSuffix(baseUrl, "/") + api.GatewayRelPath,
+					}))
+		} else {
+			whisk.Debug(whisk.DbgInfo, "Processing swagger based create API response\n")
+			baseUrl := retApi.BaseUrl
+			for path, _ := range retApi.Swagger.Paths {
+				managedUrl := strings.TrimSuffix(baseUrl, "/") + path
+				whisk.Debug(whisk.DbgInfo, "Managed path: '%s'\n", managedUrl)
+				for op, opv := range retApi.Swagger.Paths[path] {
+					whisk.Debug(whisk.DbgInfo, "Path operation: '%s'\n", op)
+					var fqActionName string
+					if opv.XOpenWhisk == nil {
+						fqActionName = ""
+					} else if len(opv.XOpenWhisk.Package) > 0 {
+						fqActionName = "/" + opv.XOpenWhisk.Namespace + "/" + opv.XOpenWhisk.Package + "/" + opv.XOpenWhisk.ActionName
+					} else {
+						fqActionName = "/" + opv.XOpenWhisk.Namespace + "/" + opv.XOpenWhisk.ActionName
+					}
+
+					whisk.Debug(whisk.DbgInfo, "baseUrl '%s'  Path '%s'  Path obj %+v\n", baseUrl, path, opv)
+					if len(fqActionName) > 0 {
+						fmt.Fprintf(color.Output,
+							wski18n.T("{{.ok}} created API {{.path}} {{.verb}} for action {{.name}}\n{{.fullpath}}\n",
+								map[string]interface{}{
+									"ok":       color.GreenString("ok:"),
+									"path":     strings.TrimSuffix(retApi.Swagger.BasePath, "/") + path,
+									"verb":     op,
+									"name":     boldString(fqActionName),
+									"fullpath": managedUrl,
+								}))
+					} else {
+						fmt.Fprintf(color.Output,
+							wski18n.T("{{.ok}} created API {{.path}} {{.verb}}\n{{.fullpath}}\n",
+								map[string]interface{}{
+									"ok":       color.GreenString("ok:"),
+									"path":     strings.TrimSuffix(retApi.Swagger.BasePath, "/") + path,
+									"verb":     op,
+									"fullpath": managedUrl,
+								}))
+					}
+				}
+			}
+		}
+
+		return nil
+	},
 }
 
 var apiGetCmd = &cobra.Command{
-    Use:           "get BASE_PATH | API_NAME",
-    Short:         wski18n.T("get API details"),
-    SilenceUsage:  true,
-    SilenceErrors: true,
-    PreRunE:       SetupClientConfig,
-    RunE: func(cmd *cobra.Command, args []string) error {
-        var err error
-        var isBasePathArg bool = true
-
-        if whiskErr := CheckArgs(args, 1, 1, "Api get",
-            wski18n.T("An API base path or API name is required.")); whiskErr != nil {
-            return whiskErr
-        }
-
-        if ( cmd.LocalFlags().Changed("format") &&
-             strings.ToLower(Flags.common.format) != formatOptionYaml &&
-             strings.ToLower(Flags.common.format) != formatOptionJson) {
-            errMsg := wski18n.T("Invalid format type: {{.type}}", map[string]interface{}{"type": Flags.common.format})
-            whiskErr := whisk.MakeWskError(errors.New(errMsg), whisk.EXIT_CODE_ERR_GENERAL,
-                whisk.DISPLAY_MSG, whisk.NO_DISPLAY_USAGE)
-            return whiskErr
-        }
-
-        apiGetReq := new(whisk.ApiGetRequest)
-        apiGetReqOptions := new(whisk.ApiGetRequestOptions)
-        apiGetReqOptions.ApiBasePath = args[0]
-        if apiGetReqOptions.SpaceGuid, err = getUserContextId(); err != nil {
-            return err
-        }
-        if apiGetReqOptions.AccessToken, err = getAccessToken(); err != nil {
-            return err
-        }
-
-        retApi, _, err := Client.Apis.Get(apiGetReq, apiGetReqOptions)
-        if err != nil {
-            whisk.Debug(whisk.DbgError, "Client.Apis.Get(%#v, %#v) error: %s\n", apiGetReq, apiGetReqOptions, err)
-            errMsg := wski18n.T("Unable to get API '{{.name}}': {{.err}}", map[string]interface{}{"name": args[0], "err": err})
-            whiskErr := whisk.MakeWskError(errors.New(errMsg), whisk.EXIT_CODE_ERR_GENERAL,
-                whisk.DISPLAY_MSG, whisk.NO_DISPLAY_USAGE)
-            return whiskErr
-        }
-        whisk.Debug(whisk.DbgInfo, "Client.Apis.Get returned: %#v\n", retApi)
-
-        var displayResult interface{} = nil
-        if (Flags.common.detail) {
-            if (retApi.Apis != nil && len(retApi.Apis) > 0 &&
-            retApi.Apis[0].ApiValue != nil) {
-                displayResult = retApi.Apis[0].ApiValue
-            } else {
-                whisk.Debug(whisk.DbgError, "No result object returned\n")
-            }
-        } else {
-            if (retApi.Apis != nil && len(retApi.Apis) > 0 &&
-            retApi.Apis[0].ApiValue != nil &&
-            retApi.Apis[0].ApiValue.Swagger != nil) {
-                displayResult = retApi.Apis[0].ApiValue.Swagger
-            } else {
-                whisk.Debug(whisk.DbgError, "No swagger returned\n")
-            }
-        }
-        if (displayResult == nil) {
-            var errMsg string
-            if (isBasePathArg) {
-                errMsg = wski18n.T("API does not exist for basepath {{.basepath}}",
-                    map[string]interface{}{"basepath": args[0]})
-            } else {
-                errMsg = wski18n.T("API does not exist for API name {{.apiname}}",
-                    map[string]interface{}{"apiname": args[0]})
-            }
-
-            whiskErr := whisk.MakeWskError(errors.New(errMsg), whisk.EXIT_CODE_ERR_GENERAL,
-                whisk.DISPLAY_MSG, whisk.NO_DISPLAY_USAGE)
-            return whiskErr
-        }
-
-        if ( cmd.LocalFlags().Changed("format") && strings.ToLower(Flags.common.format) == formatOptionYaml ) {
-            var jsonOutputBuffer bytes.Buffer
-            var jsonOutputWriter = bufio.NewWriter(&jsonOutputBuffer)
-            printJSON(displayResult, jsonOutputWriter)
-            jsonOutputWriter.Flush()
-            yamlbytes, err := yaml.JSONToYAML(jsonOutputBuffer.Bytes())
-            if err != nil {
-                whisk.Debug(whisk.DbgError, "yaml.JSONToYAML() error: %s\n", err)
-                errMsg := wski18n.T("Unable to convert API into YAML: {{.err}}", map[string]interface{}{"err": err})
-                whiskErr := whisk.MakeWskError(errors.New(errMsg), whisk.EXIT_CODE_ERR_GENERAL,
-                    whisk.DISPLAY_MSG, whisk.NO_DISPLAY_USAGE)
-                return whiskErr
-            }
-            fmt.Println(string(yamlbytes))
-        } else {
-            printJSON(displayResult)
-        }
-
-        return nil
-    },
+	Use:           "get BASE_PATH | API_NAME",
+	Short:         wski18n.T("get API details"),
+	SilenceUsage:  true,
+	SilenceErrors: true,
+	PreRunE:       SetupClientConfig,
+	RunE: func(cmd *cobra.Command, args []string) error {
+		var err error
+		var isBasePathArg bool = true
+
+		if whiskErr := CheckArgs(args, 1, 1, "Api get",
+			wski18n.T("An API base path or API name is required.")); whiskErr != nil {
+			return whiskErr
+		}
+
+		if cmd.LocalFlags().Changed("format") &&
+			strings.ToLower(Flags.common.format) != formatOptionYaml &&
+			strings.ToLower(Flags.common.format) != formatOptionJson {
+			errMsg := wski18n.T("Invalid format type: {{.type}}", map[string]interface{}{"type": Flags.common.format})
+			whiskErr := whisk.MakeWskError(errors.New(errMsg), whisk.EXIT_CODE_ERR_GENERAL,
+				whisk.DISPLAY_MSG, whisk.NO_DISPLAY_USAGE)
+			return whiskErr
+		}
+
+		apiGetReq := new(whisk.ApiGetRequest)
+		apiGetReqOptions := new(whisk.ApiGetRequestOptions)
+		apiGetReqOptions.ApiBasePath = args[0]
+		if apiGetReqOptions.SpaceGuid, err = getUserContextId(); err != nil {
+			return err
+		}
+		if apiGetReqOptions.AccessToken, err = getAccessToken(); err != nil {
+			return err
+		}
+
+		retApi, _, err := Client.Apis.Get(apiGetReq, apiGetReqOptions)
+		if err != nil {
+			whisk.Debug(whisk.DbgError, "Client.Apis.Get(%#v, %#v) error: %s\n", apiGetReq, apiGetReqOptions, err)
+			errMsg := wski18n.T("Unable to get API '{{.name}}': {{.err}}", map[string]interface{}{"name": args[0], "err": err})
+			whiskErr := whisk.MakeWskError(errors.New(errMsg), whisk.EXIT_CODE_ERR_GENERAL,
+				whisk.DISPLAY_MSG, whisk.NO_DISPLAY_USAGE)
+			return whiskErr
+		}
+		whisk.Debug(whisk.DbgInfo, "Client.Apis.Get returned: %#v\n", retApi)
+
+		var displayResult interface{} = nil
+		if Flags.common.detail {
+			if retApi.Apis != nil && len(retApi.Apis) > 0 &&
+				retApi.Apis[0].ApiValue != nil {
+				displayResult = retApi.Apis[0].ApiValue
+			} else {
+				whisk.Debug(whisk.DbgError, "No result object returned\n")
+			}
+		} else {
+			if retApi.Apis != nil && len(retApi.Apis) > 0 &&
+				retApi.Apis[0].ApiValue != nil &&
+				retApi.Apis[0].ApiValue.Swagger != nil {
+				displayResult = retApi.Apis[0].ApiValue.Swagger
+			} else {
+				whisk.Debug(whisk.DbgError, "No swagger returned\n")
+			}
+		}
+		if displayResult == nil {
+			var errMsg string
+			if isBasePathArg {
+				errMsg = wski18n.T("API does not exist for basepath {{.basepath}}",
+					map[string]interface{}{"basepath": args[0]})
+			} else {
+				errMsg = wski18n.T("API does not exist for API name {{.apiname}}",
+					map[string]interface{}{"apiname": args[0]})
+			}
+
+			whiskErr := whisk.MakeWskError(errors.New(errMsg), whisk.EXIT_CODE_ERR_GENERAL,
+				whisk.DISPLAY_MSG, whisk.NO_DISPLAY_USAGE)
+			return whiskErr
+		}
+
+		if cmd.LocalFlags().Changed("format") && strings.ToLower(Flags.common.format) == formatOptionYaml {
+			var jsonOutputBuffer bytes.Buffer
+			var jsonOutputWriter = bufio.NewWriter(&jsonOutputBuffer)
+			printJSON(displayResult, jsonOutputWriter)
+			jsonOutputWriter.Flush()
+			yamlbytes, err := yaml.JSONToYAML(jsonOutputBuffer.Bytes())
+			if err != nil {
+				whisk.Debug(whisk.DbgError, "yaml.JSONToYAML() error: %s\n", err)
+				errMsg := wski18n.T("Unable to convert API into YAML: {{.err}}", map[string]interface{}{"err": err})
+				whiskErr := whisk.MakeWskError(errors.New(errMsg), whisk.EXIT_CODE_ERR_GENERAL,
+					whisk.DISPLAY_MSG, whisk.NO_DISPLAY_USAGE)
+				return whiskErr
+			}
+			fmt.Println(string(yamlbytes))
+		} else {
+			printJSON(displayResult)
+		}
+
+		return nil
+	},
 }
 
 var apiDeleteCmd = &cobra.Command{
-    Use:           "delete BASE_PATH | API_NAME [API_PATH [API_VERB]]",
-    Short:         wski18n.T("delete an API"),
-    SilenceUsage:  true,
-    SilenceErrors: true,
-    PreRunE:       SetupClientConfig,
-    RunE: func(cmd *cobra.Command, args []string) error {
-        var err error
-
-        if whiskErr := CheckArgs(args, 1, 3, "Api delete",
-            wski18n.T("An API base path or API name is required.  An optional API relative path and operation may also be provided.")); whiskErr != nil {
-            return whiskErr
-        }
-
-        apiDeleteReq := new(whisk.ApiDeleteRequest)
-        apiDeleteReqOptions := new(whisk.ApiDeleteRequestOptions)
-        if apiDeleteReqOptions.SpaceGuid, err = getUserContextId(); err != nil {
-            return err
-        }
-        if apiDeleteReqOptions.AccessToken, err = getAccessToken(); err != nil {
-            return err
-        }
-
-        // Is the argument a basepath (must start with /) or an API name
-        if _, ok := isValidBasepath(args[0]); !ok {
-            whisk.Debug(whisk.DbgInfo, "Treating '%s' as an API name; as it does not begin with '/'\n", args[0])
-            apiDeleteReqOptions.ApiBasePath = args[0]
-        } else {
-            apiDeleteReqOptions.ApiBasePath = args[0]
-        }
-
-        if (len(args) > 1) {
-            // Is the API path valid?
-            if whiskErr, ok := isValidRelpath(args[1]); !ok {
-                return whiskErr
-            }
-            apiDeleteReqOptions.ApiRelPath = args[1]
-        }
-        if (len(args) > 2) {
-            // Is the API verb valid?
-            if whiskErr, ok := IsValidApiVerb(args[2]); !ok {
-                return whiskErr
-            }
-            apiDeleteReqOptions.ApiVerb = strings.ToUpper(args[2])
-        }
-
-        _, err = Client.Apis.Delete(apiDeleteReq, apiDeleteReqOptions)
-        if err != nil {
-            whisk.Debug(whisk.DbgError, "Client.Apis.Delete(%#v, %#v) error: %s\n", apiDeleteReq, apiDeleteReqOptions, err)
-            errMsg := wski18n.T("Unable to delete API: {{.err}}", map[string]interface{}{"err": err})
-            whiskErr := whisk.MakeWskError(errors.New(errMsg), whisk.EXIT_CODE_ERR_GENERAL,
-                whisk.DISPLAY_MSG, whisk.NO_DISPLAY_USAGE)
-            return whiskErr
-        }
-
-        if (len(args) == 1) {
-            fmt.Fprintf(color.Output,
-                wski18n.T("{{.ok}} deleted API {{.basepath}}\n",
-                    map[string]interface{}{
-                        "ok": color.GreenString("ok:"),
-                        "basepath": apiDeleteReqOptions.ApiBasePath,
-                    }))
-        } else if (len(args) == 2 ) {
-            fmt.Fprintf(color.Output,
-                wski18n.T("{{.ok}} deleted {{.path}} from {{.basepath}}\n",
-                    map[string]interface{}{
-                        "ok": color.GreenString("ok:"),
-                        "path": apiDeleteReqOptions.ApiRelPath,
-                        "basepath": apiDeleteReqOptions.ApiBasePath,
-                    }))
-        } else {
-            fmt.Fprintf(color.Output,
-                wski18n.T("{{.ok}} deleted {{.path}} {{.verb}} from {{.basepath}}\n",
-                    map[string]interface{}{
-                        "ok": color.GreenString("ok:"),
-                        "path": apiDeleteReqOptions.ApiRelPath,
-                        "verb": apiDeleteReqOptions.ApiVerb,
-                        "basepath": apiDeleteReqOptions.ApiBasePath,
-                    }))
-        }
-
-        return nil
-    },
+	Use:           "delete BASE_PATH | API_NAME [API_PATH [API_VERB]]",
+	Short:         wski18n.T("delete an API"),
+	SilenceUsage:  true,
+	SilenceErrors: true,
+	PreRunE:       SetupClientConfig,
+	RunE: func(cmd *cobra.Command, args []string) error {
+		var err error
+
+		if whiskErr := CheckArgs(args, 1, 3, "Api delete",
+			wski18n.T("An API base path or API name is required.  An optional API relative path and operation may also be provided.")); whiskErr != nil {
+			return whiskErr
+		}
+
+		apiDeleteReq := new(whisk.ApiDeleteRequest)
+		apiDeleteReqOptions := new(whisk.ApiDeleteRequestOptions)
+		if apiDeleteReqOptions.SpaceGuid, err = getUserContextId(); err != nil {
+			return err
+		}
+		if apiDeleteReqOptions.AccessToken, err = getAccessToken(); err != nil {
+			return err
+		}
+
+		// Is the argument a basepath (must start with /) or an API name
+		if _, ok := isValidBasepath(args[0]); !ok {
+			whisk.Debug(whisk.DbgInfo, "Treating '%s' as an API name; as it does not begin with '/'\n", args[0])
+			apiDeleteReqOptions.ApiBasePath = args[0]
+		} else {
+			apiDeleteReqOptions.ApiBasePath = args[0]
+		}
+
+		if len(args) > 1 {
+			// Is the API path valid?
+			if whiskErr, ok := isValidRelpath(args[1]); !ok {
+				return whiskErr
+			}
+			apiDeleteReqOptions.ApiRelPath = args[1]
+		}
+		if len(args) > 2 {
+			// Is the API verb valid?
+			if whiskErr, ok := IsValidApiVerb(args[2]); !ok {
+				return whiskErr
+			}
+			apiDeleteReqOptions.ApiVerb = strings.ToUpper(args[2])
+		}
+
+		_, err = Client.Apis.Delete(apiDeleteReq, apiDeleteReqOptions)
+		if err != nil {
+			whisk.Debug(whisk.DbgError, "Client.Apis.Delete(%#v, %#v) error: %s\n", apiDeleteReq, apiDeleteReqOptions, err)
+			errMsg := wski18n.T("Unable to delete API: {{.err}}", map[string]interface{}{"err": err})
+			whiskErr := whisk.MakeWskError(errors.New(errMsg), whisk.EXIT_CODE_ERR_GENERAL,
+				whisk.DISPLAY_MSG, whisk.NO_DISPLAY_USAGE)
+			return whiskErr
+		}
+
+		if len(args) == 1 {
+			fmt.Fprintf(color.Output,
+				wski18n.T("{{.ok}} deleted API {{.basepath}}\n",
+					map[string]interface{}{
+						"ok":       color.GreenString("ok:"),
+						"basepath": apiDeleteReqOptions.ApiBasePath,
+					}))
+		} else if len(args) == 2 {
+			fmt.Fprintf(color.Output,
+				wski18n.T("{{.ok}} deleted {{.path}} from {{.basepath}}\n",
+					map[string]interface{}{
+						"ok":       color.GreenString("ok:"),
+						"path":     apiDeleteReqOptions.ApiRelPath,
+						"basepath": apiDeleteReqOptions.ApiBasePath,
+					}))
+		} else {
+			fmt.Fprintf(color.Output,
+				wski18n.T("{{.ok}} deleted {{.path}} {{.verb}} from {{.basepath}}\n",
+					map[string]interface{}{
+						"ok":       color.GreenString("ok:"),
+						"path":     apiDeleteReqOptions.ApiRelPath,
+						"verb":     apiDeleteReqOptions.ApiVerb,
+						"basepath": apiDeleteReqOptions.ApiBasePath,
+					}))
+		}
+
+		return nil
+	},
 }
 
 var apiListCmd = &cobra.Command{
-    Use:           "list [[BASE_PATH | API_NAME] [API_PATH [API_VERB]]",
-    Short:         wski18n.T("list APIs"),
-    SilenceUsage:  true,
-    SilenceErrors: true,
-    PreRunE:       SetupClientConfig,
-    RunE: func(cmd *cobra.Command, args []string) error {
-        var err error
-        var retApiList *whisk.ApiListResponse
-        var retApi *whisk.ApiGetResponse
-        var retApiArray *whisk.RetApiArray
-        var apiPath string
-        var apiVerb string
-        var orderFilteredList []whisk.ApiFilteredList
-        var orderFilteredRow []whisk.ApiFilteredRow
-
-        if whiskErr := CheckArgs(args, 0, 3, "Api list",
-            wski18n.T("Optional parameters are: API base path (or API name), API relative path and operation.")); whiskErr != nil {
-            return whiskErr
-        }
-
-        if (len(args) == 0) {
-            // List API request query parameters
-            apiListReqOptions := new(whisk.ApiListRequestOptions)
-            apiListReqOptions.Limit = Flags.common.limit
-            apiListReqOptions.Skip = Flags.common.skip
-            if apiListReqOptions.SpaceGuid, err = getUserContextId(); err != nil {
-                return err
-            }
-            if apiListReqOptions.AccessToken, err = getAccessToken(); err != nil {
-                return err
-            }
-
-            retApiList, _, err = Client.Apis.List(apiListReqOptions)
-            if err != nil {
-                whisk.Debug(whisk.DbgError, "Client.Apis.List(%#v) error: %s\n", apiListReqOptions, err)
-                errMsg := wski18n.T("Unable to obtain the API list: {{.err}}", map[string]interface{}{"err": err})
-                whiskErr := whisk.MakeWskError(errors.New(errMsg), whisk.EXIT_CODE_ERR_GENERAL,
-                    whisk.DISPLAY_MSG, whisk.NO_DISPLAY_USAGE)
-                return whiskErr
-            }
-            whisk.Debug(whisk.DbgInfo, "Client.Apis.List returned: %#v (%+v)\n", retApiList, retApiList)
-            // Cast to a common type to allow for code to print out apilist response or apiget response
-            retApiArray = (*whisk.RetApiArray)(retApiList)
-        } else {
-            // Get API request body
-            apiGetReq := new(whisk.ApiGetRequest)
-            apiGetReq.Namespace = Client.Config.Namespace
-            // Get API request options
-            apiGetReqOptions := new(whisk.ApiGetRequestOptions)
-            if apiGetReqOptions.SpaceGuid, err = getUserContextId(); err != nil {
-                return err
-            }
-            if apiGetReqOptions.AccessToken, err = getAccessToken(); err != nil {
-                return err
-            }
-
-            // The first argument is either a basepath (must start with /) or an API name
-            apiGetReqOptions.ApiBasePath = args[0]
-            if (len(args) > 1) {
-                // Is the API path valid?
-                if whiskErr, ok := isValidRelpath(args[1]); !ok {
-                    return whiskErr
-                }
-                apiPath = args[1]
-                apiGetReqOptions.ApiRelPath = apiPath
-            }
-            if (len(args) > 2) {
-                // Is the API verb valid?
-                if whiskErr, ok := IsValidApiVerb(args[2]); !ok {
-                    return whiskErr
-                }
-                apiVerb = strings.ToUpper(args[2])
-                apiGetReqOptions.ApiVerb = apiVerb
-            }
-
-            retApi, _, err = Client.Apis.Get(apiGetReq, apiGetReqOptions)
-            if err != nil {
-                whisk.Debug(whisk.DbgError, "Client.Apis.Get(%#v, %#v) error: %s\n", apiGetReq, apiGetReqOptions, err)
-                errMsg := wski18n.T("Unable to obtain the API list: {{.err}}", map[string]interface{}{"err": err})
-                whiskErr := whisk.MakeWskErrorFromWskError(errors.New(errMsg), err, whisk.EXIT_CODE_ERR_GENERAL,
-                    whisk.DISPLAY_MSG, whisk.NO_DISPLAY_USAGE)
-                return whiskErr
-            }
-            whisk.Debug(whisk.DbgInfo, "Client.Apis.Get returned: %#v\n", retApi)
-            // Cast to a common type to allow for code to print out apilist response or apiget response
-            retApiArray = (*whisk.RetApiArray)(retApi)
-        }
-        //Checks for any order flags being passed
-        sortByName := Flags.common.nameSort
-        // Display the APIs - applying any specified filtering
-        if (Flags.common.full) {
-            fmt.Fprintf(color.Output,
-                wski18n.T("{{.ok}} APIs\n",
-                    map[string]interface{}{
-                        "ok": color.GreenString("ok:"),
-                    }))
-            for i := 0; i < len(retApiArray.Apis); i++ {
-                orderFilteredList = append(orderFilteredList, genFilteredList(retApiArray.Apis[i].ApiValue, apiPath, apiVerb)...)
-            }
-            printList(orderFilteredList, sortByName)  // Sends an array of structs that contains specifed variables that are not truncated
-        } else {
-            if (len(retApiArray.Apis) > 0) {
-                // Dynamically create the output format string based on the maximum size of the
-                // fully qualified action name and the API Name.
-                maxActionNameSize := min(40, max(len("Action"), getLargestActionNameSize(retApiArray, apiPath, apiVerb)))
-                maxApiNameSize := min(30, max(len("API Name"), getLargestApiNameSize(retApiArray, apiPath, apiVerb)))
-                fmtString = "%-"+strconv.Itoa(maxActionNameSize)+"s %7s %"+strconv.Itoa(maxApiNameSize+1)+"s  %s\n"
-                fmt.Fprintf(color.Output,
-                    wski18n.T("{{.ok}} APIs\n",
-                        map[string]interface{}{
-                            "ok": color.GreenString("ok:"),
-                        }))
-                for i := 0; i < len(retApiArray.Apis); i++ {
-                    orderFilteredRow = append(orderFilteredRow, genFilteredRow(retApiArray.Apis[i].ApiValue, apiPath, apiVerb, maxActionNameSize, maxApiNameSize)...)
-                }
-                printList(orderFilteredRow, sortByName)  // Sends an array of structs that contains specifed variables that are truncated
-            } else {
-                fmt.Fprintf(color.Output,
-                    wski18n.T("{{.ok}} APIs\n",
-                        map[string]interface{}{
-                            "ok": color.GreenString("ok:"),
-                        }))
-                printList(orderFilteredRow, sortByName)  // Sends empty orderFilteredRow so that defaultHeader can be printed
-            }
-        }
-
-        return nil
-    },
+	Use:           "list [[BASE_PATH | API_NAME] [API_PATH [API_VERB]]",
+	Short:         wski18n.T("list APIs"),
+	SilenceUsage:  true,
+	SilenceErrors: true,
+	PreRunE:       SetupClientConfig,
+	RunE: func(cmd *cobra.Command, args []string) error {
+		var err error
+		var retApiList *whisk.ApiListResponse
+		var retApi *whisk.ApiGetResponse
+		var retApiArray *whisk.RetApiArray
+		var apiPath string
+		var apiVerb string
+		var orderFilteredList []whisk.ApiFilteredList
+		var orderFilteredRow []whisk.ApiFilteredRow
+
+		if whiskErr := CheckArgs(args, 0, 3, "Api list",
+			wski18n.T("Optional parameters are: API base path (or API name), API relative path and operation.")); whiskErr != nil {
+			return whiskErr
+		}
+
+		if len(args) == 0 {
+			// List API request query parameters
+			apiListReqOptions := new(whisk.ApiListRequestOptions)
+			apiListReqOptions.Limit = Flags.common.limit
+			apiListReqOptions.Skip = Flags.common.skip
+			if apiListReqOptions.SpaceGuid, err = getUserContextId(); err != nil {
+				return err
+			}
+			if apiListReqOptions.AccessToken, err = getAccessToken(); err != nil {
+				return err
+			}
+
+			retApiList, _, err = Client.Apis.List(apiListReqOptions)
+			if err != nil {
+				whisk.Debug(whisk.DbgError, "Client.Apis.List(%#v) error: %s\n", apiListReqOptions, err)
+				errMsg := wski18n.T("Unable to obtain the API list: {{.err}}", map[string]interface{}{"err": err})
+				whiskErr := whisk.MakeWskError(errors.New(errMsg), whisk.EXIT_CODE_ERR_GENERAL,
+					whisk.DISPLAY_MSG, whisk.NO_DISPLAY_USAGE)
+				return whiskErr
+			}
+			whisk.Debug(whisk.DbgInfo, "Client.Apis.List returned: %#v (%+v)\n", retApiList, retApiList)
+			// Cast to a common type to allow for code to print out apilist response or apiget response
+			retApiArray = (*whisk.RetApiArray)(retApiList)
+		} else {
+			// Get API request body
+			apiGetReq := new(whisk.ApiGetRequest)
+			apiGetReq.Namespace = Client.Config.Namespace
+			// Get API request options
+			apiGetReqOptions := new(whisk.ApiGetRequestOptions)
+			if apiGetReqOptions.SpaceGuid, err = getUserContextId(); err != nil {
+				return err
+			}
+			if apiGetReqOptions.AccessToken, err = getAccessToken(); err != nil {
+				return err
+			}
+
+			// The first argument is either a basepath (must start with /) or an API name
+			apiGetReqOptions.ApiBasePath = args[0]
+			if len(args) > 1 {
+				// Is the API path valid?
+				if whiskErr, ok := isValidRelpath(args[1]); !ok {
+					return whiskErr
+				}
+				apiPath = args[1]
+				apiGetReqOptions.ApiRelPath = apiPath
+			}
+			if len(args) > 2 {
+				// Is the API verb valid?
+				if whiskErr, ok := IsValidApiVerb(args[2]); !ok {
+					return whiskErr
+				}
+				apiVerb = strings.ToUpper(args[2])
+				apiGetReqOptions.ApiVerb = apiVerb
+			}
+
+			retApi, _, err = Client.Apis.Get(apiGetReq, apiGetReqOptions)
+			if err != nil {
+				whisk.Debug(whisk.DbgError, "Client.Apis.Get(%#v, %#v) error: %s\n", apiGetReq, apiGetReqOptions, err)
+				errMsg := wski18n.T("Unable to obtain the API list: {{.err}}", map[string]interface{}{"err": err})
+				whiskErr := whisk.MakeWskErrorFromWskError(errors.New(errMsg), err, whisk.EXIT_CODE_ERR_GENERAL,
+					whisk.DISPLAY_MSG, whisk.NO_DISPLAY_USAGE)
+				return whiskErr
+			}
+			whisk.Debug(whisk.DbgInfo, "Client.Apis.Get returned: %#v\n", retApi)
+			// Cast to a common type to allow for code to print out apilist response or apiget response
+			retApiArray = (*whisk.RetApiArray)(retApi)
+		}
+		//Checks for any order flags being passed
+		sortByName := Flags.common.nameSort
+		// Display the APIs - applying any specified filtering
+		if Flags.common.full {
+			fmt.Fprintf(color.Output,
+				wski18n.T("{{.ok}} APIs\n",
+					map[string]interface{}{
+						"ok": color.GreenString("ok:"),
+					}))
+			for i := 0; i < len(retApiArray.Apis); i++ {
+				orderFilteredList = append(orderFilteredList, genFilteredList(retApiArray.Apis[i].ApiValue, apiPath, apiVerb)...)
+			}
+			printList(orderFilteredList, sortByName) // Sends an array of structs that contains specifed variables that are not truncated
+		} else {
+			if len(retApiArray.Apis) > 0 {
+				// Dynamically create the output format string based on the maximum size of the
+				// fully qualified action name and the API Name.
+				maxActionNameSize := min(40, max(len("Action"), getLargestActionNameSize(retApiArray, apiPath, apiVerb)))
+				maxApiNameSize := min(30, max(len("API Name"), getLargestApiNameSize(retApiArray, apiPath, apiVerb)))
+				fmtString = "%-" + strconv.Itoa(maxActionNameSize) + "s %7s %" + strconv.Itoa(maxApiNameSize+1) + "s  %s\n"
+				fmt.Fprintf(color.Output,
+					wski18n.T("{{.ok}} APIs\n",
+						map[string]interface{}{
+							"ok": color.GreenString("ok:"),
+						}))
+				for i := 0; i < len(retApiArray.Apis); i++ {
+					orderFilteredRow = append(orderFilteredRow, genFilteredRow(retApiArray.Apis[i].ApiValue, apiPath, apiVerb, maxActionNameSize, maxApiNameSize)...)
+				}
+				printList(orderFilteredRow, sortByName) // Sends an array of structs that contains specifed variables that are truncated
+			} else {
+				fmt.Fprintf(color.Output,
+					wski18n.T("{{.ok}} APIs\n",
+						map[string]interface{}{
+							"ok": color.GreenString("ok:"),
+						}))
+				printList(orderFilteredRow, sortByName) // Sends empty orderFilteredRow so that defaultHeader can be printed
+			}
+		}
+
+		return nil
+	},
 }
 
 // genFilteredList(resultApi, api) generates an array of
 //      ApiFilteredLists for the purpose of ordering and printing in a list form.
 //      NOTE: genFilteredRow() generates entries with one line per configuration
 //         property (action name, verb, api name, api gw url)
-func genFilteredList(resultApi *whisk.RetApi, apiPath string, apiVerb string) []whisk.ApiFilteredList{
-    var orderInfo whisk.ApiFilteredList
-    var orderInfoArr []whisk.ApiFilteredList
-    baseUrl := strings.TrimSuffix(resultApi.BaseUrl, "/")
-    apiName := resultApi.Swagger.Info.Title
-    basePath := resultApi.Swagger.BasePath
-    if (resultApi.Swagger != nil && resultApi.Swagger.Paths != nil) {
-        for path, _ := range resultApi.Swagger.Paths {
-            whisk.Debug(whisk.DbgInfo, "genFilteredApi: comparing api relpath: '%s'\n", path)
-            if ( len(apiPath) == 0 || path == apiPath) {
-                whisk.Debug(whisk.DbgInfo, "genFilteredList: relpath matches\n")
-                for op, opv  := range resultApi.Swagger.Paths[path] {
-                    whisk.Debug(whisk.DbgInfo, "genFilteredList: comparing operation: '%s'\n", op)
-                    if ( len(apiVerb) == 0 || strings.ToLower(op) == strings.ToLower(apiVerb)) {
-                        whisk.Debug(whisk.DbgInfo, "genFilteredList: operation matches: %#v\n", opv)
-                        var actionName string
-                        if (opv.XOpenWhisk == nil) {
-                            actionName = ""
-                        } else if (len(opv.XOpenWhisk.Package) > 0) {
-                            actionName = "/"+opv.XOpenWhisk.Namespace+"/"+opv.XOpenWhisk.Package+"/"+opv.XOpenWhisk.ActionName
-                        } else {
-                            actionName = "/"+opv.XOpenWhisk.Namespace+"/"+opv.XOpenWhisk.ActionName
-                        }
-                        orderInfo = AssignListInfo(actionName, op, apiName, basePath, path, baseUrl+path)
-                        whisk.Debug(whisk.DbgInfo, "Appening to orderInfoArr: %s %s\n", orderInfo.RelPath)
-                        orderInfoArr = append(orderInfoArr, orderInfo)
-                    }
-                }
-            }
-        }
-    }
-    return orderInfoArr
+func genFilteredList(resultApi *whisk.RetApi, apiPath string, apiVerb string) []whisk.ApiFilteredList {
+	var orderInfo whisk.ApiFilteredList
+	var orderInfoArr []whisk.ApiFilteredList
+	baseUrl := strings.TrimSuffix(resultApi.BaseUrl, "/")
+	apiName := resultApi.Swagger.Info.Title
+	basePath := resultApi.Swagger.BasePath
+	if resultApi.Swagger != nil && resultApi.Swagger.Paths != nil {
+		for path, _ := range resultApi.Swagger.Paths {
+			whisk.Debug(whisk.DbgInfo, "genFilteredApi: comparing api relpath: '%s'\n", path)
+			if len(apiPath) == 0 || path == apiPath {
+				whisk.Debug(whisk.DbgInfo, "genFilteredList: relpath matches\n")
+				for op, opv := range resultApi.Swagger.Paths[path] {
+					whisk.Debug(whisk.DbgInfo, "genFilteredList: comparing operation: '%s'\n", op)
+					if len(apiVerb) == 0 || strings.ToLower(op) == strings.ToLower(apiVerb) {
+						whisk.Debug(whisk.DbgInfo, "genFilteredList: operation matches: %#v\n", opv)
+						var actionName string
+						if opv.XOpenWhisk == nil {
+							actionName = ""
+						} else if len(opv.XOpenWhisk.Package) > 0 {
+							actionName = "/" + opv.XOpenWhisk.Namespace + "/" + opv.XOpenWhisk.Package + "/" + opv.XOpenWhisk.ActionName
+						} else {
+							actionName = "/" + opv.XOpenWhisk.Namespace + "/" + opv.XOpenWhisk.ActionName
+						}
+						orderInfo = AssignListInfo(actionName, op, apiName, basePath, path, baseUrl+path)
+						whisk.Debug(whisk.DbgInfo, "Appening to orderInfoArr: %s %s\n", orderInfo.RelPath)
+						orderInfoArr = append(orderInfoArr, orderInfo)
+					}
+				}
+			}
+		}
+	}
+	return orderInfoArr
 }
 
 // genFilteredRow(resultApi, api, maxApiNameSize, maxApiNameSize) generates an array of
@@ -606,127 +605,127 @@ func genFilteredList(resultApi *whisk.RetApi, apiPath string, apiVerb string) []
 //      initializing vaules for each individual ApiFilteredRow struct.
 //      NOTE: Large action and api name values will be truncated by their associated max size parameters.
 func genFilteredRow(resultApi *whisk.RetApi, apiPath string, apiVerb string, maxActionNameSize int, maxApiNameSize int) []whisk.ApiFilteredRow {
-    var orderInfo whisk.ApiFilteredRow
-    var orderInfoArr []whisk.ApiFilteredRow
-    baseUrl := strings.TrimSuffix(resultApi.BaseUrl, "/")
-    apiName := resultApi.Swagger.Info.Title
-    basePath := resultApi.Swagger.BasePath
-    if (resultApi.Swagger != nil && resultApi.Swagger.Paths != nil) {
-        for path, _ := range resultApi.Swagger.Paths {
-            whisk.Debug(whisk.DbgInfo, "genFilteredRow: comparing api relpath: '%s'\n", path)
-            if ( len(apiPath) == 0 || path == apiPath) {
-                whisk.Debug(whisk.DbgInfo, "genFilteredRow: relpath matches\n")
-                for op, opv  := range resultApi.Swagger.Paths[path] {
-                    whisk.Debug(whisk.DbgInfo, "genFilteredRow: comparing operation: '%s'\n", op)
-                    if ( len(apiVerb) == 0 || strings.ToLower(op) == strings.ToLower(apiVerb)) {
-                        whisk.Debug(whisk.DbgInfo, "genFilteredRow: operation matches: %#v\n", opv)
-                        var actionName string
-                        if (opv.XOpenWhisk == nil) {
-                            actionName = ""
-                        } else if (len(opv.XOpenWhisk.Package) > 0) {
-                            actionName = "/"+opv.XOpenWhisk.Namespace+"/"+opv.XOpenWhisk.Package+"/"+opv.XOpenWhisk.ActionName
-                        } else {
-                            actionName = "/"+opv.XOpenWhisk.Namespace+"/"+opv.XOpenWhisk.ActionName
-                        }
-                        orderInfo = AssignRowInfo(actionName[0 : min(len(actionName), maxActionNameSize)], op, apiName[0 : min(len(apiName), maxApiNameSize)], basePath, path, baseUrl+path)
-                        orderInfo.FmtString = fmtString
-                        whisk.Debug(whisk.DbgInfo, "Appening to orderInfoArr: %s %s\n", orderInfo.RelPath)
-                        orderInfoArr = append(orderInfoArr, orderInfo)
-                    }
-                }
-            }
-        }
-    }
-    return orderInfoArr
+	var orderInfo whisk.ApiFilteredRow
+	var orderInfoArr []whisk.ApiFilteredRow
+	baseUrl := strings.TrimSuffix(resultApi.BaseUrl, "/")
+	apiName := resultApi.Swagger.Info.Title
+	basePath := resultApi.Swagger.BasePath
+	if resultApi.Swagger != nil && resultApi.Swagger.Paths != nil {
+		for path, _ := range resultApi.Swagger.Paths {
+			whisk.Debug(whisk.DbgInfo, "genFilteredRow: comparing api relpath: '%s'\n", path)
+			if len(apiPath) == 0 || path == apiPath {
+				whisk.Debug(whisk.DbgInfo, "genFilteredRow: relpath matches\n")
+				for op, opv := range resultApi.Swagger.Paths[path] {
+					whisk.Debug(whisk.DbgInfo, "genFilteredRow: comparing operation: '%s'\n", op)
+					if len(apiVerb) == 0 || strings.ToLower(op) == strings.ToLower(apiVerb) {
+						whisk.Debug(whisk.DbgInfo, "genFilteredRow: operation matches: %#v\n", opv)
+						var actionName string
+						if opv.XOpenWhisk == nil {
+							actionName = ""
+						} else if len(opv.XOpenWhisk.Package) > 0 {
+							actionName = "/" + opv.XOpenWhisk.Namespace + "/" + opv.XOpenWhisk.Package + "/" + opv.XOpenWhisk.ActionName
+						} else {
+							actionName = "/" + opv.XOpenWhisk.Namespace + "/" + opv.XOpenWhisk.ActionName
+						}
+						orderInfo = AssignRowInfo(actionName[0:min(len(actionName), maxActionNameSize)], op, apiName[0:min(len(apiName), maxApiNameSize)], basePath, path, baseUrl+path)
+						orderInfo.FmtString = fmtString
+						whisk.Debug(whisk.DbgInfo, "Appening to orderInfoArr: %s %s\n", orderInfo.RelPath)
+						orderInfoArr = append(orderInfoArr, orderInfo)
+					}
+				}
+			}
+		}
+	}
+	return orderInfoArr
 }
 
 // AssignRowInfo(actionName, verb, apiName, basePath, relPath, url) assigns
 //      the given vaules to and initializes an ApiFilteredRow struct, then returns it.
 func AssignRowInfo(actionName string, verb string, apiName string, basePath string, relPath string, url string) whisk.ApiFilteredRow {
-    var orderInfo whisk.ApiFilteredRow
+	var orderInfo whisk.ApiFilteredRow
 
-    orderInfo.ActionName = actionName
-    orderInfo.Verb = verb
-    orderInfo.ApiName = apiName
-    orderInfo.BasePath = basePath
-    orderInfo.RelPath = relPath
-    orderInfo.Url = url
+	orderInfo.ActionName = actionName
+	orderInfo.Verb = verb
+	orderInfo.ApiName = apiName
+	orderInfo.BasePath = basePath
+	orderInfo.RelPath = relPath
+	orderInfo.Url = url
 
-    return orderInfo
+	return orderInfo
 }
 
 // AssignListInfo(actionName, verb, apiName, basePath, relPath, url) assigns
 //      the given vaules to and initializes an ApiFilteredList struct, then returns it.
 func AssignListInfo(actionName string, verb string, apiName string, basePath string, relPath string, url string) whisk.ApiFilteredList {
-    var orderInfo whisk.ApiFilteredList
+	var orderInfo whisk.ApiFilteredList
 
-    orderInfo.ActionName = actionName
-    orderInfo.Verb = verb
-    orderInfo.ApiName = apiName
-    orderInfo.BasePath = basePath
-    orderInfo.RelPath = relPath
-    orderInfo.Url = url
+	orderInfo.ActionName = actionName
+	orderInfo.Verb = verb
+	orderInfo.ApiName = apiName
+	orderInfo.BasePath = basePath
+	orderInfo.RelPath = relPath
+	orderInfo.Url = url
 
-    return orderInfo
+	return orderInfo
 }
 
 func getLargestActionNameSize(retApiArray *whisk.RetApiArray, apiPath string, apiVerb string) int {
-    var maxNameSize = 0
-    for i := 0; i < len(retApiArray.Apis); i++ {
-        var resultApi = retApiArray.Apis[i].ApiValue
-        if (resultApi.Swagger != nil && resultApi.Swagger.Paths != nil) {
-            for path, _ := range resultApi.Swagger.Paths {
-                whisk.Debug(whisk.DbgInfo, "getLargestActionNameSize: comparing api relpath: '%s'\n", path)
-                if ( len(apiPath) == 0 || path == apiPath) {
-                    whisk.Debug(whisk.DbgInfo, "getLargestActionNameSize: relpath matches\n")
-                    for op, opv  := range resultApi.Swagger.Paths[path] {
-                        whisk.Debug(whisk.DbgInfo, "getLargestActionNameSize: comparing operation: '%s'\n", op)
-                        if ( len(apiVerb) == 0 || strings.ToLower(op) == strings.ToLower(apiVerb)) {
-                            whisk.Debug(whisk.DbgInfo, "getLargestActionNameSize: operation matches: %#v\n", opv)
-                            var fullActionName string
-                            if (opv.XOpenWhisk == nil) {
-                                fullActionName = ""
-                            } else if (len(opv.XOpenWhisk.Package) > 0) {
-                                fullActionName = "/"+opv.XOpenWhisk.Namespace+"/"+opv.XOpenWhisk.Package+"/"+opv.XOpenWhisk.ActionName
-                            } else {
-                                fullActionName = "/"+opv.XOpenWhisk.Namespace+"/"+opv.XOpenWhisk.ActionName
-                            }
-                            if (len(fullActionName) > maxNameSize) {
-                                maxNameSize = len(fullActionName)
-                            }
-                        }
-                    }
-                }
-            }
-        }
-    }
-    return maxNameSize
+	var maxNameSize = 0
+	for i := 0; i < len(retApiArray.Apis); i++ {
+		var resultApi = retApiArray.Apis[i].ApiValue
+		if resultApi.Swagger != nil && resultApi.Swagger.Paths != nil {
+			for path, _ := range resultApi.Swagger.Paths {
+				whisk.Debug(whisk.DbgInfo, "getLargestActionNameSize: comparing api relpath: '%s'\n", path)
+				if len(apiPath) == 0 || path == apiPath {
+					whisk.Debug(whisk.DbgInfo, "getLargestActionNameSize: relpath matches\n")
+					for op, opv := range resultApi.Swagger.Paths[path] {
+						whisk.Debug(whisk.DbgInfo, "getLargestActionNameSize: comparing operation: '%s'\n", op)
+						if len(apiVerb) == 0 || strings.ToLower(op) == strings.ToLower(apiVerb) {
+							whisk.Debug(whisk.DbgInfo, "getLargestActionNameSize: operation matches: %#v\n", opv)
+							var fullActionName string
+							if opv.XOpenWhisk == nil {
+								fullActionName = ""
+							} else if len(opv.XOpenWhisk.Package) > 0 {
+								fullActionName = "/" + opv.XOpenWhisk.Namespace + "/" + opv.XOpenWhisk.Package + "/" + opv.XOpenWhisk.ActionName
+							} else {
+								fullActionName = "/" + opv.XOpenWhisk.Namespace + "/" + opv.XOpenWhisk.ActionName
+							}
+							if len(fullActionName) > maxNameSize {
+								maxNameSize = len(fullActionName)
+							}
+						}
+					}
+				}
+			}
+		}
+	}
+	return maxNameSize
 }
 
 func getLargestApiNameSize(retApiArray *whisk.RetApiArray, apiPath string, apiVerb string) int {
-    var maxNameSize = 0
-    for i := 0; i < len(retApiArray.Apis); i++ {
-        var resultApi = retApiArray.Apis[i].ApiValue
-        apiName := resultApi.Swagger.Info.Title
-        if (resultApi.Swagger != nil && resultApi.Swagger.Paths != nil) {
-            for path, _ := range resultApi.Swagger.Paths {
-                whisk.Debug(whisk.DbgInfo, "getLargestActionNameSize: comparing api relpath: '%s'\n", path)
-                if ( len(apiPath) == 0 || path == apiPath) {
-                    whisk.Debug(whisk.DbgInfo, "getLargestActionNameSize: relpath matches\n")
-                    for op, opv  := range resultApi.Swagger.Paths[path] {
-                        whisk.Debug(whisk.DbgInfo, "getLargestActionNameSize: comparing operation: '%s'\n", op)
-                        if ( len(apiVerb) == 0 || strings.ToLower(op) == strings.ToLower(apiVerb)) {
-                            whisk.Debug(whisk.DbgInfo, "getLargestActionNameSize: operation matches: %#v\n", opv)
-                            if (len(apiName) > maxNameSize) {
-                                maxNameSize = len(apiName)
-                            }
-                        }
-                    }
-                }
-            }
-        }
-    }
-    return maxNameSize
+	var maxNameSize = 0
+	for i := 0; i < len(retApiArray.Apis); i++ {
+		var resultApi = retApiArray.Apis[i].ApiValue
+		apiName := resultApi.Swagger.Info.Title
+		if resultApi.Swagger != nil && resultApi.Swagger.Paths != nil {
+			for path, _ := range resultApi.Swagger.Paths {
+				whisk.Debug(whisk.DbgInfo, "getLargestActionNameSize: comparing api relpath: '%s'\n", path)
+				if len(apiPath) == 0 || path == apiPath {
+					whisk.Debug(whisk.DbgInfo, "getLargestActionNameSize: relpath matches\n")
+					for op, opv := range resultApi.Swagger.Paths[path] {
+						whisk.Debug(whisk.DbgInfo, "getLargestActionNameSize: comparing operation: '%s'\n", op)
+						if len(apiVerb) == 0 || strings.ToLower(op) == strings.ToLower(apiVerb) {
+							whisk.Debug(whisk.DbgInfo, "getLargestActionNameSize: operation matches: %#v\n", opv)
+							if len(apiName) > maxNameSize {
+								maxNameSize = len(apiName)
+							}
+						}
+					}
+				}
+			}
+		}
+	}
+	return maxNameSize
 }
 
 /*
@@ -742,201 +741,203 @@ func getLargestApiNameSize(retApiArray *whisk.RetApiArray, apiPath string, apiVe
  * args[2] = Optional.  Action name (may or may not be qualified with namespace and package name)
  */
 func parseApi(cmd *cobra.Command, args []string) (*whisk.Api, *QualifiedName, error) {
-    var err error
-    var basepath string = "/"
-    var apiname string
-    var basepathArgIsApiName = false;
-
-    api := new(whisk.Api)
-
-    if (len(args) > 3) {
-        // Is the argument a basepath (must start with /) or an API name
-        if _, ok := isValidBasepath(args[0]); !ok {
-            whisk.Debug(whisk.DbgInfo, "Treating '%s' as an API name; as it does not begin with '/'\n", args[0])
-            basepathArgIsApiName = true;
-        }
-        basepath = args[0]
-
-        // Shift the args so the remaining code works with or without the explicit base path arg
-        args = args[1:]
-    }
-
-    // Is the API path valid?
-    if (len(args) > 0) {
-        if whiskErr, ok := isValidRelpath(args[0]); !ok {
-            return nil, nil, whiskErr
-        }
-        api.GatewayRelPath = args[0]    // Maintain case as URLs may be case-sensitive
-    }
-
-    // Is the API verb valid?
-    if (len(args) > 1) {
-        if whiskErr, ok := IsValidApiVerb(args[1]); !ok {
-            return nil, nil, whiskErr
-        }
-        api.GatewayMethod = strings.ToUpper(args[1])
-    }
-
-    // Is the specified action name valid?
-    var qName = new(QualifiedName)
-    if (len(args) == 3) {
-        qName, err = NewQualifiedName(args[2])
-        if err != nil {
-            whisk.Debug(whisk.DbgError, "NewQualifiedName(%s) failed: %s\n", args[2], err)
-            errMsg := wski18n.T("'{{.name}}' is not a valid action name: {{.err}}",
-                map[string]interface{}{"name": args[2], "err": err})
-            whiskErr := whisk.MakeWskErrorFromWskError(errors.New(errMsg), err, whisk.EXIT_CODE_ERR_GENERAL,
-                whisk.DISPLAY_MSG, whisk.DISPLAY_USAGE)
-            return nil, nil, whiskErr
-        }
-        if (qName.GetEntityName() == "") {
-            whisk.Debug(whisk.DbgError, "Action name '%s' is invalid\n", args[2])
-            errMsg := wski18n.T("'{{.name}}' is not a valid action name.", map[string]interface{}{"name": args[2]})
-            whiskErr := whisk.MakeWskErrorFromWskError(errors.New(errMsg), err, whisk.EXIT_CODE_ERR_GENERAL,
-                whisk.DISPLAY_MSG, whisk.DISPLAY_USAGE)
-            return nil, nil, whiskErr
-        }
-    }
-
-    if ( len(Flags.api.apiname) > 0 ) {
-        if (basepathArgIsApiName) {
-            // Specifying API name as argument AND as a --apiname option value is invalid
-            whisk.Debug(whisk.DbgError, "API is specified as an argument '%s' and as a flag '%s'\n", basepath, Flags.api.apiname)
-            errMsg := wski18n.T("An API name can only be specified once.")
-            whiskErr := whisk.MakeWskError(errors.New(errMsg), whisk.EXIT_CODE_ERR_GENERAL,
-                whisk.DISPLAY_MSG, whisk.DISPLAY_USAGE)
-            return nil, nil, whiskErr
-        }
-        apiname = Flags.api.apiname
-    }
-
-    api.Namespace = Client.Config.Namespace
-    api.Action = new(whisk.ApiAction)
-    var urlActionPackage string
-    if (len(qName.GetPackageName()) > 0) {
-        urlActionPackage = qName.GetPackageName()
-    } else {
-        urlActionPackage = "default"
-    }
-    api.Action.BackendUrl = "https://" + Client.Config.Host + "/api/v1/web/" + qName.GetNamespace() + "/" + urlActionPackage + "/" + qName.GetEntity() + ".http"
-    api.Action.BackendMethod = api.GatewayMethod
-    api.Action.Name = qName.GetEntityName()
-    api.Action.Namespace = qName.GetNamespace()
-    api.Action.Auth = Client.Config.AuthToken
-    api.ApiName = apiname
-    api.GatewayBasePath = basepath
-    if (!basepathArgIsApiName) { api.Id = "API:"+api.Namespace+":"+api.GatewayBasePath }
-
-    whisk.Debug(whisk.DbgInfo, "Parsed api struct: %#v\n", api)
-    return api, qName, nil
+	var err error
+	var basepath string = "/"
+	var apiname string
+	var basepathArgIsApiName = false
+
+	api := new(whisk.Api)
+
+	if len(args) > 3 {
+		// Is the argument a basepath (must start with /) or an API name
+		if _, ok := isValidBasepath(args[0]); !ok {
+			whisk.Debug(whisk.DbgInfo, "Treating '%s' as an API name; as it does not begin with '/'\n", args[0])
+			basepathArgIsApiName = true
+		}
+		basepath = args[0]
+
+		// Shift the args so the remaining code works with or without the explicit base path arg
+		args = args[1:]
+	}
+
+	// Is the API path valid?
+	if len(args) > 0 {
+		if whiskErr, ok := isValidRelpath(args[0]); !ok {
+			return nil, nil, whiskErr
+		}
+		api.GatewayRelPath = args[0] // Maintain case as URLs may be case-sensitive
+	}
+
+	// Is the API verb valid?
+	if len(args) > 1 {
+		if whiskErr, ok := IsValidApiVerb(args[1]); !ok {
+			return nil, nil, whiskErr
+		}
+		api.GatewayMethod = strings.ToUpper(args[1])
+	}
+
+	// Is the specified action name valid?
+	var qName = new(QualifiedName)
+	if len(args) == 3 {
+		qName, err = NewQualifiedName(args[2])
+		if err != nil {
+			whisk.Debug(whisk.DbgError, "NewQualifiedName(%s) failed: %s\n", args[2], err)
+			errMsg := wski18n.T("'{{.name}}' is not a valid action name: {{.err}}",
+				map[string]interface{}{"name": args[2], "err": err})
+			whiskErr := whisk.MakeWskErrorFromWskError(errors.New(errMsg), err, whisk.EXIT_CODE_ERR_GENERAL,
+				whisk.DISPLAY_MSG, whisk.DISPLAY_USAGE)
+			return nil, nil, whiskErr
+		}
+		if qName.GetEntityName() == "" {
+			whisk.Debug(whisk.DbgError, "Action name '%s' is invalid\n", args[2])
+			errMsg := wski18n.T("'{{.name}}' is not a valid action name.", map[string]interface{}{"name": args[2]})
+			whiskErr := whisk.MakeWskErrorFromWskError(errors.New(errMsg), err, whisk.EXIT_CODE_ERR_GENERAL,
+				whisk.DISPLAY_MSG, whisk.DISPLAY_USAGE)
+			return nil, nil, whiskErr
+		}
+	}
+
+	if len(Flags.api.apiname) > 0 {
+		if basepathArgIsApiName {
+			// Specifying API name as argument AND as a --apiname option value is invalid
+			whisk.Debug(whisk.DbgError, "API is specified as an argument '%s' and as a flag '%s'\n", basepath, Flags.api.apiname)
+			errMsg := wski18n.T("An API name can only be specified once.")
+			whiskErr := whisk.MakeWskError(errors.New(errMsg), whisk.EXIT_CODE_ERR_GENERAL,
+				whisk.DISPLAY_MSG, whisk.DISPLAY_USAGE)
+			return nil, nil, whiskErr
+		}
+		apiname = Flags.api.apiname
+	}
+
+	api.Namespace = Client.Config.Namespace
+	api.Action = new(whisk.ApiAction)
+	var urlActionPackage string
+	if len(qName.GetPackageName()) > 0 {
+		urlActionPackage = qName.GetPackageName()
+	} else {
+		urlActionPackage = "default"
+	}
+	api.Action.BackendUrl = "https://" + Client.Config.Host + "/api/v1/web/" + qName.GetNamespace() + "/" + urlActionPackage + "/" + qName.GetEntity() + ".http"
+	api.Action.BackendMethod = api.GatewayMethod
+	api.Action.Name = qName.GetEntityName()
+	api.Action.Namespace = qName.GetNamespace()
+	api.Action.Auth = Client.Config.AuthToken
+	api.ApiName = apiname
+	api.GatewayBasePath = basepath
+	if !basepathArgIsApiName {
+		api.Id = "API:" + api.Namespace + ":" + api.GatewayBasePath
+	}
+
+	whisk.Debug(whisk.DbgInfo, "Parsed api struct: %#v\n", api)
+	return api, qName, nil
 }
 
 func parseSwaggerApi() (*whisk.Api, error) {
-    // Test is for completeness, but this situation should only arise due to an internal error
-    if ( len(Flags.api.configfile) == 0 ) {
-        whisk.Debug(whisk.DbgError, "No swagger file is specified\n")
-        errMsg := wski18n.T("A configuration file was not specified.")
-        whiskErr := whisk.MakeWskError(errors.New(errMsg),whisk.EXIT_CODE_ERR_GENERAL,
-            whisk.DISPLAY_MSG, whisk.DISPLAY_USAGE)
-        return nil, whiskErr
-    }
-
-    swagger, err:= ReadFile(Flags.api.configfile)
-    if ( err != nil ) {
-        whisk.Debug(whisk.DbgError, "readFile(%s) error: %s\n", Flags.api.configfile, err)
-        errMsg := wski18n.T("Error reading swagger file '{{.name}}': {{.err}}",
-            map[string]interface{}{"name": Flags.api.configfile, "err": err})
-        whiskErr := whisk.MakeWskErrorFromWskError(errors.New(errMsg), err, whisk.EXIT_CODE_ERR_GENERAL,
-            whisk.DISPLAY_MSG, whisk.DISPLAY_USAGE)
-        return nil, whiskErr
-    }
-
-    // Check if this swagger is in JSON or YAML format
-    isYaml := strings.HasSuffix(Flags.api.configfile, yamlFileExtension) || strings.HasSuffix(Flags.api.configfile, ymlFileExtension)
-    if isYaml {
-        whisk.Debug(whisk.DbgInfo, "Converting YAML formated API configuration into JSON\n")
-        jsonbytes, err := yaml.YAMLToJSON([]byte(swagger))
-        if err != nil {
-            whisk.Debug(whisk.DbgError, "yaml.YAMLToJSON() error: %s\n", err)
-            errMsg := wski18n.T("Unable to parse YAML configuration file: {{.err}}", map[string]interface{}{"err": err})
-            whiskErr := whisk.MakeWskError(errors.New(errMsg), whisk.EXIT_CODE_ERR_GENERAL,
-                whisk.DISPLAY_MSG, whisk.NO_DISPLAY_USAGE)
-            return nil, whiskErr
-        }
-        swagger = string(jsonbytes)
-    }
-
-    // Parse the JSON into a swagger object
-    swaggerObj := new(whisk.ApiSwagger)
-    err = json.Unmarshal([]byte(swagger), swaggerObj)
-    if ( err != nil ) {
-        whisk.Debug(whisk.DbgError, "JSON parse of '%s' error: %s\n", Flags.api.configfile, err)
-        errMsg := wski18n.T("Error parsing swagger file '{{.name}}': {{.err}}",
-            map[string]interface{}{"name": Flags.api.configfile, "err": err})
-        whiskErr := whisk.MakeWskErrorFromWskError(errors.New(errMsg), err, whisk.EXIT_CODE_ERR_GENERAL,
-            whisk.DISPLAY_MSG, whisk.DISPLAY_USAGE)
-        return nil, whiskErr
-    }
-    if (swaggerObj.BasePath == "" || swaggerObj.SwaggerName == "" || swaggerObj.Info == nil || swaggerObj.Paths == nil) {
-        whisk.Debug(whisk.DbgError, "Swagger file is invalid.\n", Flags.api.configfile, err)
-        errMsg := wski18n.T("Swagger file is invalid (missing basePath, info, paths, or swagger fields)")
-        whiskErr := whisk.MakeWskError(errors.New(errMsg), whisk.EXIT_CODE_ERR_GENERAL,
-            whisk.DISPLAY_MSG, whisk.DISPLAY_USAGE)
-        return nil, whiskErr
-    }
-    if _, ok := isValidBasepath(swaggerObj.BasePath); !ok {
-        whisk.Debug(whisk.DbgError, "Swagger file basePath is invalid.\n", Flags.api.configfile, err)
-        errMsg := wski18n.T("Swagger file basePath must start with a leading slash (/)")
-        whiskErr := whisk.MakeWskError(errors.New(errMsg), whisk.EXIT_CODE_ERR_GENERAL,
-            whisk.DISPLAY_MSG, whisk.DISPLAY_USAGE)
-        return nil, whiskErr
-    }
-
-    api := new(whisk.Api)
-    api.Namespace = Client.Config.Namespace
-    api.Swagger = swagger
-
-    return api, nil
+	// Test is for completeness, but this situation should only arise due to an internal error
+	if len(Flags.api.configfile) == 0 {
+		whisk.Debug(whisk.DbgError, "No swagger file is specified\n")
+		errMsg := wski18n.T("A configuration file was not specified.")
+		whiskErr := whisk.MakeWskError(errors.New(errMsg), whisk.EXIT_CODE_ERR_GENERAL,
+			whisk.DISPLAY_MSG, whisk.DISPLAY_USAGE)
+		return nil, whiskErr
+	}
+
+	swagger, err := ReadFile(Flags.api.configfile)
+	if err != nil {
+		whisk.Debug(whisk.DbgError, "readFile(%s) error: %s\n", Flags.api.configfile, err)
+		errMsg := wski18n.T("Error reading swagger file '{{.name}}': {{.err}}",
+			map[string]interface{}{"name": Flags.api.configfile, "err": err})
+		whiskErr := whisk.MakeWskErrorFromWskError(errors.New(errMsg), err, whisk.EXIT_CODE_ERR_GENERAL,
+			whisk.DISPLAY_MSG, whisk.DISPLAY_USAGE)
+		return nil, whiskErr
+	}
+
+	// Check if this swagger is in JSON or YAML format
+	isYaml := strings.HasSuffix(Flags.api.configfile, yamlFileExtension) || strings.HasSuffix(Flags.api.configfile, ymlFileExtension)
+	if isYaml {
+		whisk.Debug(whisk.DbgInfo, "Converting YAML formated API configuration into JSON\n")
+		jsonbytes, err := yaml.YAMLToJSON([]byte(swagger))
+		if err != nil {
+			whisk.Debug(whisk.DbgError, "yaml.YAMLToJSON() error: %s\n", err)
+			errMsg := wski18n.T("Unable to parse YAML configuration file: {{.err}}", map[string]interface{}{"err": err})
+			whiskErr := whisk.MakeWskError(errors.New(errMsg), whisk.EXIT_CODE_ERR_GENERAL,
+				whisk.DISPLAY_MSG, whisk.NO_DISPLAY_USAGE)
+			return nil, whiskErr
+		}
+		swagger = string(jsonbytes)
+	}
+
+	// Parse the JSON into a swagger object
+	swaggerObj := new(whisk.ApiSwagger)
+	err = json.Unmarshal([]byte(swagger), swaggerObj)
+	if err != nil {
+		whisk.Debug(whisk.DbgError, "JSON parse of '%s' error: %s\n", Flags.api.configfile, err)
+		errMsg := wski18n.T("Error parsing swagger file '{{.name}}': {{.err}}",
+			map[string]interface{}{"name": Flags.api.configfile, "err": err})
+		whiskErr := whisk.MakeWskErrorFromWskError(errors.New(errMsg), err, whisk.EXIT_CODE_ERR_GENERAL,
+			whisk.DISPLAY_MSG, whisk.DISPLAY_USAGE)
+		return nil, whiskErr
+	}
+	if swaggerObj.BasePath == "" || swaggerObj.SwaggerName == "" || swaggerObj.Info == nil || swaggerObj.Paths == nil {
+		whisk.Debug(whisk.DbgError, "Swagger file is invalid.\n", Flags.api.configfile, err)
+		errMsg := wski18n.T("Swagger file is invalid (missing basePath, info, paths, or swagger fields)")
+		whiskErr := whisk.MakeWskError(errors.New(errMsg), whisk.EXIT_CODE_ERR_GENERAL,
+			whisk.DISPLAY_MSG, whisk.DISPLAY_USAGE)
+		return nil, whiskErr
+	}
+	if _, ok := isValidBasepath(swaggerObj.BasePath); !ok {
+		whisk.Debug(whisk.DbgError, "Swagger file basePath is invalid.\n", Flags.api.configfile, err)
+		errMsg := wski18n.T("Swagger file basePath must start with a leading slash (/)")
+		whiskErr := whisk.MakeWskError(errors.New(errMsg), whisk.EXIT_CODE_ERR_GENERAL,
+			whisk.DISPLAY_MSG, whisk.DISPLAY_USAGE)
+		return nil, whiskErr
+	}
+
+	api := new(whisk.Api)
+	api.Namespace = Client.Config.Namespace
+	api.Swagger = swagger
+
+	return api, nil
 }
 
 func getAccessToken() (string, error) {
-    var token string = "DUMMY TOKEN"
-    var err error
-
-    props, err := ReadProps(Properties.PropsFile)
-    if err == nil {
-        if len(props["APIGW_ACCESS_TOKEN"]) > 0 {
-            token = props["APIGW_ACCESS_TOKEN"]
-        }
-    } else {
-        whisk.Debug(whisk.DbgError, "readProps(%s) failed: %s\n", Properties.PropsFile, err)
-        errStr := wski18n.T("Unable to obtain the API Gateway access token from the properties file: {{.err}}", map[string]interface{}{"err": err})
-        err = whisk.MakeWskError(errors.New(errStr), whisk.EXIT_CODE_ERR_GENERAL, whisk.DISPLAY_MSG, whisk.NO_DISPLAY_USAGE)
-    }
-
-    return token, err
+	var token string = "DUMMY TOKEN"
+	var err error
+
+	props, err := ReadProps(Properties.PropsFile)
+	if err == nil {
+		if len(props["APIGW_ACCESS_TOKEN"]) > 0 {
+			token = props["APIGW_ACCESS_TOKEN"]
+		}
+	} else {
+		whisk.Debug(whisk.DbgError, "readProps(%s) failed: %s\n", Properties.PropsFile, err)
+		errStr := wski18n.T("Unable to obtain the API Gateway access token from the properties file: {{.err}}", map[string]interface{}{"err": err})
+		err = whisk.MakeWskError(errors.New(errStr), whisk.EXIT_CODE_ERR_GENERAL, whisk.DISPLAY_MSG, whisk.NO_DISPLAY_USAGE)
+	}
+
+	return token, err
 }
 
 func getUserContextId() (string, error) {
-    var guid string
-    var err error
-
-    props, err := ReadProps(Properties.PropsFile)
-    if err == nil {
-        if len(props["AUTH"]) > 0 {
-            guid = strings.Split(props["AUTH"], ":")[0]
-        } else {
-            whisk.Debug(whisk.DbgError, "AUTH property not set in properties file: '%s'\n", Properties.PropsFile)
-            errStr := wski18n.T("Authorization key is not configured (--auth is required)")
-            err = whisk.MakeWskError(errors.New(errStr), whisk.EXIT_CODE_ERR_GENERAL, whisk.DISPLAY_MSG, whisk.NO_DISPLAY_USAGE)
-        }
-    } else {
-        whisk.Debug(whisk.DbgError, "readProps(%s) failed: %s\n", Properties.PropsFile, err)
-        errStr := wski18n.T("Unable to obtain the auth key from the properties file: {{.err}}", map[string]interface{}{"err": err})
-        err = whisk.MakeWskError(errors.New(errStr), whisk.EXIT_CODE_ERR_GENERAL, whisk.DISPLAY_MSG, whisk.NO_DISPLAY_USAGE)
-    }
-
-    return guid, err
+	var guid string
+	var err error
+
+	props, err := ReadProps(Properties.PropsFile)
+	if err == nil {
+		if len(props["AUTH"]) > 0 {
+			guid = strings.Split(props["AUTH"], ":")[0]
+		} else {
+			whisk.Debug(whisk.DbgError, "AUTH property not set in properties file: '%s'\n", Properties.PropsFile)
+			errStr := wski18n.T("Authorization key is not configured (--auth is required)")
+			err = whisk.MakeWskError(errors.New(errStr), whisk.EXIT_CODE_ERR_GENERAL, whisk.DISPLAY_MSG, whisk.NO_DISPLAY_USAGE)
+		}
+	} else {
+		whisk.Debug(whisk.DbgError, "readProps(%s) failed: %s\n", Properties.PropsFile, err)
+		errStr := wski18n.T("Unable to obtain the auth key from the properties file: {{.err}}", map[string]interface{}{"err": err})
+		err = whisk.MakeWskError(errors.New(errStr), whisk.EXIT_CODE_ERR_GENERAL, whisk.DISPLAY_MSG, whisk.NO_DISPLAY_USAGE)
+	}
+
+	return guid, err
 }
 
 ///////////
@@ -945,19 +946,19 @@ func getUserContextId() (string, error) {
 
 func init() {
 
-    apiCreateCmd.Flags().StringVarP(&Flags.api.apiname, "apiname", "n", "", wski18n.T("Friendly name of the API; ignored when CFG_FILE is specified (default BASE_PATH)"))
-    apiCreateCmd.Flags().StringVarP(&Flags.api.configfile, "config-file", "c", "", wski18n.T("`CFG_FILE` containing API configuration in swagger JSON format"))
-    apiCreateCmd.Flags().StringVar(&Flags.api.resptype, "response-type", "json", wski18n.T("Set the web action response `TYPE`. Possible values are html, http, json, text, svg"))
-    apiGetCmd.Flags().BoolVarP(&Flags.common.detail, "full", "f", false, wski18n.T("display full API configuration details"))
-    apiGetCmd.Flags().StringVarP(&Flags.common.format, "format", "", formatOptionJson, wski18n.T("Specify the API output `TYPE`, either json or yaml"))
-    apiListCmd.Flags().IntVarP(&Flags.common.skip, "skip", "s", 0, wski18n.T("exclude the first `SKIP` number of actions from the result"))
-    apiListCmd.Flags().IntVarP(&Flags.common.limit, "limit", "l", 30, wski18n.T("only return `LIMIT` number of actions from the collection"))
-    apiListCmd.Flags().BoolVarP(&Flags.common.nameSort, "name-sort", "n", false, wski18n.T("sorts a list alphabetically by order of [BASE_PATH | API_NAME], API_PATH, then API_VERB; only applicable within the limit/skip returned entity block"))
-    apiListCmd.Flags().BoolVarP(&Flags.common.full, "full", "f", false, wski18n.T("display full description of each API"))
-    apiCmd.AddCommand(
-        apiCreateCmd,
-        apiGetCmd,
-        apiDeleteCmd,
-        apiListCmd,
-    )
+	apiCreateCmd.Flags().StringVarP(&Flags.api.apiname, "apiname", "n", "", wski18n.T("Friendly name of the API; ignored when CFG_FILE is specified (default BASE_PATH)"))
+	apiCreateCmd.Flags().StringVarP(&Flags.api.configfile, "config-file", "c", "", wski18n.T("`CFG_FILE` containing API configuration in swagger JSON format"))
+	apiCreateCmd.Flags().StringVar(&Flags.api.resptype, "response-type", "json", wski18n.T("Set the web action response `TYPE`. Possible values are html, http, json, text, svg"))
+	apiGetCmd.Flags().BoolVarP(&Flags.common.detail, "full", "f", false, wski18n.T("display full API configuration details"))
+	apiGetCmd.Flags().StringVarP(&Flags.common.format, "format", "", formatOptionJson, wski18n.T("Specify the API output `TYPE`, either json or yaml"))
+	apiListCmd.Flags().IntVarP(&Flags.common.skip, "skip", "s", 0, wski18n.T("exclude the first `SKIP` number of actions from the result"))
+	apiListCmd.Flags().IntVarP(&Flags.common.limit, "limit", "l", 30, wski18n.T("only return `LIMIT` number of actions from the collection"))
+	apiListCmd.Flags().BoolVarP(&Flags.common.nameSort, "name-sort", "n", false, wski18n.T("sorts a list alphabetically by order of [BASE_PATH | API_NAME], API_PATH, then API_VERB; only applicable within the limit/skip returned entity block"))
+	apiListCmd.Flags().BoolVarP(&Flags.common.full, "full", "f", false, wski18n.T("display full description of each API"))
+	apiCmd.AddCommand(
+		apiCreateCmd,
+		apiGetCmd,
+		apiDeleteCmd,
+		apiListCmd,
+	)
 }
diff --git a/commands/commands.go b/commands/commands.go
index fcb5757..2fbdeb1 100644
--- a/commands/commands.go
+++ b/commands/commands.go
@@ -18,210 +18,212 @@
 package commands
 
 import (
-    "errors"
-    "net/http"
-    "os"
+	"errors"
+	"net/http"
+	"os"
 
-    "github.com/apache/incubator-openwhisk-client-go/whisk"
-    "github.com/apache/incubator-openwhisk-cli/wski18n"
+	"github.com/apache/incubator-openwhisk-cli/wski18n"
+	"github.com/apache/incubator-openwhisk-client-go/whisk"
 
-    "github.com/spf13/cobra"
+	"github.com/spf13/cobra"
 )
 
 var Client *whisk.Client
+
 const DefaultOpenWhiskApiPath string = "/api"
+
 var UserAgent string = "OpenWhisk-CLI"
 
-func SetupClientConfig(cmd *cobra.Command, args []string) (error){
-    baseURL, err := whisk.GetURLBase(Properties.APIHost, DefaultOpenWhiskApiPath)
-
-    // Determine if the parent command will require the API host to be set
-    apiHostRequired := (cmd.Parent().Name() == "property" && cmd.Name() == "get" && (Flags.property.auth ||
-      Flags.property.cert || Flags.property.key || Flags.property.apihost || Flags.property.namespace ||
-      Flags.property.apiversion || Flags.property.cliversion)) ||
-      (cmd.Parent().Name() == "property" && cmd.Name() == "set" && (len(Flags.property.apihostSet) > 0 ||
-        len(Flags.property.apiversionSet) > 0 || len(Flags.Global.Auth) > 0)) ||
-      (cmd.Parent().Name() == "sdk" && cmd.Name() == "install" && len(args) > 0 && args[0] == "bashauto")
-
-    // Display an error if the parent command requires an API host to be set, and the current API host is not valid
-    if err != nil && !apiHostRequired {
-        whisk.Debug(whisk.DbgError, "whisk.GetURLBase(%s, %s) error: %s\n", Properties.APIHost, DefaultOpenWhiskApiPath, err)
-        errMsg := wski18n.T("The API host is not valid: {{.err}}", map[string]interface{}{"err": err})
-        whiskErr := whisk.MakeWskErrorFromWskError(errors.New(errMsg), err, whisk.EXIT_CODE_ERR_GENERAL,
-            whisk.DISPLAY_MSG, whisk.NO_DISPLAY_USAGE)
-        return whiskErr
-    }
-
-    clientConfig := &whisk.Config{
-        Cert: Properties.Cert,
-        Key: Properties.Key,
-        AuthToken:  Properties.Auth,
-        Namespace:  Properties.Namespace,
-        BaseURL:    baseURL,
-        Version:    Properties.APIVersion,
-        Insecure:   Flags.Global.Insecure,
-        Host:       Properties.APIHost,
-        UserAgent:  UserAgent + "/1.0 (" + Properties.CLIVersion + ")",
-    }
-
-    if len(clientConfig.Host) == 0 {
-        config, _ := whisk.GetDefaultConfig()
-        clientConfig.Host = config.Host
-        if len(clientConfig.Host) == 0 {
-            clientConfig.Host = "openwhisk.ng.bluemix.net"
-        }
-    }
-
-    // Setup client
-    Client, err = whisk.NewClient(http.DefaultClient, clientConfig)
-
-    if err != nil {
-        whisk.Debug(whisk.DbgError, "whisk.NewClient(%#v, %#v) error: %s\n", http.DefaultClient, clientConfig, err)
-        errMsg := wski18n.T("Unable to initialize server connection: {{.err}}", map[string]interface{}{"err": err})
-        whiskErr := whisk.MakeWskErrorFromWskError(errors.New(errMsg), err, whisk.EXIT_CODE_ERR_GENERAL,
-        whisk.DISPLAY_MSG, whisk.DISPLAY_USAGE)
-        return whiskErr
-    }
-
-    return nil
+func SetupClientConfig(cmd *cobra.Command, args []string) error {
+	baseURL, err := whisk.GetURLBase(Properties.APIHost, DefaultOpenWhiskApiPath)
+
+	// Determine if the parent command will require the API host to be set
+	apiHostRequired := (cmd.Parent().Name() == "property" && cmd.Name() == "get" && (Flags.property.auth ||
+		Flags.property.cert || Flags.property.key || Flags.property.apihost || Flags.property.namespace ||
+		Flags.property.apiversion || Flags.property.cliversion)) ||
+		(cmd.Parent().Name() == "property" && cmd.Name() == "set" && (len(Flags.property.apihostSet) > 0 ||
+			len(Flags.property.apiversionSet) > 0 || len(Flags.Global.Auth) > 0)) ||
+		(cmd.Parent().Name() == "sdk" && cmd.Name() == "install" && len(args) > 0 && args[0] == "bashauto")
+
+	// Display an error if the parent command requires an API host to be set, and the current API host is not valid
+	if err != nil && !apiHostRequired {
+		whisk.Debug(whisk.DbgError, "whisk.GetURLBase(%s, %s) error: %s\n", Properties.APIHost, DefaultOpenWhiskApiPath, err)
+		errMsg := wski18n.T("The API host is not valid: {{.err}}", map[string]interface{}{"err": err})
+		whiskErr := whisk.MakeWskErrorFromWskError(errors.New(errMsg), err, whisk.EXIT_CODE_ERR_GENERAL,
+			whisk.DISPLAY_MSG, whisk.NO_DISPLAY_USAGE)
+		return whiskErr
+	}
+
+	clientConfig := &whisk.Config{
+		Cert:      Properties.Cert,
+		Key:       Properties.Key,
+		AuthToken: Properties.Auth,
+		Namespace: Properties.Namespace,
+		BaseURL:   baseURL,
+		Version:   Properties.APIVersion,
+		Insecure:  Flags.Global.Insecure,
+		Host:      Properties.APIHost,
+		UserAgent: UserAgent + "/1.0 (" + Properties.CLIVersion + ")",
+	}
+
+	if len(clientConfig.Host) == 0 {
+		config, _ := whisk.GetDefaultConfig()
+		clientConfig.Host = config.Host
+		if len(clientConfig.Host) == 0 {
+			clientConfig.Host = "openwhisk.ng.bluemix.net"
+		}
+	}
+
+	// Setup client
+	Client, err = whisk.NewClient(http.DefaultClient, clientConfig)
+
+	if err != nil {
+		whisk.Debug(whisk.DbgError, "whisk.NewClient(%#v, %#v) error: %s\n", http.DefaultClient, clientConfig, err)
+		errMsg := wski18n.T("Unable to initialize server connection: {{.err}}", map[string]interface{}{"err": err})
+		whiskErr := whisk.MakeWskErrorFromWskError(errors.New(errMsg), err, whisk.EXIT_CODE_ERR_GENERAL,
+			whisk.DISPLAY_MSG, whisk.DISPLAY_USAGE)
+		return whiskErr
+	}
+
+	return nil
 }
 
 func init() {}
 
 func getKeyValueArgs(args []string, argIndex int, parsedArgs []string) ([]string, []string, error) {
-    var whiskErr error
-    var key string
-    var value string
-
-    if len(args) - 1 >= argIndex + 2 {
-        key = args[argIndex + 1]
-        value = args[argIndex + 2]
-        parsedArgs = append(parsedArgs, getFormattedJSON(key, value))
-        args = append(args[:argIndex], args[argIndex + 3:]...)
-    } else {
-        whisk.Debug(whisk.DbgError, "Arguments for '%s' must be a key/value pair; args: %s", args[argIndex], args)
-        errMsg := wski18n.T("Arguments for '{{.arg}}' must be a key/value pair",
-            map[string]interface{}{"arg": args[argIndex]})
-        whiskErr = whisk.MakeWskError(errors.New(errMsg), whisk.EXIT_CODE_ERR_GENERAL, whisk.DISPLAY_MSG,
-            whisk.DISPLAY_USAGE)
-    }
-
-    return parsedArgs, args, whiskErr
+	var whiskErr error
+	var key string
+	var value string
+
+	if len(args)-1 >= argIndex+2 {
+		key = args[argIndex+1]
+		value = args[argIndex+2]
+		parsedArgs = append(parsedArgs, getFormattedJSON(key, value))
+		args = append(args[:argIndex], args[argIndex+3:]...)
+	} else {
+		whisk.Debug(whisk.DbgError, "Arguments for '%s' must be a key/value pair; args: %s", args[argIndex], args)
+		errMsg := wski18n.T("Arguments for '{{.arg}}' must be a key/value pair",
+			map[string]interface{}{"arg": args[argIndex]})
+		whiskErr = whisk.MakeWskError(errors.New(errMsg), whisk.EXIT_CODE_ERR_GENERAL, whisk.DISPLAY_MSG,
+			whisk.DISPLAY_USAGE)
+	}
+
+	return parsedArgs, args, whiskErr
 }
 
 func getValueFromArgs(args []string, argIndex int, parsedArgs []string) ([]string, []string, error) {
-    var whiskErr error
-
-    if len(args) - 1 >= argIndex + 1 {
-        parsedArgs = append(parsedArgs, args[argIndex + 1])
-        args = append(args[:argIndex], args[argIndex + 2:]...)
-    } else {
-        whisk.Debug(whisk.DbgError, "An argument must be provided for '%s'; args: %s", args[argIndex], args)
-        errMsg := wski18n.T("An argument must be provided for '{{.arg}}'",
-            map[string]interface{}{"arg": args[argIndex]})
-        whiskErr = whisk.MakeWskError(errors.New(errMsg), whisk.EXIT_CODE_ERR_GENERAL, whisk.DISPLAY_MSG,
-            whisk.DISPLAY_USAGE)
-    }
-
-    return parsedArgs, args, whiskErr
+	var whiskErr error
+
+	if len(args)-1 >= argIndex+1 {
+		parsedArgs = append(parsedArgs, args[argIndex+1])
+		args = append(args[:argIndex], args[argIndex+2:]...)
+	} else {
+		whisk.Debug(whisk.DbgError, "An argument must be provided for '%s'; args: %s", args[argIndex], args)
+		errMsg := wski18n.T("An argument must be provided for '{{.arg}}'",
+			map[string]interface{}{"arg": args[argIndex]})
+		whiskErr = whisk.MakeWskError(errors.New(errMsg), whisk.EXIT_CODE_ERR_GENERAL, whisk.DISPLAY_MSG,
+			whisk.DISPLAY_USAGE)
+	}
+
+	return parsedArgs, args, whiskErr
 }
 
 func parseArgs(args []string) ([]string, []string, []string, error) {
-    var paramArgs []string
-    var annotArgs []string
-    var whiskErr error
-
-    i := 0
-
-    for i < len(args) {
-        if args[i] == "-P" || args[i] == "--param-file" {
-            paramArgs, args, whiskErr = getValueFromArgs(args, i, paramArgs)
-            if whiskErr != nil {
-                whisk.Debug(whisk.DbgError, "getValueFromArgs(%#v, %d) failed: %s\n", args, i, whiskErr)
-                errMsg := wski18n.T("The parameter arguments are invalid: {{.err}}",
-                    map[string]interface{}{"err": whiskErr})
-                whiskErr = whisk.MakeWskError(errors.New(errMsg), whisk.EXIT_CODE_ERR_GENERAL, whisk.DISPLAY_MSG,
-                    whisk.DISPLAY_USAGE)
-                return nil, nil, nil, whiskErr
-            }
-
-            filename := paramArgs[len(paramArgs) - 1]
-            paramArgs[len(paramArgs) - 1], whiskErr = ReadFile(filename)
-            if whiskErr != nil {
-                whisk.Debug(whisk.DbgError, "readFile(%s) error: %s\n", filename, whiskErr)
-                return nil, nil, nil, whiskErr
-            }
-        } else if args[i] == "-A" || args[i] == "--annotation-file" {
-            annotArgs, args, whiskErr = getValueFromArgs(args, i, annotArgs)
-            if whiskErr != nil {
-                whisk.Debug(whisk.DbgError, "getValueFromArgs(%#v, %d) failed: %s\n", args, i, whiskErr)
-                errMsg := wski18n.T("The annotation arguments are invalid: {{.err}}",
-                    map[string]interface{}{"err": whiskErr})
-                whiskErr = whisk.MakeWskError(errors.New(errMsg), whisk.EXIT_CODE_ERR_GENERAL, whisk.DISPLAY_MSG,
-                    whisk.DISPLAY_USAGE)
-                return nil, nil, nil, whiskErr
-            }
-
-            filename := annotArgs[len(annotArgs) - 1]
-            annotArgs[len(annotArgs) - 1], whiskErr = ReadFile(filename)
-            if whiskErr != nil {
-                whisk.Debug(whisk.DbgError, "readFile(%s) error: %s\n", filename, whiskErr)
-                return nil, nil, nil, whiskErr
-            }
-        } else if args[i] == "-p" || args[i] == "--param" {
-            paramArgs, args, whiskErr = getKeyValueArgs(args, i, paramArgs)
-            if whiskErr != nil {
-                whisk.Debug(whisk.DbgError, "getKeyValueArgs(%#v, %d) failed: %s\n", args, i, whiskErr)
-                errMsg := wski18n.T("The parameter arguments are invalid: {{.err}}",
-                    map[string]interface{}{"err": whiskErr})
-                whiskErr = whisk.MakeWskError(errors.New(errMsg), whisk.EXIT_CODE_ERR_GENERAL, whisk.DISPLAY_MSG,
-                    whisk.DISPLAY_USAGE)
-                return nil, nil, nil, whiskErr
-            }
-        } else if args[i] == "-a" || args[i] == "--annotation"{
-            annotArgs, args, whiskErr = getKeyValueArgs(args, i, annotArgs)
-            if whiskErr != nil {
-                whisk.Debug(whisk.DbgError, "getKeyValueArgs(%#v, %d) failed: %s\n", args, i, whiskErr)
-                errMsg := wski18n.T("The annotation arguments are invalid: {{.err}}",
-                    map[string]interface{}{"err": whiskErr})
-                whiskErr = whisk.MakeWskError(errors.New(errMsg), whisk.EXIT_CODE_ERR_GENERAL, whisk.DISPLAY_MSG,
-                    whisk.DISPLAY_USAGE)
-                return nil, nil, nil, whiskErr
-            }
-        } else {
-            i++
-        }
-    }
-
-    whisk.Debug(whisk.DbgInfo, "Found param args '%s'.\n", paramArgs)
-    whisk.Debug(whisk.DbgInfo, "Found annotations args '%s'.\n", annotArgs)
-    whisk.Debug(whisk.DbgInfo, "Arguments with param args removed '%s'.\n", args)
-
-    return args, paramArgs, annotArgs, nil
+	var paramArgs []string
+	var annotArgs []string
+	var whiskErr error
+
+	i := 0
+
+	for i < len(args) {
+		if args[i] == "-P" || args[i] == "--param-file" {
+			paramArgs, args, whiskErr = getValueFromArgs(args, i, paramArgs)
+			if whiskErr != nil {
+				whisk.Debug(whisk.DbgError, "getValueFromArgs(%#v, %d) failed: %s\n", args, i, whiskErr)
+				errMsg := wski18n.T("The parameter arguments are invalid: {{.err}}",
+					map[string]interface{}{"err": whiskErr})
+				whiskErr = whisk.MakeWskError(errors.New(errMsg), whisk.EXIT_CODE_ERR_GENERAL, whisk.DISPLAY_MSG,
+					whisk.DISPLAY_USAGE)
+				return nil, nil, nil, whiskErr
+			}
+
+			filename := paramArgs[len(paramArgs)-1]
+			paramArgs[len(paramArgs)-1], whiskErr = ReadFile(filename)
+			if whiskErr != nil {
+				whisk.Debug(whisk.DbgError, "readFile(%s) error: %s\n", filename, whiskErr)
+				return nil, nil, nil, whiskErr
+			}
+		} else if args[i] == "-A" || args[i] == "--annotation-file" {
+			annotArgs, args, whiskErr = getValueFromArgs(args, i, annotArgs)
+			if whiskErr != nil {
+				whisk.Debug(whisk.DbgError, "getValueFromArgs(%#v, %d) failed: %s\n", args, i, whiskErr)
+				errMsg := wski18n.T("The annotation arguments are invalid: {{.err}}",
+					map[string]interface{}{"err": whiskErr})
+				whiskErr = whisk.MakeWskError(errors.New(errMsg), whisk.EXIT_CODE_ERR_GENERAL, whisk.DISPLAY_MSG,
+					whisk.DISPLAY_USAGE)
+				return nil, nil, nil, whiskErr
+			}
+
+			filename := annotArgs[len(annotArgs)-1]
+			annotArgs[len(annotArgs)-1], whiskErr = ReadFile(filename)
+			if whiskErr != nil {
+				whisk.Debug(whisk.DbgError, "readFile(%s) error: %s\n", filename, whiskErr)
+				return nil, nil, nil, whiskErr
+			}
+		} else if args[i] == "-p" || args[i] == "--param" {
+			paramArgs, args, whiskErr = getKeyValueArgs(args, i, paramArgs)
+			if whiskErr != nil {
+				whisk.Debug(whisk.DbgError, "getKeyValueArgs(%#v, %d) failed: %s\n", args, i, whiskErr)
+				errMsg := wski18n.T("The parameter arguments are invalid: {{.err}}",
+					map[string]interface{}{"err": whiskErr})
+				whiskErr = whisk.MakeWskError(errors.New(errMsg), whisk.EXIT_CODE_ERR_GENERAL, whisk.DISPLAY_MSG,
+					whisk.DISPLAY_USAGE)
+				return nil, nil, nil, whiskErr
+			}
+		} else if args[i] == "-a" || args[i] == "--annotation" {
+			annotArgs, args, whiskErr = getKeyValueArgs(args, i, annotArgs)
+			if whiskErr != nil {
+				whisk.Debug(whisk.DbgError, "getKeyValueArgs(%#v, %d) failed: %s\n", args, i, whiskErr)
+				errMsg := wski18n.T("The annotation arguments are invalid: {{.err}}",
+					map[string]interface{}{"err": whiskErr})
+				whiskErr = whisk.MakeWskError(errors.New(errMsg), whisk.EXIT_CODE_ERR_GENERAL, whisk.DISPLAY_MSG,
+					whisk.DISPLAY_USAGE)
+				return nil, nil, nil, whiskErr
+			}
+		} else {
+			i++
+		}
+	}
+
+	whisk.Debug(whisk.DbgInfo, "Found param args '%s'.\n", paramArgs)
+	whisk.Debug(whisk.DbgInfo, "Found annotations args '%s'.\n", annotArgs)
+	whisk.Debug(whisk.DbgInfo, "Arguments with param args removed '%s'.\n", args)
+
+	return args, paramArgs, annotArgs, nil
 }
 
 func Execute() error {
-    var err error
-
-    whisk.Debug(whisk.DbgInfo, "wsk args: %#v\n", os.Args)
-    os.Args, Flags.common.param, Flags.common.annotation, err = parseArgs(os.Args)
-
-    if err != nil {
-        whisk.Debug(whisk.DbgError, "parseParams(%s) failed: %s\n", os.Args, err)
-        errMsg := wski18n.T("Failed to parse arguments: {{.err}}", map[string]interface{}{"err":err})
-        whiskErr := whisk.MakeWskErrorFromWskError(errors.New(errMsg), err, whisk.EXIT_CODE_ERR_GENERAL,
-            whisk.DISPLAY_MSG, whisk.DISPLAY_USAGE)
-        return whiskErr
-    }
-
-    err = loadProperties()
-    if err != nil {
-        whisk.Debug(whisk.DbgError, "loadProperties() error: %s\n", err)
-        errMsg := wski18n.T("Unable to access configuration properties: {{.err}}", map[string]interface{}{"err":err})
-        whiskErr := whisk.MakeWskErrorFromWskError(errors.New(errMsg), err, whisk.EXIT_CODE_ERR_GENERAL,
-            whisk.DISPLAY_MSG, whisk.DISPLAY_USAGE)
-        return whiskErr
-    }
-
-    return WskCmd.Execute()
+	var err error
+
+	whisk.Debug(whisk.DbgInfo, "wsk args: %#v\n", os.Args)
+	os.Args, Flags.common.param, Flags.common.annotation, err = parseArgs(os.Args)
+
+	if err != nil {
+		whisk.Debug(whisk.DbgError, "parseParams(%s) failed: %s\n", os.Args, err)
+		errMsg := wski18n.T("Failed to parse arguments: {{.err}}", map[string]interface{}{"err": err})
+		whiskErr := whisk.MakeWskErrorFromWskError(errors.New(errMsg), err, whisk.EXIT_CODE_ERR_GENERAL,
+			whisk.DISPLAY_MSG, whisk.DISPLAY_USAGE)
+		return whiskErr
+	}
+
+	err = loadProperties()
+	if err != nil {
+		whisk.Debug(whisk.DbgError, "loadProperties() error: %s\n", err)
+		errMsg := wski18n.T("Unable to access configuration properties: {{.err}}", map[string]interface{}{"err": err})
+		whiskErr := whisk.MakeWskErrorFromWskError(errors.New(errMsg), err, whisk.EXIT_CODE_ERR_GENERAL,
+			whisk.DISPLAY_MSG, whisk.DISPLAY_USAGE)
+		return whiskErr
+	}
+
+	return WskCmd.Execute()
 }
diff --git a/commands/flags.go b/commands/flags.go
index 8a06d05..7229586 100644
--- a/commands/flags.go
+++ b/commands/flags.go
@@ -18,7 +18,7 @@
 package commands
 
 import (
-    "os"
+	"os"
 )
 
 ///////////
@@ -26,132 +26,129 @@ import (
 ///////////
 
 const (
-    MEMORY_FLAG     = "memory"
-    LOG_SIZE_FLAG   = "logsize"
-    TIMEOUT_FLAG    = "timeout"
-    WEB_FLAG        = "web"
-    SAVE_FLAG       = "save"
-    SAVE_AS_FLAG    = "save-as"
+	MEMORY_FLAG   = "memory"
+	LOG_SIZE_FLAG = "logsize"
+	TIMEOUT_FLAG  = "timeout"
+	WEB_FLAG      = "web"
+	SAVE_FLAG     = "save"
+	SAVE_AS_FLAG  = "save-as"
 )
 
-
-var cliDebug = os.Getenv("WSK_CLI_DEBUG")  // Useful for tracing init() code
+var cliDebug = os.Getenv("WSK_CLI_DEBUG") // Useful for tracing init() code
 
 var Flags FlagsStruct
 
 type FlagsStruct struct {
-
-    Global struct {
-        Verbose    bool
-        Debug      bool
-        Cert       string
-        Key        string
-        Auth       string
-        Apihost    string
-        Apiversion string
-        Insecure   bool
-    }
-
-    common struct {
-        blocking    bool
-        annotation  []string
-        annotFile   string
-        param       []string
-        paramFile   string
-        shared      string  // AKA "public" or "publish"
-        skip        int     // skip first N records
-        limit       int     // return max N records
-        full        bool    // return full records (docs=true for client request)
-        summary     bool
-        feed        string  // name of feed
-        detail      bool
-        format      string
-        nameSort   bool    // sorts list alphabetically by entity name
-    }
-
-    property struct {
-        cert            bool
-        key             bool
-        auth            bool
-        apihost         bool
-        apiversion      bool
-        namespace       bool
-        cliversion      bool
-        apibuild        bool
-        apibuildno      bool
-        insecure        bool
-        all             bool
-        apihostSet      string
-        apiversionSet   string
-        namespaceSet    string
-    }
-
-    action ActionFlags
-
-    activation struct {
-        action          string // retrieve results for this action
-        upto            int64  // retrieve results up to certain time
-        since           int64  // retrieve results after certain time
-        seconds         int    // stop polling for activation upda
-        sinceSeconds    int
-        sinceMinutes    int
-        sinceHours      int
-        sinceDays       int
-        exit            int
-        last            bool
-        strip           bool
-    }
-
-    // rule
-    rule       struct {
-        disable bool
-        summary bool
-    }
-
-    // trigger
-    trigger    struct {
-        summary bool
-    }
-
-    //sdk
-    sdk struct {
-        stdout bool
-    }
-
-    // api
-    api        struct {
-        action     string
-        path       string
-        verb       string
-        basepath   string
-        apiname    string
-        configfile string
-        resptype   string
-    }
+	Global struct {
+		Verbose    bool
+		Debug      bool
+		Cert       string
+		Key        string
+		Auth       string
+		Apihost    string
+		Apiversion string
+		Insecure   bool
+	}
+
+	common struct {
+		blocking   bool
+		annotation []string
+		annotFile  string
+		param      []string
+		paramFile  string
+		shared     string // AKA "public" or "publish"
+		skip       int    // skip first N records
+		limit      int    // return max N records
+		full       bool   // return full records (docs=true for client request)
+		summary    bool
+		feed       string // name of feed
+		detail     bool
+		format     string
+		nameSort   bool // sorts list alphabetically by entity name
+	}
+
+	property struct {
+		cert          bool
+		key           bool
+		auth          bool
+		apihost       bool
+		apiversion    bool
+		namespace     bool
+		cliversion    bool
+		apibuild      bool
+		apibuildno    bool
+		insecure      bool
+		all           bool
+		apihostSet    string
+		apiversionSet string
+		namespaceSet  string
+	}
+
+	action ActionFlags
+
+	activation struct {
+		action       string // retrieve results for this action
+		upto         int64  // retrieve results up to certain time
+		since        int64  // retrieve results after certain time
+		seconds      int    // stop polling for activation upda
+		sinceSeconds int
+		sinceMinutes int
+		sinceHours   int
+		sinceDays    int
+		exit         int
+		last         bool
+		strip        bool
+	}
+
+	// rule
+	rule struct {
+		disable bool
+		summary bool
+	}
+
+	// trigger
+	trigger struct {
+		summary bool
+	}
+
+	//sdk
+	sdk struct {
+		stdout bool
+	}
+
+	// api
+	api struct {
+		action     string
+		path       string
+		verb       string
+		basepath   string
+		apiname    string
+		configfile string
+		resptype   string
+	}
 }
 
-
 type ActionFlags struct {
-    docker      string
-    native      bool
-    copy        bool
-    web         string
-    sequence    bool
-    timeout     int
-    memory      int
-    logsize     int
-    result      bool
-    kind        string
-    main        string
-    url         bool
-    save        bool
-    saveAs     string
+	docker   string
+	native   bool
+	copy     bool
+	web      string
+	sequence bool
+	timeout  int
+	memory   int
+	logsize  int
+	result   bool
+	kind     string
+	main     string
+	url      bool
+	save     bool
+	saveAs   string
 }
 
 func IsVerbose() bool {
-    return Flags.Global.Verbose || IsDebug()
+	return Flags.Global.Verbose || IsDebug()
 }
 
 func IsDebug() bool {
-    return len(cliDebug) > 0 || Flags.Global.Debug
+	return len(cliDebug) > 0 || Flags.Global.Debug
 }
diff --git a/commands/namespace.go b/commands/namespace.go
index 6c1727b..15786b0 100644
--- a/commands/namespace.go
+++ b/commands/namespace.go
@@ -18,106 +18,114 @@
 package commands
 
 import (
-    "fmt"
-    "errors"
+	"errors"
+	"fmt"
 
-    "github.com/spf13/cobra"
-    "github.com/fatih/color"
+	"github.com/fatih/color"
+	"github.com/spf13/cobra"
 
-    "github.com/apache/incubator-openwhisk-client-go/whisk"
-    "github.com/apache/incubator-openwhisk-cli/wski18n"
+	"github.com/apache/incubator-openwhisk-cli/wski18n"
+	"github.com/apache/incubator-openwhisk-client-go/whisk"
 )
 
 // namespaceCmd represents the namespace command
 var namespaceCmd = &cobra.Command{
-    Use:   "namespace",
-    Short: wski18n.T("work with namespaces"),
+	Use:   "namespace",
+	Short: wski18n.T("work with namespaces"),
 }
 
 var namespaceListCmd = &cobra.Command{
-    Use:   "list",
-    Short: wski18n.T("list available namespaces"),
-    SilenceUsage:   true,
-    SilenceErrors:  true,
-    PreRunE: SetupClientConfig,
-    RunE: func(cmd *cobra.Command, args []string) error {
-        // add "TYPE" --> public / private
-
-        if whiskErr := CheckArgs(args, 0, 0, "Namespace list", wski18n.T("No arguments are required.")); whiskErr != nil {
-            return whiskErr
-        }
-
-        namespaces, _, err := Client.Namespaces.List()
-        if err != nil {
-            whisk.Debug(whisk.DbgError, "Client.Namespaces.List() error: %s\n", err)
-            errStr := wski18n.T("Unable to obtain the list of available namespaces: {{.err}}",
-                map[string]interface{}{"err": err})
-            werr := whisk.MakeWskErrorFromWskError(errors.New(errStr), err, whisk.EXIT_CODE_ERR_NETWORK, whisk.DISPLAY_MSG, whisk.NO_DISPLAY_USAGE)
-            return werr
-        }
-        printList(namespaces, false) // `-n` flag applies to `namespace get`, not list, so must pass value false for printList here
-        return nil
-    },
+	Use:           "list",
+	Short:         wski18n.T("list available namespaces"),
+	SilenceUsage:  true,
+	SilenceErrors: true,
+	PreRunE:       SetupClientConfig,
+	RunE: func(cmd *cobra.Command, args []string) error {
+		// add "TYPE" --> public / private
+
+		if whiskErr := CheckArgs(args, 0, 0, "Namespace list", wski18n.T("No arguments are required.")); whiskErr != nil {
+			return whiskErr
+		}
+
+		namespaces, _, err := Client.Namespaces.List()
+		if err != nil {
+			whisk.Debug(whisk.DbgError, "Client.Namespaces.List() error: %s\n", err)
+			errStr := wski18n.T("Unable to obtain the list of available namespaces: {{.err}}",
+				map[string]interface{}{"err": err})
+			werr := whisk.MakeWskErrorFromWskError(errors.New(errStr), err, whisk.EXIT_CODE_ERR_NETWORK, whisk.DISPLAY_MSG, whisk.NO_DISPLAY_USAGE)
+			return werr
+		}
+		printList(namespaces, false) // `-n` flag applies to `namespace get`, not list, so must pass value false for printList here
+		return nil
+	},
 }
 
 var namespaceGetCmd = &cobra.Command{
-    Use:   "get",
-    Short: wski18n.T("get triggers, actions, and rules in the registry for namespace"),
-    SilenceUsage:   true,
-    SilenceErrors:  true,
-    PreRunE: SetupClientConfig,
-    RunE: func(cmd *cobra.Command, args []string) error {
-        var err error
-        var namespace string = getClientNamespace()
-
-        if (!(len(args) == 1 && args[0] == "/_")) {
-            if whiskErr := CheckArgs(args, 0, 0, "Namespace get",
-                wski18n.T("No arguments are required.")); whiskErr != nil {
-                return whiskErr
-            }
-        }
-
-        actions, _, err := Client.Actions.List("", &whisk.ActionListOptions{ Skip: 0, Limit: 0 })
-        if err != nil { return entityListError(err, namespace,"Actions") }
-
-        packages, _, err := Client.Packages.List(&whisk.PackageListOptions{ Skip: 0, Limit: 0 })
-        if err != nil { return entityListError(err, namespace,"Packages") }
-
-        triggers, _, err := Client.Triggers.List(&whisk.TriggerListOptions{ Skip: 0, Limit: 0 })
-        if err != nil { return entityListError(err, namespace,"Triggers") }
-
-        rules, _, err := Client.Rules.List(&whisk.RuleListOptions{ Skip: 0, Limit: 0 })
-        if err != nil { return entityListError(err, namespace,"Rules") }
-        //No errors, lets attempt to retrieve the status of each rule
-        for index, rule := range rules {
-            ruleStatus, _, err := Client.Rules.Get(rule.Name)
-            if err != nil {
-                errStr := wski18n.T("Unable to get status of rule '{{.name}}': {{.err}}",
-                    map[string]interface{}{"name": rule.Name, "err": err})
-                fmt.Println(errStr)
-                werr := whisk.MakeWskErrorFromWskError(errors.New(errStr), err, whisk.EXIT_CODE_ERR_GENERAL, whisk.DISPLAY_MSG, whisk.NO_DISPLAY_USAGE)
-                return werr
-            }
-            rules[index].Status = ruleStatus.Status
-        }
-
-        fmt.Fprintf(color.Output, wski18n.T("Entities in namespace: {{.namespace}}\n",
-            map[string]interface{}{"namespace": boldString(getClientNamespace())}))
-        sortByName := Flags.common.nameSort
-        printList(packages, sortByName)
-        printList(actions, sortByName)
-        printList(triggers, sortByName)
-        printList(rules, sortByName)
-
-        return nil
-    },
+	Use:           "get",
+	Short:         wski18n.T("get triggers, actions, and rules in the registry for namespace"),
+	SilenceUsage:  true,
+	SilenceErrors: true,
+	PreRunE:       SetupClientConfig,
+	RunE: func(cmd *cobra.Command, args []string) error {
+		var err error
+		var namespace string = getClientNamespace()
+
+		if !(len(args) == 1 && args[0] == "/_") {
+			if whiskErr := CheckArgs(args, 0, 0, "Namespace get",
+				wski18n.T("No arguments are required.")); whiskErr != nil {
+				return whiskErr
+			}
+		}
+
+		actions, _, err := Client.Actions.List("", &whisk.ActionListOptions{Skip: 0, Limit: 0})
+		if err != nil {
+			return entityListError(err, namespace, "Actions")
+		}
+
+		packages, _, err := Client.Packages.List(&whisk.PackageListOptions{Skip: 0, Limit: 0})
+		if err != nil {
+			return entityListError(err, namespace, "Packages")
+		}
+
+		triggers, _, err := Client.Triggers.List(&whisk.TriggerListOptions{Skip: 0, Limit: 0})
+		if err != nil {
+			return entityListError(err, namespace, "Triggers")
+		}
+
+		rules, _, err := Client.Rules.List(&whisk.RuleListOptions{Skip: 0, Limit: 0})
+		if err != nil {
+			return entityListError(err, namespace, "Rules")
+		}
+		//No errors, lets attempt to retrieve the status of each rule
+		for index, rule := range rules {
+			ruleStatus, _, err := Client.Rules.Get(rule.Name)
+			if err != nil {
+				errStr := wski18n.T("Unable to get status of rule '{{.name}}': {{.err}}",
+					map[string]interface{}{"name": rule.Name, "err": err})
+				fmt.Println(errStr)
+				werr := whisk.MakeWskErrorFromWskError(errors.New(errStr), err, whisk.EXIT_CODE_ERR_GENERAL, whisk.DISPLAY_MSG, whisk.NO_DISPLAY_USAGE)
+				return werr
+			}
+			rules[index].Status = ruleStatus.Status
+		}
+
+		fmt.Fprintf(color.Output, wski18n.T("Entities in namespace: {{.namespace}}\n",
+			map[string]interface{}{"namespace": boldString(getClientNamespace())}))
+		sortByName := Flags.common.nameSort
+		printList(packages, sortByName)
+		printList(actions, sortByName)
+		printList(triggers, sortByName)
+		printList(rules, sortByName)
+
+		return nil
+	},
 }
 
 func init() {
-    namespaceGetCmd.Flags().BoolVarP(&Flags.common.nameSort, "name-sort", "n", false, wski18n.T("sorts a list alphabetically by entity name; only applicable within the limit/skip returned entity block"))
+	namespaceGetCmd.Flags().BoolVarP(&Flags.common.nameSort, "name-sort", "n", false, wski18n.T("sorts a list alphabetically by entity name; only applicable within the limit/skip returned entity block"))
 
-    namespaceCmd.AddCommand(
-        namespaceListCmd,
-        namespaceGetCmd,
-    )
+	namespaceCmd.AddCommand(
+		namespaceListCmd,
+		namespaceGetCmd,
+	)
 }
diff --git a/commands/package.go b/commands/package.go
index c83ee53..1f62c93 100644
--- a/commands/package.go
+++ b/commands/package.go
@@ -18,522 +18,522 @@
 package commands
 
 import (
-  "errors"
-  "fmt"
-  "net/http"
+	"errors"
+	"fmt"
+	"net/http"
 
-  "github.com/apache/incubator-openwhisk-client-go/whisk"
-  "github.com/apache/incubator-openwhisk-cli/wski18n"
+	"github.com/apache/incubator-openwhisk-cli/wski18n"
+	"github.com/apache/incubator-openwhisk-client-go/whisk"
 
-  "github.com/fatih/color"
-  "github.com/spf13/cobra"
+	"github.com/fatih/color"
+	"github.com/spf13/cobra"
 )
 
 var packageCmd = &cobra.Command{
-  Use:   "package",
-  Short: wski18n.T("work with packages"),
+	Use:   "package",
+	Short: wski18n.T("work with packages"),
 }
 
 var packageBindCmd = &cobra.Command{
-  Use:           "bind PACKAGE_NAME BOUND_PACKAGE_NAME",
-  Short:         wski18n.T("bind parameters to a package"),
-  SilenceUsage:  true,
-  SilenceErrors: true,
-  PreRunE:       SetupClientConfig,
-  RunE: func(cmd *cobra.Command, args []string) error {
-    var err error
-    var pkgQualifiedName = new(QualifiedName)
-    var bindQualifiedName = new(QualifiedName)
-
-    if whiskErr := CheckArgs(args, 2, 2, "Package bind",
-            wski18n.T("A package name and binding name are required.")); whiskErr != nil {
-      return whiskErr
-    }
-
-    packageName := args[0]
-    if pkgQualifiedName, err = NewQualifiedName(packageName); err != nil {
-      return NewQualifiedNameError(packageName, err)
-    }
-
-    bindingName := args[1]
-    if bindQualifiedName, err = NewQualifiedName(bindingName); err != nil {
-      return NewQualifiedNameError(bindingName, err)
-    }
-
-    Client.Namespace = bindQualifiedName.GetNamespace()
-
-    // Convert the binding's list of default parameters from a string into []KeyValue
-    // The 1 or more --param arguments have all been combined into a single []string
-    // e.g.   --p arg1,arg2 --p arg3,arg4   ->  [arg1, arg2, arg3, arg4]
-
-    whisk.Debug(whisk.DbgInfo, "Parsing parameters: %#v\n", Flags.common.param)
-    parameters, err := getJSONFromStrings(Flags.common.param, true)
-
-    if err != nil {
-      whisk.Debug(whisk.DbgError, "getJSONFromStrings(%#v, true) failed: %s\n", Flags.common.param, err)
-      errStr := wski18n.T("Invalid parameter argument '{{.param}}': {{.err}}",
-          map[string]interface{}{"param": fmt.Sprintf("%#v",Flags.common.param), "err": err})
-      werr := whisk.MakeWskErrorFromWskError(errors.New(errStr), err, whisk.EXIT_CODE_ERR_GENERAL, whisk.DISPLAY_MSG, whisk.DISPLAY_USAGE)
-      return werr
-    }
-
-    // Convert the binding's list of default annotations from a string into []KeyValue
-    // The 1 or more --annotation arguments have all been combined into a single []string
-    // e.g.   --a arg1,arg2 --a arg3,arg4   ->  [arg1, arg2, arg3, arg4]
-    whisk.Debug(whisk.DbgInfo, "Parsing annotations: %#v\n", Flags.common.annotation)
-    annotations, err := getJSONFromStrings(Flags.common.annotation, true)
-
-    if err != nil {
-      whisk.Debug(whisk.DbgError, "getJSONFromStrings(%#v, true) failed: %s\n", Flags.common.annotation, err)
-      errStr := wski18n.T("Invalid annotation argument '{{.annotation}}': {{.err}}",
-          map[string]interface{}{"annotation": fmt.Sprintf("%#v",Flags.common.annotation), "err": err})
-      werr := whisk.MakeWskErrorFromWskError(errors.New(errStr), err, whisk.EXIT_CODE_ERR_GENERAL, whisk.DISPLAY_MSG, whisk.DISPLAY_USAGE)
-      return werr
-    }
-
-    binding := whisk.Binding{
-      Name:      pkgQualifiedName.GetEntityName(),
-      Namespace: pkgQualifiedName.GetNamespace(),
-    }
-
-    p := &whisk.BindingPackage{
-      Name:        bindQualifiedName.GetEntityName(),
-      Annotations: annotations.(whisk.KeyValueArr),
-      Parameters:  parameters.(whisk.KeyValueArr),
-      Binding:     binding,
-    }
-
-    _, _, err = Client.Packages.Insert(p, false)
-    if err != nil {
-      whisk.Debug(whisk.DbgError, "Client.Packages.Insert(%#v, false) failed: %s\n", p, err)
-      errStr := wski18n.T("Binding creation failed: {{.err}}", map[string]interface{}{"err":err})
-      werr := whisk.MakeWskErrorFromWskError(errors.New(errStr), err, whisk.EXIT_CODE_ERR_GENERAL, whisk.DISPLAY_MSG, whisk.NO_DISPLAY_USAGE)
-      return werr
-    }
-
-    fmt.Fprintf(color.Output, wski18n.T("{{.ok}} created binding {{.name}}\n",
-      map[string]interface{}{"ok": color.GreenString(wski18n.T("ok:")), "name":boldString(bindingName)}))
-    return nil
-  },
+	Use:           "bind PACKAGE_NAME BOUND_PACKAGE_NAME",
+	Short:         wski18n.T("bind parameters to a package"),
+	SilenceUsage:  true,
+	SilenceErrors: true,
+	PreRunE:       SetupClientConfig,
+	RunE: func(cmd *cobra.Command, args []string) error {
+		var err error
+		var pkgQualifiedName = new(QualifiedName)
+		var bindQualifiedName = new(QualifiedName)
+
+		if whiskErr := CheckArgs(args, 2, 2, "Package bind",
+			wski18n.T("A package name and binding name are required.")); whiskErr != nil {
+			return whiskErr
+		}
+
+		packageName := args[0]
+		if pkgQualifiedName, err = NewQualifiedName(packageName); err != nil {
+			return NewQualifiedNameError(packageName, err)
+		}
+
+		bindingName := args[1]
+		if bindQualifiedName, err = NewQualifiedName(bindingName); err != nil {
+			return NewQualifiedNameError(bindingName, err)
+		}
+
+		Client.Namespace = bindQualifiedName.GetNamespace()
+
+		// Convert the binding's list of default parameters from a string into []KeyValue
+		// The 1 or more --param arguments have all been combined into a single []string
+		// e.g.   --p arg1,arg2 --p arg3,arg4   ->  [arg1, arg2, arg3, arg4]
+
+		whisk.Debug(whisk.DbgInfo, "Parsing parameters: %#v\n", Flags.common.param)
+		parameters, err := getJSONFromStrings(Flags.common.param, true)
+
+		if err != nil {
+			whisk.Debug(whisk.DbgError, "getJSONFromStrings(%#v, true) failed: %s\n", Flags.common.param, err)
+			errStr := wski18n.T("Invalid parameter argument '{{.param}}': {{.err}}",
+				map[string]interface{}{"param": fmt.Sprintf("%#v", Flags.common.param), "err": err})
+			werr := whisk.MakeWskErrorFromWskError(errors.New(errStr), err, whisk.EXIT_CODE_ERR_GENERAL, whisk.DISPLAY_MSG, whisk.DISPLAY_USAGE)
+			return werr
+		}
+
+		// Convert the binding's list of default annotations from a string into []KeyValue
+		// The 1 or more --annotation arguments have all been combined into a single []string
+		// e.g.   --a arg1,arg2 --a arg3,arg4   ->  [arg1, arg2, arg3, arg4]
+		whisk.Debug(whisk.DbgInfo, "Parsing annotations: %#v\n", Flags.common.annotation)
+		annotations, err := getJSONFromStrings(Flags.common.annotation, true)
+
+		if err != nil {
+			whisk.Debug(whisk.DbgError, "getJSONFromStrings(%#v, true) failed: %s\n", Flags.common.annotation, err)
+			errStr := wski18n.T("Invalid annotation argument '{{.annotation}}': {{.err}}",
+				map[string]interface{}{"annotation": fmt.Sprintf("%#v", Flags.common.annotation), "err": err})
+			werr := whisk.MakeWskErrorFromWskError(errors.New(errStr), err, whisk.EXIT_CODE_ERR_GENERAL, whisk.DISPLAY_MSG, whisk.DISPLAY_USAGE)
+			return werr
+		}
+
+		binding := whisk.Binding{
+			Name:      pkgQualifiedName.GetEntityName(),
+			Namespace: pkgQualifiedName.GetNamespace(),
+		}
+
+		p := &whisk.BindingPackage{
+			Name:        bindQualifiedName.GetEntityName(),
+			Annotations: annotations.(whisk.KeyValueArr),
+			Parameters:  parameters.(whisk.KeyValueArr),
+			Binding:     binding,
+		}
+
+		_, _, err = Client.Packages.Insert(p, false)
+		if err != nil {
+			whisk.Debug(whisk.DbgError, "Client.Packages.Insert(%#v, false) failed: %s\n", p, err)
+			errStr := wski18n.T("Binding creation failed: {{.err}}", map[string]interface{}{"err": err})
+			werr := whisk.MakeWskErrorFromWskError(errors.New(errStr), err, whisk.EXIT_CODE_ERR_GENERAL, whisk.DISPLAY_MSG, whisk.NO_DISPLAY_USAGE)
+			return werr
+		}
+
+		fmt.Fprintf(color.Output, wski18n.T("{{.ok}} created binding {{.name}}\n",
+			map[string]interface{}{"ok": color.GreenString(wski18n.T("ok:")), "name": boldString(bindingName)}))
+		return nil
+	},
 }
 
 var packageCreateCmd = &cobra.Command{
-  Use:           "create PACKAGE_NAME",
-  Short:         wski18n.T("create a new package"),
-  SilenceUsage:  true,
-  SilenceErrors: true,
-  PreRunE:       SetupClientConfig,
-  RunE: func(cmd *cobra.Command, args []string) error {
-    var err error
-    var shared, sharedSet bool
-    var qualifiedName = new(QualifiedName)
-
-    if whiskErr := CheckArgs(args, 1, 1, "Package create", wski18n.T("A package name is required.")); whiskErr != nil {
-      return whiskErr
-    }
-
-    if qualifiedName, err = NewQualifiedName(args[0]); err != nil {
-      return NewQualifiedNameError(args[0], err)
-    }
-
-    Client.Namespace = qualifiedName.GetNamespace()
-
-    if shared, sharedSet, err = parseShared(Flags.common.shared); err != nil {
-      whisk.Debug(whisk.DbgError, "parseShared(%s) failed: %s\n", Flags.common.shared, err)
-      return err
-    }
-
-    whisk.Debug(whisk.DbgInfo, "Parsing parameters: %#v\n", Flags.common.param)
-    parameters, err := getJSONFromStrings(Flags.common.param, true)
-
-    if err != nil {
-      whisk.Debug(whisk.DbgError, "getJSONFromStrings(%#v, true) failed: %s\n", Flags.common.param, err)
-      errStr := wski18n.T("Invalid parameter argument '{{.param}}': {{.err}}",
-          map[string]interface{}{"param": fmt.Sprintf("%#v",Flags.common.param), "err": err})
-      werr := whisk.MakeWskErrorFromWskError(errors.New(errStr), err, whisk.EXIT_CODE_ERR_GENERAL, whisk.DISPLAY_MSG, whisk.DISPLAY_USAGE)
-      return werr
-    }
-
-    whisk.Debug(whisk.DbgInfo, "Parsing annotations: %#v\n", Flags.common.annotation)
-    annotations, err := getJSONFromStrings(Flags.common.annotation, true)
-
-    if err != nil {
-      whisk.Debug(whisk.DbgError, "getJSONFromStrings(%#v, true) failed: %s\n", Flags.common.annotation, err)
-      errStr := wski18n.T("Invalid annotation argument '{{.annotation}}': {{.err}}",
-          map[string]interface{}{"annotation": fmt.Sprintf("%#v",Flags.common.annotation), "err": err})
-      werr := whisk.MakeWskErrorFromWskError(errors.New(errStr), err, whisk.EXIT_CODE_ERR_GENERAL, whisk.DISPLAY_MSG, whisk.DISPLAY_USAGE)
-      return werr
-    }
-
-    p := &whisk.Package{
-      Name:        qualifiedName.GetEntityName(),
-      Namespace:   qualifiedName.GetNamespace(),
-      Annotations: annotations.(whisk.KeyValueArr),
-      Parameters:  parameters.(whisk.KeyValueArr),
-    }
-
-    if sharedSet {
-      p.Publish = &shared
-    }
-
-    p, _, err = Client.Packages.Insert(p, false)
-    if err != nil {
-      whisk.Debug(whisk.DbgError, "Client.Packages.Insert(%#v, false) failed: %s\n", p, err)
-      errStr := wski18n.T(
-        "Unable to create package '{{.name}}': {{.err}}",
-        map[string]interface{}{
-          "name": qualifiedName.GetEntityName(),
-          "err": err,
-        })
-      werr := whisk.MakeWskErrorFromWskError(errors.New(errStr), err, whisk.EXIT_CODE_ERR_GENERAL, whisk.DISPLAY_MSG, whisk.NO_DISPLAY_USAGE)
-      return werr
-    }
-
-    fmt.Fprintf(color.Output, wski18n.T("{{.ok}} created package {{.name}}\n",
-      map[string]interface{}{"ok": color.GreenString(wski18n.T("ok:")), "name":boldString(qualifiedName.GetEntityName())}))
-    return nil
-  },
+	Use:           "create PACKAGE_NAME",
+	Short:         wski18n.T("create a new package"),
+	SilenceUsage:  true,
+	SilenceErrors: true,
+	PreRunE:       SetupClientConfig,
+	RunE: func(cmd *cobra.Command, args []string) error {
+		var err error
+		var shared, sharedSet bool
+		var qualifiedName = new(QualifiedName)
+
+		if whiskErr := CheckArgs(args, 1, 1, "Package create", wski18n.T("A package name is required.")); whiskErr != nil {
+			return whiskErr
+		}
+
+		if qualifiedName, err = NewQualifiedName(args[0]); err != nil {
+			return NewQualifiedNameError(args[0], err)
+		}
+
+		Client.Namespace = qualifiedName.GetNamespace()
+
+		if shared, sharedSet, err = parseShared(Flags.common.shared); err != nil {
+			whisk.Debug(whisk.DbgError, "parseShared(%s) failed: %s\n", Flags.common.shared, err)
+			return err
+		}
+
+		whisk.Debug(whisk.DbgInfo, "Parsing parameters: %#v\n", Flags.common.param)
+		parameters, err := getJSONFromStrings(Flags.common.param, true)
+
+		if err != nil {
+			whisk.Debug(whisk.DbgError, "getJSONFromStrings(%#v, true) failed: %s\n", Flags.common.param, err)
+			errStr := wski18n.T("Invalid parameter argument '{{.param}}': {{.err}}",
+				map[string]interface{}{"param": fmt.Sprintf("%#v", Flags.common.param), "err": err})
+			werr := whisk.MakeWskErrorFromWskError(errors.New(errStr), err, whisk.EXIT_CODE_ERR_GENERAL, whisk.DISPLAY_MSG, whisk.DISPLAY_USAGE)
+			return werr
+		}
+
+		whisk.Debug(whisk.DbgInfo, "Parsing annotations: %#v\n", Flags.common.annotation)
+		annotations, err := getJSONFromStrings(Flags.common.annotation, true)
+
+		if err != nil {
+			whisk.Debug(whisk.DbgError, "getJSONFromStrings(%#v, true) failed: %s\n", Flags.common.annotation, err)
+			errStr := wski18n.T("Invalid annotation argument '{{.annotation}}': {{.err}}",
+				map[string]interface{}{"annotation": fmt.Sprintf("%#v", Flags.common.annotation), "err": err})
+			werr := whisk.MakeWskErrorFromWskError(errors.New(errStr), err, whisk.EXIT_CODE_ERR_GENERAL, whisk.DISPLAY_MSG, whisk.DISPLAY_USAGE)
+			return werr
+		}
+
+		p := &whisk.Package{
+			Name:        qualifiedName.GetEntityName(),
+			Namespace:   qualifiedName.GetNamespace(),
+			Annotations: annotations.(whisk.KeyValueArr),
+			Parameters:  parameters.(whisk.KeyValueArr),
+		}
+
+		if sharedSet {
+			p.Publish = &shared
+		}
+
+		p, _, err = Client.Packages.Insert(p, false)
+		if err != nil {
+			whisk.Debug(whisk.DbgError, "Client.Packages.Insert(%#v, false) failed: %s\n", p, err)
+			errStr := wski18n.T(
+				"Unable to create package '{{.name}}': {{.err}}",
+				map[string]interface{}{
+					"name": qualifiedName.GetEntityName(),
+					"err":  err,
+				})
+			werr := whisk.MakeWskErrorFromWskError(errors.New(errStr), err, whisk.EXIT_CODE_ERR_GENERAL, whisk.DISPLAY_MSG, whisk.NO_DISPLAY_USAGE)
+			return werr
+		}
+
+		fmt.Fprintf(color.Output, wski18n.T("{{.ok}} created package {{.name}}\n",
+			map[string]interface{}{"ok": color.GreenString(wski18n.T("ok:")), "name": boldString(qualifiedName.GetEntityName())}))
+		return nil
+	},
 }
 
 var packageUpdateCmd = &cobra.Command{
-  Use:           "update PACKAGE_NAME",
-  Short:         wski18n.T("update an existing package, or create a package if it does not exist"),
-  SilenceUsage:  true,
-  SilenceErrors: true,
-  PreRunE:       SetupClientConfig,
-  RunE: func(cmd *cobra.Command, args []string) error {
-    var err error
-    var shared, sharedSet bool
-    var qualifiedName = new(QualifiedName)
-
-    if whiskErr := CheckArgs(args, 1, 1, "Package update", wski18n.T("A package name is required.")); whiskErr != nil {
-      return whiskErr
-    }
-
-    if qualifiedName, err = NewQualifiedName(args[0]); err != nil {
-      return NewQualifiedNameError(args[0], err)
-    }
-
-    Client.Namespace = qualifiedName.GetNamespace()
-
-    if shared, sharedSet, err = parseShared(Flags.common.shared); err != nil {
-      whisk.Debug(whisk.DbgError, "parseShared(%s) failed: %s\n", Flags.common.shared, err)
-      return err
-    }
-
-    whisk.Debug(whisk.DbgInfo, "Parsing parameters: %#v\n", Flags.common.param)
-    parameters, err := getJSONFromStrings(Flags.common.param, true)
-
-    if err != nil {
-      whisk.Debug(whisk.DbgError, "getJSONFromStrings(%#v, true) failed: %s\n", Flags.common.param, err)
-      errStr := wski18n.T("Invalid parameter argument '{{.param}}': {{.err}}",
-          map[string]interface{}{"param": fmt.Sprintf("%#v",Flags.common.param), "err": err})
-      werr := whisk.MakeWskErrorFromWskError(errors.New(errStr), err, whisk.EXIT_CODE_ERR_GENERAL, whisk.DISPLAY_MSG, whisk.DISPLAY_USAGE)
-      return werr
-    }
-
-    whisk.Debug(whisk.DbgInfo, "Parsing annotations: %#v\n", Flags.common.annotation)
-    annotations, err := getJSONFromStrings(Flags.common.annotation, true)
-    if err != nil {
-      whisk.Debug(whisk.DbgError, "getJSONFromStrings(%#v, true) failed: %s\n", Flags.common.annotation, err)
-      errStr := wski18n.T("Invalid annotation argument '{{.annotation}}': {{.err}}",
-          map[string]interface{}{"annotation": fmt.Sprintf("%#v",Flags.common.annotation), "err": err})
-      werr := whisk.MakeWskErrorFromWskError(errors.New(errStr), err, whisk.EXIT_CODE_ERR_GENERAL, whisk.DISPLAY_MSG, whisk.DISPLAY_USAGE)
-      return werr
-    }
-
-    p := &whisk.Package{
-      Name:        qualifiedName.GetEntityName(),
-      Namespace:   qualifiedName.GetNamespace(),
-      Annotations: annotations.(whisk.KeyValueArr),
-      Parameters:  parameters.(whisk.KeyValueArr),
-    }
-
-    if sharedSet {
-      p.Publish = &shared
-    }
-
-    p, _, err = Client.Packages.Insert(p, true)
-    if err != nil {
-      whisk.Debug(whisk.DbgError, "Client.Packages.Insert(%#v, true) failed: %s\n", p, err)
-      errStr := wski18n.T("Package update failed: {{.err}}", map[string]interface{}{"err":err})
-      werr := whisk.MakeWskErrorFromWskError(errors.New(errStr), err, whisk.EXIT_CODE_ERR_GENERAL, whisk.DISPLAY_MSG, whisk.NO_DISPLAY_USAGE)
-      return werr
-    }
-
-    fmt.Fprintf(color.Output, wski18n.T("{{.ok}} updated package {{.name}}\n",
-      map[string]interface{}{"ok": color.GreenString(wski18n.T("ok:")), "name":boldString(qualifiedName.GetEntityName())}))
-    return nil
-  },
+	Use:           "update PACKAGE_NAME",
+	Short:         wski18n.T("update an existing package, or create a package if it does not exist"),
+	SilenceUsage:  true,
+	SilenceErrors: true,
+	PreRunE:       SetupClientConfig,
+	RunE: func(cmd *cobra.Command, args []string) error {
+		var err error
+		var shared, sharedSet bool
+		var qualifiedName = new(QualifiedName)
+
+		if whiskErr := CheckArgs(args, 1, 1, "Package update", wski18n.T("A package name is required.")); whiskErr != nil {
+			return whiskErr
+		}
+
+		if qualifiedName, err = NewQualifiedName(args[0]); err != nil {
+			return NewQualifiedNameError(args[0], err)
+		}
+
+		Client.Namespace = qualifiedName.GetNamespace()
+
+		if shared, sharedSet, err = parseShared(Flags.common.shared); err != nil {
+			whisk.Debug(whisk.DbgError, "parseShared(%s) failed: %s\n", Flags.common.shared, err)
+			return err
+		}
+
+		whisk.Debug(whisk.DbgInfo, "Parsing parameters: %#v\n", Flags.common.param)
+		parameters, err := getJSONFromStrings(Flags.common.param, true)
+
+		if err != nil {
+			whisk.Debug(whisk.DbgError, "getJSONFromStrings(%#v, true) failed: %s\n", Flags.common.param, err)
+			errStr := wski18n.T("Invalid parameter argument '{{.param}}': {{.err}}",
+				map[string]interface{}{"param": fmt.Sprintf("%#v", Flags.common.param), "err": err})
+			werr := whisk.MakeWskErrorFromWskError(errors.New(errStr), err, whisk.EXIT_CODE_ERR_GENERAL, whisk.DISPLAY_MSG, whisk.DISPLAY_USAGE)
+			return werr
+		}
+
+		whisk.Debug(whisk.DbgInfo, "Parsing annotations: %#v\n", Flags.common.annotation)
+		annotations, err := getJSONFromStrings(Flags.common.annotation, true)
+		if err != nil {
+			whisk.Debug(whisk.DbgError, "getJSONFromStrings(%#v, true) failed: %s\n", Flags.common.annotation, err)
+			errStr := wski18n.T("Invalid annotation argument '{{.annotation}}': {{.err}}",
+				map[string]interface{}{"annotation": fmt.Sprintf("%#v", Flags.common.annotation), "err": err})
+			werr := whisk.MakeWskErrorFromWskError(errors.New(errStr), err, whisk.EXIT_CODE_ERR_GENERAL, whisk.DISPLAY_MSG, whisk.DISPLAY_USAGE)
+			return werr
+		}
+
+		p := &whisk.Package{
+			Name:        qualifiedName.GetEntityName(),
+			Namespace:   qualifiedName.GetNamespace(),
+			Annotations: annotations.(whisk.KeyValueArr),
+			Parameters:  parameters.(whisk.KeyValueArr),
+		}
+
+		if sharedSet {
+			p.Publish = &shared
+		}
+
+		p, _, err = Client.Packages.Insert(p, true)
+		if err != nil {
+			whisk.Debug(whisk.DbgError, "Client.Packages.Insert(%#v, true) failed: %s\n", p, err)
+			errStr := wski18n.T("Package update failed: {{.err}}", map[string]interface{}{"err": err})
+			werr := whisk.MakeWskErrorFromWskError(errors.New(errStr), err, whisk.EXIT_CODE_ERR_GENERAL, whisk.DISPLAY_MSG, whisk.NO_DISPLAY_USAGE)
+			return werr
+		}
+
+		fmt.Fprintf(color.Output, wski18n.T("{{.ok}} updated package {{.name}}\n",
+			map[string]interface{}{"ok": color.GreenString(wski18n.T("ok:")), "name": boldString(qualifiedName.GetEntityName())}))
+		return nil
+	},
 }
 
 var packageGetCmd = &cobra.Command{
-  Use:           "get PACKAGE_NAME [FIELD_FILTER]",
-  Short:         wski18n.T("get package"),
-  SilenceUsage:  true,
-  SilenceErrors: true,
-  PreRunE:       SetupClientConfig,
-  RunE: func(cmd *cobra.Command, args []string) error {
-    var err error
-    var field string
-    var qualifiedName = new(QualifiedName)
-
-    if whiskErr := CheckArgs(args, 1, 2, "Package get", wski18n.T("A package name is required.")); whiskErr != nil {
-      return whiskErr
-    }
-
-    if len(args) > 1 {
-      field = args[1]
-
-      if !fieldExists(&whisk.Package{}, field) {
-        errMsg := wski18n.T("Invalid field filter '{{.arg}}'.", map[string]interface{}{"arg": field})
-        whiskErr := whisk.MakeWskError(errors.New(errMsg), whisk.EXIT_CODE_ERR_GENERAL,
-          whisk.DISPLAY_MSG, whisk.NO_DISPLAY_USAGE)
-        return whiskErr
-      }
-    }
-
-    if qualifiedName, err = NewQualifiedName(args[0]); err != nil {
-      return NewQualifiedNameError(args[0], err)
-    }
-    Client.Namespace = qualifiedName.GetNamespace()
-
-    xPackage, _, err := Client.Packages.Get(qualifiedName.GetEntityName())
-    if err != nil {
-      whisk.Debug(whisk.DbgError, "Client.Packages.Get(%s) failed: %s\n", qualifiedName.GetEntityName(), err)
-      errStr := wski18n.T(
-        "Unable to get package '{{.name}}': {{.err}}",
-        map[string]interface{}{
-          "name": qualifiedName.GetEntityName(),
-          "err":err,
-        })
-      werr := whisk.MakeWskErrorFromWskError(errors.New(errStr), err, whisk.EXIT_CODE_ERR_GENERAL, whisk.DISPLAY_MSG, whisk.NO_DISPLAY_USAGE)
-      return werr
-    }
-
-    if Flags.common.summary {
-      printSummary(xPackage)
-    } else {
-
-      if len(field) > 0 {
-        fmt.Fprintf(color.Output, wski18n.T("{{.ok}} got package {{.name}}, displaying field {{.field}}\n",
-          map[string]interface{}{"ok": color.GreenString("ok:"), "name": boldString(qualifiedName.GetEntityName()),
-          "field": boldString(field)}))
-        printField(xPackage, field)
-      } else {
-        fmt.Fprintf(color.Output, wski18n.T("{{.ok}} got package {{.name}}\n",
-          map[string]interface{}{"ok": color.GreenString("ok:"), "name": boldString(qualifiedName.GetEntityName())}))
-        printJSON(xPackage)
-      }
-    }
-
-    return nil
-  },
+	Use:           "get PACKAGE_NAME [FIELD_FILTER]",
+	Short:         wski18n.T("get package"),
+	SilenceUsage:  true,
+	SilenceErrors: true,
+	PreRunE:       SetupClientConfig,
+	RunE: func(cmd *cobra.Command, args []string) error {
+		var err error
+		var field string
+		var qualifiedName = new(QualifiedName)
+
+		if whiskErr := CheckArgs(args, 1, 2, "Package get", wski18n.T("A package name is required.")); whiskErr != nil {
+			return whiskErr
+		}
+
+		if len(args) > 1 {
+			field = args[1]
+
+			if !fieldExists(&whisk.Package{}, field) {
+				errMsg := wski18n.T("Invalid field filter '{{.arg}}'.", map[string]interface{}{"arg": field})
+				whiskErr := whisk.MakeWskError(errors.New(errMsg), whisk.EXIT_CODE_ERR_GENERAL,
+					whisk.DISPLAY_MSG, whisk.NO_DISPLAY_USAGE)
+				return whiskErr
+			}
+		}
+
+		if qualifiedName, err = NewQualifiedName(args[0]); err != nil {
+			return NewQualifiedNameError(args[0], err)
+		}
+		Client.Namespace = qualifiedName.GetNamespace()
+
+		xPackage, _, err := Client.Packages.Get(qualifiedName.GetEntityName())
+		if err != nil {
+			whisk.Debug(whisk.DbgError, "Client.Packages.Get(%s) failed: %s\n", qualifiedName.GetEntityName(), err)
+			errStr := wski18n.T(
+				"Unable to get package '{{.name}}': {{.err}}",
+				map[string]interface{}{
+					"name": qualifiedName.GetEntityName(),
+					"err":  err,
+				})
+			werr := whisk.MakeWskErrorFromWskError(errors.New(errStr), err, whisk.EXIT_CODE_ERR_GENERAL, whisk.DISPLAY_MSG, whisk.NO_DISPLAY_USAGE)
+			return werr
+		}
+
+		if Flags.common.summary {
+			printSummary(xPackage)
+		} else {
+
+			if len(field) > 0 {
+				fmt.Fprintf(color.Output, wski18n.T("{{.ok}} got package {{.name}}, displaying field {{.field}}\n",
+					map[string]interface{}{"ok": color.GreenString("ok:"), "name": boldString(qualifiedName.GetEntityName()),
+						"field": boldString(field)}))
+				printField(xPackage, field)
+			} else {
+				fmt.Fprintf(color.Output, wski18n.T("{{.ok}} got package {{.name}}\n",
+					map[string]interface{}{"ok": color.GreenString("ok:"), "name": boldString(qualifiedName.GetEntityName())}))
+				printJSON(xPackage)
+			}
+		}
+
+		return nil
+	},
 }
 
 var packageDeleteCmd = &cobra.Command{
-  Use:           "delete PACKAGE_NAME",
-  Short:         wski18n.T("delete package"),
-  SilenceUsage:  true,
-  SilenceErrors: true,
-  PreRunE:       SetupClientConfig,
-  RunE: func(cmd *cobra.Command, args []string) error {
-    var err error
-    var qualifiedName = new(QualifiedName)
-
-    if whiskErr := CheckArgs(args, 1, 1, "Package delete", wski18n.T("A package name is required.")); whiskErr != nil {
-      return whiskErr
-    }
-
-    if qualifiedName, err = NewQualifiedName(args[0]); err != nil {
-      return NewQualifiedNameError(args[0], err)
-    }
-
-    Client.Namespace = qualifiedName.GetNamespace()
-
-    _, err = Client.Packages.Delete(qualifiedName.GetEntityName())
-    if err != nil {
-      whisk.Debug(whisk.DbgError, "Client.Packages.Delete(%s) failed: %s\n", qualifiedName.GetEntityName(), err)
-      errStr := wski18n.T(
-        "Unable to delete package '{{.name}}': {{.err}}",
-        map[string]interface{}{
-          "name": qualifiedName.GetEntityName(),
-          "err": err,
-        })
-      werr := whisk.MakeWskErrorFromWskError(errors.New(errStr), err, whisk.EXIT_CODE_ERR_GENERAL, whisk.DISPLAY_MSG, whisk.NO_DISPLAY_USAGE)
-      return werr
-    }
-
-    fmt.Fprintf(color.Output,
-      wski18n.T("{{.ok}} deleted package {{.name}}\n",
-        map[string]interface{}{"ok": color.GreenString("ok:"), "name": boldString(qualifiedName.GetEntityName())}))
-    return nil
-  },
+	Use:           "delete PACKAGE_NAME",
+	Short:         wski18n.T("delete package"),
+	SilenceUsage:  true,
+	SilenceErrors: true,
+	PreRunE:       SetupClientConfig,
+	RunE: func(cmd *cobra.Command, args []string) error {
+		var err error
+		var qualifiedName = new(QualifiedName)
+
+		if whiskErr := CheckArgs(args, 1, 1, "Package delete", wski18n.T("A package name is required.")); whiskErr != nil {
+			return whiskErr
+		}
+
+		if qualifiedName, err = NewQualifiedName(args[0]); err != nil {
+			return NewQualifiedNameError(args[0], err)
+		}
+
+		Client.Namespace = qualifiedName.GetNamespace()
+
+		_, err = Client.Packages.Delete(qualifiedName.GetEntityName())
+		if err != nil {
+			whisk.Debug(whisk.DbgError, "Client.Packages.Delete(%s) failed: %s\n", qualifiedName.GetEntityName(), err)
+			errStr := wski18n.T(
+				"Unable to delete package '{{.name}}': {{.err}}",
+				map[string]interface{}{
+					"name": qualifiedName.GetEntityName(),
+					"err":  err,
+				})
+			werr := whisk.MakeWskErrorFromWskError(errors.New(errStr), err, whisk.EXIT_CODE_ERR_GENERAL, whisk.DISPLAY_MSG, whisk.NO_DISPLAY_USAGE)
+			return werr
+		}
+
+		fmt.Fprintf(color.Output,
+			wski18n.T("{{.ok}} deleted package {{.name}}\n",
+				map[string]interface{}{"ok": color.GreenString("ok:"), "name": boldString(qualifiedName.GetEntityName())}))
+		return nil
+	},
 }
 
 var packageListCmd = &cobra.Command{
-  Use:           "list [NAMESPACE]",
-  Short:         wski18n.T("list all packages"),
-  SilenceUsage:  true,
-  SilenceErrors: true,
-  PreRunE:       SetupClientConfig,
-  RunE: func(cmd *cobra.Command, args []string) error {
-    var err error
-    var qualifiedName = new(QualifiedName)
-
-    if whiskErr := CheckArgs(args, 0, 1, "Package list",
-      wski18n.T("An optional namespace is the only valid argument.")); whiskErr != nil {
-      return whiskErr
-    }
-
-    if len(args) == 1 {
-      if qualifiedName, err = NewQualifiedName(args[0]); err != nil {
-        return NewQualifiedNameError(args[0], err)
-      }
-
-      if len(qualifiedName.GetEntityName()) > 0 {
-        return entityNameError(qualifiedName.GetEntityName())
-      }
-
-      Client.Namespace = qualifiedName.GetNamespace()
-    }
-
-    options := &whisk.PackageListOptions{
-      Skip:   Flags.common.skip,
-      Limit:  Flags.common.limit,
-    }
-
-    packages, _, err := Client.Packages.List(options)
-    if err != nil {
-      whisk.Debug(whisk.DbgError, "Client.Packages.List(%+v) failed: %s\n", options, err)
-      errStr := wski18n.T("Unable to obtain the list of packages for namespace '{{.name}}': {{.err}}",
-          map[string]interface{}{"name": getClientNamespace(), "err": err})
-      werr := whisk.MakeWskErrorFromWskError(errors.New(errStr), err, whisk.EXIT_CODE_ERR_GENERAL, whisk.DISPLAY_MSG, whisk.NO_DISPLAY_USAGE)
-      return werr
-    }
-
-    sortByName := Flags.common.nameSort
-    printList(packages, sortByName)
-
-    return nil
-  },
+	Use:           "list [NAMESPACE]",
+	Short:         wski18n.T("list all packages"),
+	SilenceUsage:  true,
+	SilenceErrors: true,
+	PreRunE:       SetupClientConfig,
+	RunE: func(cmd *cobra.Command, args []string) error {
+		var err error
+		var qualifiedName = new(QualifiedName)
+
+		if whiskErr := CheckArgs(args, 0, 1, "Package list",
+			wski18n.T("An optional namespace is the only valid argument.")); whiskErr != nil {
+			return whiskErr
+		}
+
+		if len(args) == 1 {
+			if qualifiedName, err = NewQualifiedName(args[0]); err != nil {
+				return NewQualifiedNameError(args[0], err)
+			}
+
+			if len(qualifiedName.GetEntityName()) > 0 {
+				return entityNameError(qualifiedName.GetEntityName())
+			}
+
+			Client.Namespace = qualifiedName.GetNamespace()
+		}
+
+		options := &whisk.PackageListOptions{
+			Skip:  Flags.common.skip,
+			Limit: Flags.common.limit,
+		}
+
+		packages, _, err := Client.Packages.List(options)
+		if err != nil {
+			whisk.Debug(whisk.DbgError, "Client.Packages.List(%+v) failed: %s\n", options, err)
+			errStr := wski18n.T("Unable to obtain the list of packages for namespace '{{.name}}': {{.err}}",
+				map[string]interface{}{"name": getClientNamespace(), "err": err})
+			werr := whisk.MakeWskErrorFromWskError(errors.New(errStr), err, whisk.EXIT_CODE_ERR_GENERAL, whisk.DISPLAY_MSG, whisk.NO_DISPLAY_USAGE)
+			return werr
+		}
+
+		sortByName := Flags.common.nameSort
+		printList(packages, sortByName)
+
+		return nil
+	},
 }
 
 var packageRefreshCmd = &cobra.Command{
-  Use:           "refresh [NAMESPACE]",
-  Short:         wski18n.T("refresh package bindings"),
-  SilenceUsage:  true,
-  SilenceErrors: true,
-  PreRunE:       SetupClientConfig,
-  RunE: func(cmd *cobra.Command, args []string) error {
-    var err error
-    var qualifiedName = new(QualifiedName)
-
-    if whiskErr := CheckArgs(args, 0, 1, "Package refresh",
-        wski18n.T("An optional namespace is the only valid argument.")); whiskErr != nil {
-      return whiskErr
-    }
-
-    if len(args) == 0 {
-      qualifiedName.namespace = getNamespaceFromProp()
-    } else {
-      if qualifiedName, err = NewQualifiedName(args[0]); err != nil {
-        return NewQualifiedNameError(args[0], err)
-      }
-
-      if len(qualifiedName.GetEntityName()) > 0 {
-        return entityNameError(qualifiedName.GetEntityName())
-      }
-    }
-
-    currentNamespace := Client.Config.Namespace
-    Client.Config.Namespace = qualifiedName.GetNamespace()
-
-    defer func() {
-      Client.Config.Namespace = currentNamespace
-    }()
-
-    updates, resp, err := Client.Packages.Refresh()
-    if err != nil {
-      whisk.Debug(whisk.DbgError, "Client.Packages.Refresh() of namespace '%s' failed: %s\n", Client.Config.Namespace, err)
-      errStr := wski18n.T("Package refresh for namespace '{{.name}}' failed: {{.err}}",
-          map[string]interface{}{"name": Client.Config.Namespace, "err": err})
-      werr := whisk.MakeWskErrorFromWskError(errors.New(errStr), err, whisk.EXIT_CODE_ERR_GENERAL, whisk.DISPLAY_MSG, whisk.NO_DISPLAY_USAGE)
-      return werr
-    }
-    whisk.Debug(whisk.DbgInfo, "Refresh updates received: %#v\n", updates)
-
-    switch resp.StatusCode {
-    case http.StatusOK:
-      fmt.Printf(wski18n.T("'{{.name}}' refreshed successfully\n",
-        map[string]interface{}{"name": Client.Config.Namespace}))
-
-      fmt.Println(wski18n.T("created bindings:"))
-
-      if len(updates.Added) > 0 {
-        printArrayContents(updates.Added)
-      }
-
-      fmt.Println(wski18n.T("updated bindings:"))
-
-      if len(updates.Updated) > 0 {
-        printArrayContents(updates.Updated)
-      }
-
-      fmt.Println(wski18n.T("deleted bindings:"))
-
-      if len(updates.Deleted) > 0 {
-        printArrayContents(updates.Deleted)
-      }
-
-    case http.StatusNotImplemented:
-      whisk.Debug(whisk.DbgError, "Client.Packages.Refresh() for namespace '%s' returned 'Not Implemented' HTTP status code: %d\n", Client.Config.Namespace, resp.StatusCode)
-      errStr := wski18n.T("The package refresh feature is not implemented in the target deployment")
-      werr := whisk.MakeWskErrorFromWskError(errors.New(errStr), err, whisk.EXIT_CODE_ERR_NETWORK, whisk.DISPLAY_MSG, whisk.NO_DISPLAY_USAGE)
-      return werr
-    default:
-      whisk.Debug(whisk.DbgError, "Client.Packages.Refresh() for namespace '%s' returned an unexpected HTTP status code: %d\n", Client.Config.Namespace, resp.StatusCode)
-      errStr := wski18n.T("Package refresh for namespace '{{.name}}' failed due to unexpected HTTP status code: {{.code}}",
-          map[string]interface{}{"name": Client.Config.Namespace, "code": resp.StatusCode})
-      werr := whisk.MakeWskErrorFromWskError(errors.New(errStr), err, whisk.EXIT_CODE_ERR_NETWORK, whisk.DISPLAY_MSG, whisk.NO_DISPLAY_USAGE)
-      return werr
-    }
-
-    return nil
-  },
+	Use:           "refresh [NAMESPACE]",
+	Short:         wski18n.T("refresh package bindings"),
+	SilenceUsage:  true,
+	SilenceErrors: true,
+	PreRunE:       SetupClientConfig,
+	RunE: func(cmd *cobra.Command, args []string) error {
+		var err error
+		var qualifiedName = new(QualifiedName)
+
+		if whiskErr := CheckArgs(args, 0, 1, "Package refresh",
+			wski18n.T("An optional namespace is the only valid argument.")); whiskErr != nil {
+			return whiskErr
+		}
+
+		if len(args) == 0 {
+			qualifiedName.namespace = getNamespaceFromProp()
+		} else {
+			if qualifiedName, err = NewQualifiedName(args[0]); err != nil {
+				return NewQualifiedNameError(args[0], err)
+			}
+
+			if len(qualifiedName.GetEntityName()) > 0 {
+				return entityNameError(qualifiedName.GetEntityName())
+			}
+		}
+
+		currentNamespace := Client.Config.Namespace
+		Client.Config.Namespace = qualifiedName.GetNamespace()
+
+		defer func() {
+			Client.Config.Namespace = currentNamespace
+		}()
+
+		updates, resp, err := Client.Packages.Refresh()
+		if err != nil {
+			whisk.Debug(whisk.DbgError, "Client.Packages.Refresh() of namespace '%s' failed: %s\n", Client.Config.Namespace, err)
+			errStr := wski18n.T("Package refresh for namespace '{{.name}}' failed: {{.err}}",
+				map[string]interface{}{"name": Client.Config.Namespace, "err": err})
+			werr := whisk.MakeWskErrorFromWskError(errors.New(errStr), err, whisk.EXIT_CODE_ERR_GENERAL, whisk.DISPLAY_MSG, whisk.NO_DISPLAY_USAGE)
+			return werr
+		}
+		whisk.Debug(whisk.DbgInfo, "Refresh updates received: %#v\n", updates)
+
+		switch resp.StatusCode {
+		case http.StatusOK:
+			fmt.Printf(wski18n.T("'{{.name}}' refreshed successfully\n",
+				map[string]interface{}{"name": Client.Config.Namespace}))
+
+			fmt.Println(wski18n.T("created bindings:"))
+
+			if len(updates.Added) > 0 {
+				printArrayContents(updates.Added)
+			}
+
+			fmt.Println(wski18n.T("updated bindings:"))
+
+			if len(updates.Updated) > 0 {
+				printArrayContents(updates.Updated)
+			}
+
+			fmt.Println(wski18n.T("deleted bindings:"))
+
+			if len(updates.Deleted) > 0 {
+				printArrayContents(updates.Deleted)
+			}
+
+		case http.StatusNotImplemented:
+			whisk.Debug(whisk.DbgError, "Client.Packages.Refresh() for namespace '%s' returned 'Not Implemented' HTTP status code: %d\n", Client.Config.Namespace, resp.StatusCode)
+			errStr := wski18n.T("The package refresh feature is not implemented in the target deployment")
+			werr := whisk.MakeWskErrorFromWskError(errors.New(errStr), err, whisk.EXIT_CODE_ERR_NETWORK, whisk.DISPLAY_MSG, whisk.NO_DISPLAY_USAGE)
+			return werr
+		default:
+			whisk.Debug(whisk.DbgError, "Client.Packages.Refresh() for namespace '%s' returned an unexpected HTTP status code: %d\n", Client.Config.Namespace, resp.StatusCode)
+			errStr := wski18n.T("Package refresh for namespace '{{.name}}' failed due to unexpected HTTP status code: {{.code}}",
+				map[string]interface{}{"name": Client.Config.Namespace, "code": resp.StatusCode})
+			werr := whisk.MakeWskErrorFromWskError(errors.New(errStr), err, whisk.EXIT_CODE_ERR_NETWORK, whisk.DISPLAY_MSG, whisk.NO_DISPLAY_USAGE)
+			return werr
+		}
+
+		return nil
+	},
 }
 
 func init() {
-  packageCreateCmd.Flags().StringSliceVarP(&Flags.common.annotation, "annotation", "a", []string{}, wski18n.T("annotation values in `KEY VALUE` format"))
-  packageCreateCmd.Flags().StringVarP(&Flags.common.annotFile, "annotation-file", "A", "", wski18n.T("`FILE` containing annotation values in JSON format"))
-  packageCreateCmd.Flags().StringSliceVarP(&Flags.common.param, "param", "p", []string{}, wski18n.T("parameter values in `KEY VALUE` format"))
-  packageCreateCmd.Flags().StringVarP(&Flags.common.paramFile, "param-file", "P", "", wski18n.T("`FILE` containing parameter values in JSON format"))
-  packageCreateCmd.Flags().StringVar(&Flags.common.shared, "shared", "", wski18n.T("package visibility `SCOPE`; yes = shared, no = private"))
-
-  packageUpdateCmd.Flags().StringSliceVarP(&Flags.common.annotation, "annotation", "a", []string{}, wski18n.T("annotation values in `KEY VALUE` format"))
-  packageUpdateCmd.Flags().StringVarP(&Flags.common.annotFile, "annotation-file", "A", "", wski18n.T("`FILE` containing annotation values in JSON format"))
-  packageUpdateCmd.Flags().StringSliceVarP(&Flags.common.param, "param", "p", []string{}, wski18n.T("parameter values in `KEY VALUE` format"))
-  packageUpdateCmd.Flags().StringVarP(&Flags.common.paramFile, "param-file", "P", "", wski18n.T("`FILE` containing parameter values in JSON format"))
-  packageUpdateCmd.Flags().StringVar(&Flags.common.shared, "shared", "", wski18n.T("package visibility `SCOPE`; yes = shared, no = private"))
-
-  packageGetCmd.Flags().BoolVarP(&Flags.common.summary, "summary", "s", false, wski18n.T("summarize package details; parameters with prefix \"*\" are bound"))
-
-  packageBindCmd.Flags().StringSliceVarP(&Flags.common.annotation, "annotation", "a", []string{}, wski18n.T("annotation values in `KEY VALUE` format"))
-  packageBindCmd.Flags().StringVarP(&Flags.common.annotFile, "annotation-file", "A", "", wski18n.T("`FILE` containing annotation values in JSON format"))
-  packageBindCmd.Flags().StringSliceVarP(&Flags.common.param, "param", "p", []string{}, wski18n.T("parameter values in `KEY VALUE` format"))
-  packageBindCmd.Flags().StringVarP(&Flags.common.paramFile, "param-file", "P", "", wski18n.T("`FILE` containing parameter values in JSON format"))
-
-  packageListCmd.Flags().IntVarP(&Flags.common.skip, "skip", "s", 0, wski18n.T("exclude the first `SKIP` number of packages from the result"))
-  packageListCmd.Flags().IntVarP(&Flags.common.limit, "limit", "l", 30, wski18n.T("only return `LIMIT` number of packages from the collection"))
-  packageListCmd.Flags().BoolVarP(&Flags.common.nameSort, "name-sort", "n", false, wski18n.T("sorts a list alphabetically by entity name; only applicable within the limit/skip returned entity block"))
-
-  packageCmd.AddCommand(
-    packageBindCmd,
-    packageCreateCmd,
-    packageUpdateCmd,
-    packageGetCmd,
-    packageDeleteCmd,
-    packageListCmd,
-    packageRefreshCmd,
-  )
+	packageCreateCmd.Flags().StringSliceVarP(&Flags.common.annotation, "annotation", "a", []string{}, wski18n.T("annotation values in `KEY VALUE` format"))
+	packageCreateCmd.Flags().StringVarP(&Flags.common.annotFile, "annotation-file", "A", "", wski18n.T("`FILE` containing annotation values in JSON format"))
+	packageCreateCmd.Flags().StringSliceVarP(&Flags.common.param, "param", "p", []string{}, wski18n.T("parameter values in `KEY VALUE` format"))
+	packageCreateCmd.Flags().StringVarP(&Flags.common.paramFile, "param-file", "P", "", wski18n.T("`FILE` containing parameter values in JSON format"))
+	packageCreateCmd.Flags().StringVar(&Flags.common.shared, "shared", "", wski18n.T("package visibility `SCOPE`; yes = shared, no = private"))
+
+	packageUpdateCmd.Flags().StringSliceVarP(&Flags.common.annotation, "annotation", "a", []string{}, wski18n.T("annotation values in `KEY VALUE` format"))
+	packageUpdateCmd.Flags().StringVarP(&Flags.common.annotFile, "annotation-file", "A", "", wski18n.T("`FILE` containing annotation values in JSON format"))
+	packageUpdateCmd.Flags().StringSliceVarP(&Flags.common.param, "param", "p", []string{}, wski18n.T("parameter values in `KEY VALUE` format"))
+	packageUpdateCmd.Flags().StringVarP(&Flags.common.paramFile, "param-file", "P", "", wski18n.T("`FILE` containing parameter values in JSON format"))
+	packageUpdateCmd.Flags().StringVar(&Flags.common.shared, "shared", "", wski18n.T("package visibility `SCOPE`; yes = shared, no = private"))
+
+	packageGetCmd.Flags().BoolVarP(&Flags.common.summary, "summary", "s", false, wski18n.T("summarize package details; parameters with prefix \"*\" are bound"))
+
+	packageBindCmd.Flags().StringSliceVarP(&Flags.common.annotation, "annotation", "a", []string{}, wski18n.T("annotation values in `KEY VALUE` format"))
+	packageBindCmd.Flags().StringVarP(&Flags.common.annotFile, "annotation-file", "A", "", wski18n.T("`FILE` containing annotation values in JSON format"))
+	packageBindCmd.Flags().StringSliceVarP(&Flags.common.param, "param", "p", []string{}, wski18n.T("parameter values in `KEY VALUE` format"))
+	packageBindCmd.Flags().StringVarP(&Flags.common.paramFile, "param-file", "P", "", wski18n.T("`FILE` containing parameter values in JSON format"))
+
+	packageListCmd.Flags().IntVarP(&Flags.common.skip, "skip", "s", 0, wski18n.T("exclude the first `SKIP` number of packages from the result"))
+	packageListCmd.Flags().IntVarP(&Flags.common.limit, "limit", "l", 30, wski18n.T("only return `LIMIT` number of packages from the collection"))
+	packageListCmd.Flags().BoolVarP(&Flags.common.nameSort, "name-sort", "n", false, wski18n.T("sorts a list alphabetically by entity name; only applicable within the limit/skip returned entity block"))
+
+	packageCmd.AddCommand(
+		packageBindCmd,
+		packageCreateCmd,
+		packageUpdateCmd,
+		packageGetCmd,
+		packageDeleteCmd,
+		packageListCmd,
+		packageRefreshCmd,
+	)
 }
diff --git a/commands/property.go b/commands/property.go
index 38afa43..84230bf 100644
--- a/commands/property.go
+++ b/commands/property.go
@@ -18,543 +18,543 @@
 package commands
 
 import (
-    "errors"
-    "fmt"
-    "os"
+	"errors"
+	"fmt"
+	"os"
 
-    "github.com/mitchellh/go-homedir"
-    "github.com/spf13/cobra"
-    "github.com/fatih/color"
+	"github.com/fatih/color"
+	"github.com/mitchellh/go-homedir"
+	"github.com/spf13/cobra"
 
-    "github.com/apache/incubator-openwhisk-client-go/whisk"
-    "github.com/apache/incubator-openwhisk-cli/wski18n"
+	"github.com/apache/incubator-openwhisk-cli/wski18n"
+	"github.com/apache/incubator-openwhisk-client-go/whisk"
 )
 
 var Properties struct {
-    Cert       string
-    Key        string
-    Auth       string
-    APIHost    string
-    APIVersion string
-    APIBuild   string
-    APIBuildNo string
-    CLIVersion string
-    Namespace  string
-    PropsFile  string
+	Cert       string
+	Key        string
+	Auth       string
+	APIHost    string
+	APIVersion string
+	APIBuild   string
+	APIBuildNo string
+	CLIVersion string
+	Namespace  string
+	PropsFile  string
 }
 
-const DefaultCert       string = ""
-const DefaultKey        string = ""
-const DefaultAuth       string = ""
-const DefaultAPIHost    string = ""
+const DefaultCert string = ""
+const DefaultKey string = ""
+const DefaultAuth string = ""
+const DefaultAPIHost string = ""
 const DefaultAPIVersion string = "v1"
-const DefaultAPIBuild   string = ""
+const DefaultAPIBuild string = ""
 const DefaultAPIBuildNo string = ""
-const DefaultNamespace  string = "_"
-const DefaultPropsFile  string = "~/.wskprops"
+const DefaultNamespace string = "_"
+const DefaultPropsFile string = "~/.wskprops"
 
 var propertyCmd = &cobra.Command{
-    Use:   "property",
-    Short: wski18n.T("work with whisk properties"),
+	Use:   "property",
+	Short: wski18n.T("work with whisk properties"),
 }
 
 //
 // Set one or more openwhisk property values
 //
 var propertySetCmd = &cobra.Command{
-    Use:            "set",
-    Short:          wski18n.T("set property"),
-    SilenceUsage:   true,
-    SilenceErrors:  true,
-    PreRunE: SetupClientConfig,
-    RunE: func(cmd *cobra.Command, args []string) error {
-        var okMsg string = ""
-        var werr *whisk.WskError = nil
-
-        // get current props
-        props, err := ReadProps(Properties.PropsFile)
-        if err != nil {
-            whisk.Debug(whisk.DbgError, "readProps(%s) failed: %s\n", Properties.PropsFile, err)
-            errStr := wski18n.T("Unable to set the property value: {{.err}}", map[string]interface{}{"err": err})
-            werr = whisk.MakeWskError(errors.New(errStr), whisk.EXIT_CODE_ERR_GENERAL, whisk.DISPLAY_MSG, whisk.NO_DISPLAY_USAGE)
-            return werr
-        }
-
-        // read in each flag, update if necessary
-        if cert := Flags.Global.Cert; len(cert) > 0 {
-            props["CERT"] = cert
-            Client.Config.Cert = cert
-            okMsg += fmt.Sprintf(
-                wski18n.T("{{.ok}} client cert set. Run 'wsk property get --cert' to see the new value.\n",
-                    map[string]interface{}{"ok": color.GreenString("ok:")}))
-        }
-
-        if key := Flags.Global.Key; len(key) > 0 {
-            props["KEY"] = key
-            Client.Config.Key = key
-            okMsg += fmt.Sprintf(
-                wski18n.T("{{.ok}} client key set. Run 'wsk property get --key' to see the new value.\n",
-                    map[string]interface{}{"ok": color.GreenString("ok:")}))
-        }
-
-        if auth := Flags.Global.Auth; len(auth) > 0 {
-            props["AUTH"] = auth
-            Client.Config.AuthToken = auth
-            okMsg += fmt.Sprintf(
-                wski18n.T("{{.ok}} whisk auth set. Run 'wsk property get --auth' to see the new value.\n",
-                    map[string]interface{}{"ok": color.GreenString("ok:")}))
-        }
-
-        if apiHost := Flags.property.apihostSet; len(apiHost) > 0 {
-            baseURL, err := whisk.GetURLBase(apiHost, DefaultOpenWhiskApiPath)
-
-            if err != nil {
-                // Not aborting now.  Subsequent commands will result in error
-                whisk.Debug(whisk.DbgError, "whisk.GetURLBase(%s, %s) error: %s", apiHost, DefaultOpenWhiskApiPath, err)
-                errStr := fmt.Sprintf(
-                    wski18n.T("Unable to set API host value; the API host value '{{.apihost}}' is invalid: {{.err}}",
-                        map[string]interface{}{"apihost": apiHost, "err": err}))
-                werr = whisk.MakeWskErrorFromWskError(errors.New(errStr), err, whisk.EXIT_CODE_ERR_GENERAL,
-                    whisk.DISPLAY_MSG, whisk.DISPLAY_USAGE)
-            } else {
-                props["APIHOST"] = apiHost
-                Client.Config.BaseURL = baseURL
-                okMsg += fmt.Sprintf(
-                    wski18n.T("{{.ok}} whisk API host set to {{.host}}\n",
-                        map[string]interface{}{"ok": color.GreenString("ok:"), "host": boldString(apiHost)}))
-            }
-        }
-
-        if apiVersion := Flags.property.apiversionSet; len(apiVersion) > 0 {
-            props["APIVERSION"] = apiVersion
-            Client.Config.Version = apiVersion
-            okMsg += fmt.Sprintf(
-                wski18n.T("{{.ok}} whisk API version set to {{.version}}\n",
-                    map[string]interface{}{"ok": color.GreenString("ok:"), "version": boldString(apiVersion)}))
-        }
-
-        if namespace := Flags.property.namespaceSet; len(namespace) > 0 {
-            namespaces, _, err := Client.Namespaces.List()
-            if err != nil {
-                whisk.Debug(whisk.DbgError, "Client.Namespaces.List() failed: %s\n", err)
-                errStr := fmt.Sprintf(
-                    wski18n.T("Authenticated user does not have namespace '{{.name}}'; set command failed: {{.err}}",
-                        map[string]interface{}{"name": namespace, "err": err}))
-                werr = whisk.MakeWskError(errors.New(errStr), whisk.EXIT_CODE_ERR_GENERAL, whisk.DISPLAY_MSG, whisk.NO_DISPLAY_USAGE)
-            } else {
-                whisk.Debug(whisk.DbgInfo, "Validating namespace '%s' is in user namespace list %#v\n", namespace, namespaces)
-                var validNamespace bool
-                for _, ns := range namespaces {
-                    if ns.Name == namespace {
-                        whisk.Debug(whisk.DbgInfo, "Namespace '%s' is valid\n", namespace)
-                        validNamespace = true
-                    }
-                }
-                if !validNamespace {
-                    whisk.Debug(whisk.DbgError, "Namespace '%s' is not in the list of entitled namespaces\n", namespace)
-                    errStr := fmt.Sprintf(
-                        wski18n.T("Namespace '{{.name}}' is not in the list of entitled namespaces",
-                            map[string]interface{}{"name": namespace}))
-                    werr = whisk.MakeWskError(errors.New(errStr), whisk.EXIT_CODE_ERR_GENERAL, whisk.DISPLAY_MSG, whisk.NO_DISPLAY_USAGE)
-                } else {
-                    props["NAMESPACE"] = namespace
-                    okMsg += fmt.Sprintf(
-                        wski18n.T("{{.ok}} whisk namespace set to {{.name}}\n",
-                            map[string]interface{}{"ok": color.GreenString("ok:"), "name": boldString(namespace)}))
-                }
-            }
-        }
-
-        err = WriteProps(Properties.PropsFile, props)
-        if err != nil {
-            whisk.Debug(whisk.DbgError, "writeProps(%s, %#v) failed: %s\n", Properties.PropsFile, props, err)
-            errStr := fmt.Sprintf(
-                wski18n.T("Unable to set the property value(s): {{.err}}",
-                    map[string]interface{}{"err": err}))
-            werr = whisk.MakeWskError(errors.New(errStr), whisk.EXIT_CODE_ERR_GENERAL, whisk.DISPLAY_MSG, whisk.NO_DISPLAY_USAGE)
-        } else {
-            fmt.Fprintf(color.Output, okMsg)
-        }
-
-        if (werr != nil) {
-            return werr
-        }
-
-        return nil
-    },
+	Use:           "set",
+	Short:         wski18n.T("set property"),
+	SilenceUsage:  true,
+	SilenceErrors: true,
+	PreRunE:       SetupClientConfig,
+	RunE: func(cmd *cobra.Command, args []string) error {
+		var okMsg string = ""
+		var werr *whisk.WskError = nil
+
+		// get current props
+		props, err := ReadProps(Properties.PropsFile)
+		if err != nil {
+			whisk.Debug(whisk.DbgError, "readProps(%s) failed: %s\n", Properties.PropsFile, err)
+			errStr := wski18n.T("Unable to set the property value: {{.err}}", map[string]interface{}{"err": err})
+			werr = whisk.MakeWskError(errors.New(errStr), whisk.EXIT_CODE_ERR_GENERAL, whisk.DISPLAY_MSG, whisk.NO_DISPLAY_USAGE)
+			return werr
+		}
+
+		// read in each flag, update if necessary
+		if cert := Flags.Global.Cert; len(cert) > 0 {
+			props["CERT"] = cert
+			Client.Config.Cert = cert
+			okMsg += fmt.Sprintf(
+				wski18n.T("{{.ok}} client cert set. Run 'wsk property get --cert' to see the new value.\n",
+					map[string]interface{}{"ok": color.GreenString("ok:")}))
+		}
+
+		if key := Flags.Global.Key; len(key) > 0 {
+			props["KEY"] = key
+			Client.Config.Key = key
+			okMsg += fmt.Sprintf(
+				wski18n.T("{{.ok}} client key set. Run 'wsk property get --key' to see the new value.\n",
+					map[string]interface{}{"ok": color.GreenString("ok:")}))
+		}
+
+		if auth := Flags.Global.Auth; len(auth) > 0 {
+			props["AUTH"] = auth
+			Client.Config.AuthToken = auth
+			okMsg += fmt.Sprintf(
+				wski18n.T("{{.ok}} whisk auth set. Run 'wsk property get --auth' to see the new value.\n",
+					map[string]interface{}{"ok": color.GreenString("ok:")}))
+		}
+
+		if apiHost := Flags.property.apihostSet; len(apiHost) > 0 {
+			baseURL, err := whisk.GetURLBase(apiHost, DefaultOpenWhiskApiPath)
+
+			if err != nil {
+				// Not aborting now.  Subsequent commands will result in error
+				whisk.Debug(whisk.DbgError, "whisk.GetURLBase(%s, %s) error: %s", apiHost, DefaultOpenWhiskApiPath, err)
+				errStr := fmt.Sprintf(
+					wski18n.T("Unable to set API host value; the API host value '{{.apihost}}' is invalid: {{.err}}",
+						map[string]interface{}{"apihost": apiHost, "err": err}))
+				werr = whisk.MakeWskErrorFromWskError(errors.New(errStr), err, whisk.EXIT_CODE_ERR_GENERAL,
+					whisk.DISPLAY_MSG, whisk.DISPLAY_USAGE)
+			} else {
+				props["APIHOST"] = apiHost
+				Client.Config.BaseURL = baseURL
+				okMsg += fmt.Sprintf(
+					wski18n.T("{{.ok}} whisk API host set to {{.host}}\n",
+						map[string]interface{}{"ok": color.GreenString("ok:"), "host": boldString(apiHost)}))
+			}
+		}
+
+		if apiVersion := Flags.property.apiversionSet; len(apiVersion) > 0 {
+			props["APIVERSION"] = apiVersion
+			Client.Config.Version = apiVersion
+			okMsg += fmt.Sprintf(
+				wski18n.T("{{.ok}} whisk API version set to {{.version}}\n",
+					map[string]interface{}{"ok": color.GreenString("ok:"), "version": boldString(apiVersion)}))
+		}
+
+		if namespace := Flags.property.namespaceSet; len(namespace) > 0 {
+			namespaces, _, err := Client.Namespaces.List()
+			if err != nil {
+				whisk.Debug(whisk.DbgError, "Client.Namespaces.List() failed: %s\n", err)
+				errStr := fmt.Sprintf(
+					wski18n.T("Authenticated user does not have namespace '{{.name}}'; set command failed: {{.err}}",
+						map[string]interface{}{"name": namespace, "err": err}))
+				werr = whisk.MakeWskError(errors.New(errStr), whisk.EXIT_CODE_ERR_GENERAL, whisk.DISPLAY_MSG, whisk.NO_DISPLAY_USAGE)
+			} else {
+				whisk.Debug(whisk.DbgInfo, "Validating namespace '%s' is in user namespace list %#v\n", namespace, namespaces)
+				var validNamespace bool
+				for _, ns := range namespaces {
+					if ns.Name == namespace {
+						whisk.Debug(whisk.DbgInfo, "Namespace '%s' is valid\n", namespace)
+						validNamespace = true
+					}
+				}
+				if !validNamespace {
+					whisk.Debug(whisk.DbgError, "Namespace '%s' is not in the list of entitled namespaces\n", namespace)
+					errStr := fmt.Sprintf(
+						wski18n.T("Namespace '{{.name}}' is not in the list of entitled namespaces",
+							map[string]interface{}{"name": namespace}))
+					werr = whisk.MakeWskError(errors.New(errStr), whisk.EXIT_CODE_ERR_GENERAL, whisk.DISPLAY_MSG, whisk.NO_DISPLAY_USAGE)
+				} else {
+					props["NAMESPACE"] = namespace
+					okMsg += fmt.Sprintf(
+						wski18n.T("{{.ok}} whisk namespace set to {{.name}}\n",
+							map[string]interface{}{"ok": color.GreenString("ok:"), "name": boldString(namespace)}))
+				}
+			}
+		}
+
+		err = WriteProps(Properties.PropsFile, props)
+		if err != nil {
+			whisk.Debug(whisk.DbgError, "writeProps(%s, %#v) failed: %s\n", Properties.PropsFile, props, err)
+			errStr := fmt.Sprintf(
+				wski18n.T("Unable to set the property value(s): {{.err}}",
+					map[string]interface{}{"err": err}))
+			werr = whisk.MakeWskError(errors.New(errStr), whisk.EXIT_CODE_ERR_GENERAL, whisk.DISPLAY_MSG, whisk.NO_DISPLAY_USAGE)
+		} else {
+			fmt.Fprintf(color.Output, okMsg)
+		}
+
+		if werr != nil {
+			return werr
+		}
+
+		return nil
+	},
 }
 
 var propertyUnsetCmd = &cobra.Command{
-    Use:            "unset",
-    Short:          wski18n.T("unset property"),
-    SilenceUsage:   true,
-    SilenceErrors:  true,
-    RunE: func(cmd *cobra.Command, args []string) error {
-        var okMsg string = ""
-        props, err := ReadProps(Properties.PropsFile)
-        if err != nil {
-            whisk.Debug(whisk.DbgError, "readProps(%s) failed: %s\n", Properties.PropsFile, err)
-            errStr := fmt.Sprintf(
-                wski18n.T("Unable to unset the property value: {{.err}}",
-                    map[string]interface{}{"err": err}))
-            werr := whisk.MakeWskError(errors.New(errStr), whisk.EXIT_CODE_ERR_GENERAL, whisk.DISPLAY_MSG, whisk.NO_DISPLAY_USAGE)
-            return werr
-        }
-
-        // read in each flag, update if necessary
-
-        if Flags.property.cert {
-            delete(props, "CERT")
-            okMsg += fmt.Sprintf(
-                wski18n.T("{{.ok}} client cert unset.\n",
-                    map[string]interface{}{"ok": color.GreenString("ok:")}))
-        }
-
-        if Flags.property.key {
-            delete(props, "KEY")
-            okMsg += fmt.Sprintf(
-                wski18n.T("{{.ok}} client key unset.\n",
-                    map[string]interface{}{"ok": color.GreenString("ok:")}))
-        }
-
-        if Flags.property.auth {
-            delete(props, "AUTH")
-            okMsg += fmt.Sprintf(
-                wski18n.T("{{.ok}} whisk auth unset.\n",
-                    map[string]interface{}{"ok": color.GreenString("ok:")}))
-        }
-
-        if Flags.property.namespace {
-            delete(props, "NAMESPACE")
-            okMsg += fmt.Sprintf(
-                wski18n.T("{{.ok}} whisk namespace unset",
-                    map[string]interface{}{"ok": color.GreenString("ok:")}))
-            if len(DefaultNamespace) > 0 {
-                okMsg += fmt.Sprintf(
-                    wski18n.T("; the default value of {{.default}} will be used.\n",
-                        map[string]interface{}{"default": boldString(DefaultNamespace)}))
-            } else {
-                okMsg += fmt.Sprint(
-                    wski18n.T("; there is no default value that can be used.\n"))
-            }
-        }
-
-        if Flags.property.apihost {
-            delete(props, "APIHOST")
-            okMsg += fmt.Sprintf(
-                wski18n.T("{{.ok}} whisk API host unset.\n",
-                    map[string]interface{}{"ok": color.GreenString("ok:")}))
-        }
-
-        if Flags.property.apiversion {
-            delete(props, "APIVERSION")
-            okMsg += fmt.Sprintf(
-                wski18n.T("{{.ok}} whisk API version unset",
-                    map[string]interface{}{"ok": color.GreenString("ok:")}))
-            if len(DefaultAPIVersion) > 0 {
-                okMsg += fmt.Sprintf(
-                    wski18n.T("; the default value of {{.default}} will be used.\n",
-                        map[string]interface{}{"default": boldString(DefaultAPIVersion)}))
-            } else {
-                okMsg += fmt.Sprint(
-                    wski18n.T("; there is no default value that can be used.\n"))
-            }
-        }
-
-        err = WriteProps(Properties.PropsFile, props)
-        if err != nil {
-            whisk.Debug(whisk.DbgError, "writeProps(%s, %#v) failed: %s\n", Properties.PropsFile, props, err)
-            errStr := fmt.Sprintf(
-                wski18n.T("Unable to unset the property value: {{.err}}",
-                    map[string]interface{}{"err": err}))
-            werr := whisk.MakeWskError(errors.New(errStr), whisk.EXIT_CODE_ERR_GENERAL, whisk.DISPLAY_MSG, whisk.NO_DISPLAY_USAGE)
-            return werr
-        }
-
-        fmt.Fprintf(color.Output, okMsg)
-        if err = loadProperties(); err != nil {
-            whisk.Debug(whisk.DbgError, "loadProperties() failed: %s\n", err)
-        }
-        return nil
-    },
+	Use:           "unset",
+	Short:         wski18n.T("unset property"),
+	SilenceUsage:  true,
+	SilenceErrors: true,
+	RunE: func(cmd *cobra.Command, args []string) error {
+		var okMsg string = ""
+		props, err := ReadProps(Properties.PropsFile)
+		if err != nil {
+			whisk.Debug(whisk.DbgError, "readProps(%s) failed: %s\n", Properties.PropsFile, err)
+			errStr := fmt.Sprintf(
+				wski18n.T("Unable to unset the property value: {{.err}}",
+					map[string]interface{}{"err": err}))
+			werr := whisk.MakeWskError(errors.New(errStr), whisk.EXIT_CODE_ERR_GENERAL, whisk.DISPLAY_MSG, whisk.NO_DISPLAY_USAGE)
+			return werr
+		}
+
+		// read in each flag, update if necessary
+
+		if Flags.property.cert {
+			delete(props, "CERT")
+			okMsg += fmt.Sprintf(
+				wski18n.T("{{.ok}} client cert unset.\n",
+					map[string]interface{}{"ok": color.GreenString("ok:")}))
+		}
+
+		if Flags.property.key {
+			delete(props, "KEY")
+			okMsg += fmt.Sprintf(
+				wski18n.T("{{.ok}} client key unset.\n",
+					map[string]interface{}{"ok": color.GreenString("ok:")}))
+		}
+
+		if Flags.property.auth {
+			delete(props, "AUTH")
+			okMsg += fmt.Sprintf(
+				wski18n.T("{{.ok}} whisk auth unset.\n",
+					map[string]interface{}{"ok": color.GreenString("ok:")}))
+		}
+
+		if Flags.property.namespace {
+			delete(props, "NAMESPACE")
+			okMsg += fmt.Sprintf(
+				wski18n.T("{{.ok}} whisk namespace unset",
+					map[string]interface{}{"ok": color.GreenString("ok:")}))
+			if len(DefaultNamespace) > 0 {
+				okMsg += fmt.Sprintf(
+					wski18n.T("; the default value of {{.default}} will be used.\n",
+						map[string]interface{}{"default": boldString(DefaultNamespace)}))
+			} else {
+				okMsg += fmt.Sprint(
+					wski18n.T("; there is no default value that can be used.\n"))
+			}
+		}
+
+		if Flags.property.apihost {
+			delete(props, "APIHOST")
+			okMsg += fmt.Sprintf(
+				wski18n.T("{{.ok}} whisk API host unset.\n",
+					map[string]interface{}{"ok": color.GreenString("ok:")}))
+		}
+
+		if Flags.property.apiversion {
+			delete(props, "APIVERSION")
+			okMsg += fmt.Sprintf(
+				wski18n.T("{{.ok}} whisk API version unset",
+					map[string]interface{}{"ok": color.GreenString("ok:")}))
+			if len(DefaultAPIVersion) > 0 {
+				okMsg += fmt.Sprintf(
+					wski18n.T("; the default value of {{.default}} will be used.\n",
+						map[string]interface{}{"default": boldString(DefaultAPIVersion)}))
+			} else {
+				okMsg += fmt.Sprint(
+					wski18n.T("; there is no default value that can be used.\n"))
+			}
+		}
+
+		err = WriteProps(Properties.PropsFile, props)
+		if err != nil {
+			whisk.Debug(whisk.DbgError, "writeProps(%s, %#v) failed: %s\n", Properties.PropsFile, props, err)
+			errStr := fmt.Sprintf(
+				wski18n.T("Unable to unset the property value: {{.err}}",
+					map[string]interface{}{"err": err}))
+			werr := whisk.MakeWskError(errors.New(errStr), whisk.EXIT_CODE_ERR_GENERAL, whisk.DISPLAY_MSG, whisk.NO_DISPLAY_USAGE)
+			return werr
+		}
+
+		fmt.Fprintf(color.Output, okMsg)
+		if err = loadProperties(); err != nil {
+			whisk.Debug(whisk.DbgError, "loadProperties() failed: %s\n", err)
+		}
+		return nil
+	},
 }
 
 var propertyGetCmd = &cobra.Command{
-    Use:            "get",
-    Short:          wski18n.T("get property"),
-    SilenceUsage:   true,
-    SilenceErrors:  true,
-    PreRunE: SetupClientConfig,
-    RunE: func(cmd *cobra.Command, args []string) error {
-
-        // If no property is explicitly specified, default to all properties
-        if !(Flags.property.all || Flags.property.cert ||
-            Flags.property.key || Flags.property.auth ||
-            Flags.property.apiversion || Flags.property.cliversion ||
-            Flags.property.namespace || Flags.property.apibuild ||
-            Flags.property.apihost || Flags.property.apibuildno) {
-            Flags.property.all = true
-        }
-
-        if Flags.property.all || Flags.property.cert {
-            fmt.Fprintf(color.Output, "%s\t\t%s\n", wski18n.T("client cert"), boldString(Properties.Cert))
-        }
-
-        if Flags.property.all || Flags.property.key {
-            fmt.Fprintf(color.Output, "%s\t\t%s\n", wski18n.T("Client key"), boldString(Properties.Key))
-        }
-
-        if Flags.property.all || Flags.property.auth {
-            fmt.Fprintf(color.Output, "%s\t\t%s\n", wski18n.T("whisk auth"), boldString(Properties.Auth))
-        }
-
-        if Flags.property.all || Flags.property.apihost {
-            fmt.Fprintf(color.Output, "%s\t\t%s\n", wski18n.T("whisk API host"), boldString(Properties.APIHost))
-        }
-
-        if Flags.property.all || Flags.property.apiversion {
-            fmt.Fprintf(color.Output, "%s\t%s\n", wski18n.T("whisk API version"), boldString(Properties.APIVersion))
-        }
-
-        if Flags.property.all || Flags.property.namespace {
-            fmt.Fprintf(color.Output, "%s\t\t%s\n", wski18n.T("whisk namespace"), boldString(Properties.Namespace))
-        }
-
-        if Flags.property.all || Flags.property.cliversion {
-            fmt.Fprintf(color.Output, "%s\t%s\n", wski18n.T("whisk CLI version"), boldString(Properties.CLIVersion))
-        }
-
-        if Flags.property.all || Flags.property.apibuild || Flags.property.apibuildno {
-            info, _, err := Client.Info.Get()
-            if err != nil {
-                whisk.Debug(whisk.DbgError, "Client.Info.Get() failed: %s\n", err)
-                info = &whisk.Info{}
-                info.Build = wski18n.T("Unknown")
-                info.BuildNo = wski18n.T("Unknown")
-            }
-            if Flags.property.all || Flags.property.apibuild {
-                fmt.Fprintf(color.Output, "%s\t\t%s\n", wski18n.T("whisk API build"), boldString(info.Build))
-            }
-            if Flags.property.all || Flags.property.apibuildno {
-                fmt.Fprintf(color.Output, "%s\t%s\n", wski18n.T("whisk API build number"), boldString(info.BuildNo))
-            }
-            if err != nil {
-                errStr := fmt.Sprintf(
-                    wski18n.T("Unable to obtain API build information: {{.err}}",
-                        map[string]interface{}{"err": err}))
-                werr := whisk.MakeWskErrorFromWskError(errors.New(errStr), err, whisk.EXIT_CODE_ERR_GENERAL, whisk.DISPLAY_MSG, whisk.NO_DISPLAY_USAGE)
-                return werr
-            }
-        }
-
-        return nil
-    },
+	Use:           "get",
+	Short:         wski18n.T("get property"),
+	SilenceUsage:  true,
+	SilenceErrors: true,
+	PreRunE:       SetupClientConfig,
+	RunE: func(cmd *cobra.Command, args []string) error {
+
+		// If no property is explicitly specified, default to all properties
+		if !(Flags.property.all || Flags.property.cert ||
+			Flags.property.key || Flags.property.auth ||
+			Flags.property.apiversion || Flags.property.cliversion ||
+			Flags.property.namespace || Flags.property.apibuild ||
+			Flags.property.apihost || Flags.property.apibuildno) {
+			Flags.property.all = true
+		}
+
+		if Flags.property.all || Flags.property.cert {
+			fmt.Fprintf(color.Output, "%s\t\t%s\n", wski18n.T("client cert"), boldString(Properties.Cert))
+		}
+
+		if Flags.property.all || Flags.property.key {
+			fmt.Fprintf(color.Output, "%s\t\t%s\n", wski18n.T("Client key"), boldString(Properties.Key))
+		}
+
+		if Flags.property.all || Flags.property.auth {
+			fmt.Fprintf(color.Output, "%s\t\t%s\n", wski18n.T("whisk auth"), boldString(Properties.Auth))
+		}
+
+		if Flags.property.all || Flags.property.apihost {
+			fmt.Fprintf(color.Output, "%s\t\t%s\n", wski18n.T("whisk API host"), boldString(Properties.APIHost))
+		}
+
+		if Flags.property.all || Flags.property.apiversion {
+			fmt.Fprintf(color.Output, "%s\t%s\n", wski18n.T("whisk API version"), boldString(Properties.APIVersion))
+		}
+
+		if Flags.property.all || Flags.property.namespace {
+			fmt.Fprintf(color.Output, "%s\t\t%s\n", wski18n.T("whisk namespace"), boldString(Properties.Namespace))
+		}
+
+		if Flags.property.all || Flags.property.cliversion {
+			fmt.Fprintf(color.Output, "%s\t%s\n", wski18n.T("whisk CLI version"), boldString(Properties.CLIVersion))
+		}
+
+		if Flags.property.all || Flags.property.apibuild || Flags.property.apibuildno {
+			info, _, err := Client.Info.Get()
+			if err != nil {
+				whisk.Debug(whisk.DbgError, "Client.Info.Get() failed: %s\n", err)
+				info = &whisk.Info{}
+				info.Build = wski18n.T("Unknown")
+				info.BuildNo = wski18n.T("Unknown")
+			}
+			if Flags.property.all || Flags.property.apibuild {
+				fmt.Fprintf(color.Output, "%s\t\t%s\n", wski18n.T("whisk API build"), boldString(info.Build))
+			}
+			if Flags.property.all || Flags.property.apibuildno {
+				fmt.Fprintf(color.Output, "%s\t%s\n", wski18n.T("whisk API build number"), boldString(info.BuildNo))
+			}
+			if err != nil {
+				errStr := fmt.Sprintf(
+					wski18n.T("Unable to obtain API build information: {{.err}}",
+						map[string]interface{}{"err": err}))
+				werr := whisk.MakeWskErrorFromWskError(errors.New(errStr), err, whisk.EXIT_CODE_ERR_GENERAL, whisk.DISPLAY_MSG, whisk.NO_DISPLAY_USAGE)
+				return werr
+			}
+		}
+
+		return nil
+	},
 }
 
 func init() {
-    propertyCmd.AddCommand(
-        propertySetCmd,
-        propertyUnsetCmd,
-        propertyGetCmd,
-    )
-
-    // need to set property flags as booleans instead of strings... perhaps with boolApihost...
-    propertyGetCmd.Flags().BoolVar(&Flags.property.cert, "cert", false, wski18n.T("client cert"))
-    propertyGetCmd.Flags().BoolVar(&Flags.property.key, "key", false, wski18n.T("client key"))
-    propertyGetCmd.Flags().BoolVar(&Flags.property.auth, "auth", false, wski18n.T("authorization key"))
-    propertyGetCmd.Flags().BoolVar(&Flags.property.apihost, "apihost", false, wski18n.T("whisk API host"))
-    propertyGetCmd.Flags().BoolVar(&Flags.property.apiversion, "apiversion", false, wski18n.T("whisk API version"))
-    propertyGetCmd.Flags().BoolVar(&Flags.property.apibuild, "apibuild", false, wski18n.T("whisk API build version"))
-    propertyGetCmd.Flags().BoolVar(&Flags.property.apibuildno, "apibuildno", false, wski18n.T("whisk API build number"))
-    propertyGetCmd.Flags().BoolVar(&Flags.property.cliversion, "cliversion", false, wski18n.T("whisk CLI version"))
-    propertyGetCmd.Flags().BoolVar(&Flags.property.namespace, "namespace", false, wski18n.T("whisk namespace"))
-    propertyGetCmd.Flags().BoolVar(&Flags.property.all, "all", false, wski18n.T("all properties"))
-
-    propertySetCmd.Flags().StringVarP(&Flags.Global.Auth, "auth", "u", "", wski18n.T("authorization `KEY`"))
-    propertySetCmd.Flags().StringVar(&Flags.Global.Cert, "cert", "", wski18n.T("client cert"))
-    propertySetCmd.Flags().StringVar(&Flags.Global.Key, "key", "", wski18n.T("client key"))
-    propertySetCmd.Flags().StringVar(&Flags.property.apihostSet, "apihost", "", wski18n.T("whisk API `HOST`"))
-    propertySetCmd.Flags().StringVar(&Flags.property.apiversionSet, "apiversion", "", wski18n.T("whisk API `VERSION`"))
-    propertySetCmd.Flags().StringVar(&Flags.property.namespaceSet, "namespace", "", wski18n.T("whisk `NAMESPACE`"))
-
-    propertyUnsetCmd.Flags().BoolVar(&Flags.property.cert, "cert", false, wski18n.T("client cert"))
-    propertyUnsetCmd.Flags().BoolVar(&Flags.property.key, "key", false, wski18n.T("client key"))
-    propertyUnsetCmd.Flags().BoolVar(&Flags.property.auth, "auth", false, wski18n.T("authorization key"))
-    propertyUnsetCmd.Flags().BoolVar(&Flags.property.apihost, "apihost", false, wski18n.T("whisk API host"))
-    propertyUnsetCmd.Flags().BoolVar(&Flags.property.apiversion, "apiversion", false, wski18n.T("whisk API version"))
-    propertyUnsetCmd.Flags().BoolVar(&Flags.property.namespace, "namespace", false, wski18n.T("whisk namespace"))
+	propertyCmd.AddCommand(
+		propertySetCmd,
+		propertyUnsetCmd,
+		propertyGetCmd,
+	)
+
+	// need to set property flags as booleans instead of strings... perhaps with boolApihost...
+	propertyGetCmd.Flags().BoolVar(&Flags.property.cert, "cert", false, wski18n.T("client cert"))
+	propertyGetCmd.Flags().BoolVar(&Flags.property.key, "key", false, wski18n.T("client key"))
+	propertyGetCmd.Flags().BoolVar(&Flags.property.auth, "auth", false, wski18n.T("authorization key"))
+	propertyGetCmd.Flags().BoolVar(&Flags.property.apihost, "apihost", false, wski18n.T("whisk API host"))
+	propertyGetCmd.Flags().BoolVar(&Flags.property.apiversion, "apiversion", false, wski18n.T("whisk API version"))
+	propertyGetCmd.Flags().BoolVar(&Flags.property.apibuild, "apibuild", false, wski18n.T("whisk API build version"))
+	propertyGetCmd.Flags().BoolVar(&Flags.property.apibuildno, "apibuildno", false, wski18n.T("whisk API build number"))
+	propertyGetCmd.Flags().BoolVar(&Flags.property.cliversion, "cliversion", false, wski18n.T("whisk CLI version"))
+	propertyGetCmd.Flags().BoolVar(&Flags.property.namespace, "namespace", false, wski18n.T("whisk namespace"))
+	propertyGetCmd.Flags().BoolVar(&Flags.property.all, "all", false, wski18n.T("all properties"))
+
+	propertySetCmd.Flags().StringVarP(&Flags.Global.Auth, "auth", "u", "", wski18n.T("authorization `KEY`"))
+	propertySetCmd.Flags().StringVar(&Flags.Global.Cert, "cert", "", wski18n.T("client cert"))
+	propertySetCmd.Flags().StringVar(&Flags.Global.Key, "key", "", wski18n.T("client key"))
+	propertySetCmd.Flags().StringVar(&Flags.property.apihostSet, "apihost", "", wski18n.T("whisk API `HOST`"))
+	propertySetCmd.Flags().StringVar(&Flags.property.apiversionSet, "apiversion", "", wski18n.T("whisk API `VERSION`"))
+	propertySetCmd.Flags().StringVar(&Flags.property.namespaceSet, "namespace", "", wski18n.T("whisk `NAMESPACE`"))
+
+	propertyUnsetCmd.Flags().BoolVar(&Flags.property.cert, "cert", false, wski18n.T("client cert"))
+	propertyUnsetCmd.Flags().BoolVar(&Flags.property.key, "key", false, wski18n.T("client key"))
+	propertyUnsetCmd.Flags().BoolVar(&Flags.property.auth, "auth", false, wski18n.T("authorization key"))
+	propertyUnsetCmd.Flags().BoolVar(&Flags.property.apihost, "apihost", false, wski18n.T("whisk API host"))
+	propertyUnsetCmd.Flags().BoolVar(&Flags.property.apiversion, "apiversion", false, wski18n.T("whisk API version"))
+	propertyUnsetCmd.Flags().BoolVar(&Flags.property.namespace, "namespace", false, wski18n.T("whisk namespace"))
 
 }
 
 func SetDefaultProperties() {
-    Properties.Key = DefaultCert
-    Properties.Cert = DefaultKey
-    Properties.Auth = DefaultAuth
-    Properties.Namespace = DefaultNamespace
-    Properties.APIHost = DefaultAPIHost
-    Properties.APIBuild = DefaultAPIBuild
-    Properties.APIBuildNo = DefaultAPIBuildNo
-    Properties.APIVersion = DefaultAPIVersion
-    Properties.PropsFile = DefaultPropsFile
-    // Properties.CLIVersion value is set from main's init()
+	Properties.Key = DefaultCert
+	Properties.Cert = DefaultKey
+	Properties.Auth = DefaultAuth
+	Properties.Namespace = DefaultNamespace
+	Properties.APIHost = DefaultAPIHost
+	Properties.APIBuild = DefaultAPIBuild
+	Properties.APIBuildNo = DefaultAPIBuildNo
+	Properties.APIVersion = DefaultAPIVersion
+	Properties.PropsFile = DefaultPropsFile
+	// Properties.CLIVersion value is set from main's init()
 }
 
 func GetPropertiesFilePath() (propsFilePath string, werr error) {
-    var envExists bool
-
-    // WSK_CONFIG_FILE environment variable overrides the default properties file path
-    // NOTE: If this variable is set to an empty string or non-existent/unreadable file
-    // - any existing $HOME/.wskprops is ignored
-    // - a default configuration is used
-    if propsFilePath, envExists = os.LookupEnv("WSK_CONFIG_FILE"); envExists {
-        whisk.Debug(whisk.DbgInfo, "Using properties file '%s' from WSK_CONFIG_FILE environment variable\n", propsFilePath)
-        return propsFilePath, nil
-    } else {
-        var err error
-
-        propsFilePath, err = homedir.Expand(Properties.PropsFile)
-
-        if err != nil {
-            whisk.Debug(whisk.DbgError, "homedir.Expand(%s) failed: %s\n", Properties.PropsFile, err)
-            errStr := fmt.Sprintf(
-                wski18n.T("Unable to locate properties file '{{.filename}}': {{.err}}",
-                    map[string]interface{}{"filename": Properties.PropsFile, "err": err}))
-            werr = whisk.MakeWskError(errors.New(errStr), whisk.EXIT_CODE_ERR_GENERAL, whisk.DISPLAY_MSG, whisk.NO_DISPLAY_USAGE)
-            return propsFilePath, werr
-        }
-
-        whisk.Debug(whisk.DbgInfo, "Using properties file home dir '%s'\n", propsFilePath)
-    }
-
-    return propsFilePath, nil
+	var envExists bool
+
+	// WSK_CONFIG_FILE environment variable overrides the default properties file path
+	// NOTE: If this variable is set to an empty string or non-existent/unreadable file
+	// - any existing $HOME/.wskprops is ignored
+	// - a default configuration is used
+	if propsFilePath, envExists = os.LookupEnv("WSK_CONFIG_FILE"); envExists {
+		whisk.Debug(whisk.DbgInfo, "Using properties file '%s' from WSK_CONFIG_FILE environment variable\n", propsFilePath)
+		return propsFilePath, nil
+	} else {
+		var err error
+
+		propsFilePath, err = homedir.Expand(Properties.PropsFile)
+
+		if err != nil {
+			whisk.Debug(whisk.DbgError, "homedir.Expand(%s) failed: %s\n", Properties.PropsFile, err)
+			errStr := fmt.Sprintf(
+				wski18n.T("Unable to locate properties file '{{.filename}}': {{.err}}",
+					map[string]interface{}{"filename": Properties.PropsFile, "err": err}))
+			werr = whisk.MakeWskError(errors.New(errStr), whisk.EXIT_CODE_ERR_GENERAL, whisk.DISPLAY_MSG, whisk.NO_DISPLAY_USAGE)
+			return propsFilePath, werr
+		}
+
+		whisk.Debug(whisk.DbgInfo, "Using properties file home dir '%s'\n", propsFilePath)
+	}
+
+	return propsFilePath, nil
 }
 
 func loadProperties() error {
-    var err error
-
-    SetDefaultProperties()
-
-    Properties.PropsFile, err = GetPropertiesFilePath()
-    if err != nil {
-        return nil
-        //whisk.Debug(whisk.DbgError, "GetPropertiesFilePath() failed: %s\n", err)
-        //errStr := fmt.Sprintf("Unable to load the properties file: %s", err)
-        //werr := whisk.MakeWskError(errors.New(errStr), whisk.EXIT_CODE_ERR_GENERAL, whisk.DISPLAY_MSG, whisk.NO_DISPLAY_USAGE)
-        //return werr
-    }
-
-    props, err := ReadProps(Properties.PropsFile)
-    if err != nil {
-        whisk.Debug(whisk.DbgError, "readProps(%s) failed: %s\n", Properties.PropsFile, err)
-        errStr := wski18n.T("Unable to read the properties file '{{.filename}}': {{.err}}",
-                map[string]interface{}{"filename": Properties.PropsFile, "err": err})
-        werr := whisk.MakeWskError(errors.New(errStr), whisk.EXIT_CODE_ERR_GENERAL, whisk.DISPLAY_MSG, whisk.NO_DISPLAY_USAGE)
-        return werr
-    }
-
-    if cert, hasProp := props["CERT"]; hasProp {
-        Properties.Cert = cert
-    }
-
-    if key, hasProp := props["KEY"]; hasProp {
-        Properties.Key = key
-    }
-
-    if authToken, hasProp := props["AUTH"]; hasProp {
-        Properties.Auth = authToken
-    }
-
-    if authToken := os.Getenv("WHISK_AUTH"); len(authToken) > 0 {
-        Properties.Auth = authToken
-    }
-
-    if apiVersion, hasProp := props["APIVERSION"]; hasProp {
-        Properties.APIVersion = apiVersion
-    }
-
-    if apiVersion := os.Getenv("WHISK_APIVERSION"); len(apiVersion) > 0 {
-        Properties.APIVersion = apiVersion
-    }
-
-    if apiHost, hasProp := props["APIHOST"]; hasProp {
-        Properties.APIHost = apiHost
-    }
-
-    if apiHost := os.Getenv("WHISK_APIHOST"); len(apiHost) > 0 {
-        Properties.APIHost = apiHost
-    }
-
-    if namespace, hasProp := props["NAMESPACE"]; hasProp && len(namespace) > 0 {
-        Properties.Namespace = namespace
-    }
-
-    if namespace := os.Getenv("WHISK_NAMESPACE"); len(namespace) > 0 {
-        Properties.Namespace = namespace
-    }
-
-    return nil
+	var err error
+
+	SetDefaultProperties()
+
+	Properties.PropsFile, err = GetPropertiesFilePath()
+	if err != nil {
+		return nil
+		//whisk.Debug(whisk.DbgError, "GetPropertiesFilePath() failed: %s\n", err)
+		//errStr := fmt.Sprintf("Unable to load the properties file: %s", err)
+		//werr := whisk.MakeWskError(errors.New(errStr), whisk.EXIT_CODE_ERR_GENERAL, whisk.DISPLAY_MSG, whisk.NO_DISPLAY_USAGE)
+		//return werr
+	}
+
+	props, err := ReadProps(Properties.PropsFile)
+	if err != nil {
+		whisk.Debug(whisk.DbgError, "readProps(%s) failed: %s\n", Properties.PropsFile, err)
+		errStr := wski18n.T("Unable to read the properties file '{{.filename}}': {{.err}}",
+			map[string]interface{}{"filename": Properties.PropsFile, "err": err})
+		werr := whisk.MakeWskError(errors.New(errStr), whisk.EXIT_CODE_ERR_GENERAL, whisk.DISPLAY_MSG, whisk.NO_DISPLAY_USAGE)
+		return werr
+	}
+
+	if cert, hasProp := props["CERT"]; hasProp {
+		Properties.Cert = cert
+	}
+
+	if key, hasProp := props["KEY"]; hasProp {
+		Properties.Key = key
+	}
+
+	if authToken, hasProp := props["AUTH"]; hasProp {
+		Properties.Auth = authToken
+	}
+
+	if authToken := os.Getenv("WHISK_AUTH"); len(authToken) > 0 {
+		Properties.Auth = authToken
+	}
+
+	if apiVersion, hasProp := props["APIVERSION"]; hasProp {
+		Properties.APIVersion = apiVersion
+	}
+
+	if apiVersion := os.Getenv("WHISK_APIVERSION"); len(apiVersion) > 0 {
+		Properties.APIVersion = apiVersion
+	}
+
+	if apiHost, hasProp := props["APIHOST"]; hasProp {
+		Properties.APIHost = apiHost
+	}
+
+	if apiHost := os.Getenv("WHISK_APIHOST"); len(apiHost) > 0 {
+		Properties.APIHost = apiHost
+	}
+
+	if namespace, hasProp := props["NAMESPACE"]; hasProp && len(namespace) > 0 {
+		Properties.Namespace = namespace
+	}
+
+	if namespace := os.Getenv("WHISK_NAMESPACE"); len(namespace) > 0 {
+		Properties.Namespace = namespace
+	}
+
+	return nil
 }
 
 func parseConfigFlags(cmd *cobra.Command, args []string) error {
 
-    if cert := Flags.Global.Cert; len(cert) > 0 {
-        Properties.Cert = cert
-        if Client != nil {
-            Client.Config.Cert = cert
-        }
-    }
-
-    if key := Flags.Global.Key; len(key) > 0 {
-        Properties.Key = key
-        if Client != nil {
-            Client.Config.Key = key
-        }
-    }
-
-    if auth := Flags.Global.Auth; len(auth) > 0 {
-        Properties.Auth = auth
-        if Client != nil {
-            Client.Config.AuthToken = auth
-        }
-    }
-
-    if namespace := Flags.property.namespaceSet; len(namespace) > 0 {
-        Properties.Namespace = namespace
-        if Client != nil {
-            Client.Config.Namespace = namespace
-        }
-    }
-
-    if apiVersion := Flags.Global.Apiversion; len(apiVersion) > 0 {
-        Properties.APIVersion = apiVersion
-        if Client != nil {
-            Client.Config.Version = apiVersion
-        }
-    }
-
-    if apiHost := Flags.Global.Apihost; len(apiHost) > 0 {
-        Properties.APIHost = apiHost
-        if Client != nil {
-            Client.Config.Host = apiHost
-            baseURL, err := whisk.GetURLBase(apiHost, DefaultOpenWhiskApiPath)
-
-            if err != nil {
-                whisk.Debug(whisk.DbgError, "whisk.GetURLBase(%s, %s) failed: %s\n", apiHost, DefaultOpenWhiskApiPath, err)
-                errStr := wski18n.T("Invalid host address '{{.host}}': {{.err}}",
-                        map[string]interface{}{"host": Properties.APIHost, "err": err})
-                werr := whisk.MakeWskError(errors.New(errStr), whisk.EXIT_CODE_ERR_GENERAL, whisk.DISPLAY_MSG, whisk.NO_DISPLAY_USAGE)
-                return werr
-            }
-            Client.Config.BaseURL = baseURL
-        }
-    }
-
-    if Flags.Global.Debug {
-        whisk.SetDebug(true)
-    }
-    if Flags.Global.Verbose {
-        whisk.SetVerbose(true)
-    }
-
-    return nil
+	if cert := Flags.Global.Cert; len(cert) > 0 {
+		Properties.Cert = cert
+		if Client != nil {
+			Client.Config.Cert = cert
+		}
+	}
+
+	if key := Flags.Global.Key; len(key) > 0 {
+		Properties.Key = key
+		if Client != nil {
+			Client.Config.Key = key
+		}
+	}
+
+	if auth := Flags.Global.Auth; len(auth) > 0 {
+		Properties.Auth = auth
+		if Client != nil {
+			Client.Config.AuthToken = auth
+		}
+	}
+
+	if namespace := Flags.property.namespaceSet; len(namespace) > 0 {
+		Properties.Namespace = namespace
+		if Client != nil {
+			Client.Config.Namespace = namespace
+		}
+	}
+
+	if apiVersion := Flags.Global.Apiversion; len(apiVersion) > 0 {
+		Properties.APIVersion = apiVersion
+		if Client != nil {
+			Client.Config.Version = apiVersion
+		}
+	}
+
+	if apiHost := Flags.Global.Apihost; len(apiHost) > 0 {
+		Properties.APIHost = apiHost
+		if Client != nil {
+			Client.Config.Host = apiHost
+			baseURL, err := whisk.GetURLBase(apiHost, DefaultOpenWhiskApiPath)
+
+			if err != nil {
+				whisk.Debug(whisk.DbgError, "whisk.GetURLBase(%s, %s) failed: %s\n", apiHost, DefaultOpenWhiskApiPath, err)
+				errStr := wski18n.T("Invalid host address '{{.host}}': {{.err}}",
+					map[string]interface{}{"host": Properties.APIHost, "err": err})
+				werr := whisk.MakeWskError(errors.New(errStr), whisk.EXIT_CODE_ERR_GENERAL, whisk.DISPLAY_MSG, whisk.NO_DISPLAY_USAGE)
+				return werr
+			}
+			Client.Config.BaseURL = baseURL
+		}
+	}
+
+	if Flags.Global.Debug {
+		whisk.SetDebug(true)
+	}
+	if Flags.Global.Verbose {
+		whisk.SetVerbose(true)
+	}
+
+	return nil
 }
diff --git a/commands/qualified_name.go b/commands/qualified_name.go
index e3391cf..8209ee8 100644
--- a/commands/qualified_name.go
+++ b/commands/qualified_name.go
@@ -17,18 +17,18 @@
 package commands
 
 import (
-    "errors"
-    "fmt"
-    "strings"
-    "github.com/apache/incubator-openwhisk-client-go/whisk"
-    "github.com/apache/incubator-openwhisk-cli/wski18n"
+	"errors"
+	"fmt"
+	"github.com/apache/incubator-openwhisk-cli/wski18n"
+	"github.com/apache/incubator-openwhisk-client-go/whisk"
+	"strings"
 )
 
 type QualifiedName struct {
-    namespace   string  // namespace. does not include leading '/'.  may be "" (i.e. default namespace)
-    packageName string  // package.  may be "".  does not include leading/trailing '/'
-    entity      string  // entity.  should not be ""
-    EntityName  string  // pkg+entity
+	namespace   string // namespace. does not include leading '/'.  may be "" (i.e. default namespace)
+	packageName string // package.  may be "".  does not include leading/trailing '/'
+	entity      string // entity.  should not be ""
+	EntityName  string // pkg+entity
 }
 
 ///////////////////////////
@@ -39,40 +39,40 @@ type QualifiedName struct {
 //      from qualifiedName with proper syntax.
 //  Example: /namespace/[package/]entity
 func (qualifiedName *QualifiedName) GetFullQualifiedName() string {
-    output := []string{}
+	output := []string{}
 
-    if len(qualifiedName.GetNamespace()) > 0 {
-        output = append(output, "/", qualifiedName.GetNamespace(), "/")
-    }
-    if len(qualifiedName.GetPackageName()) > 0 {
-        output = append(output, qualifiedName.GetPackageName(), "/")
-    }
-    output = append(output, qualifiedName.GetEntity())
+	if len(qualifiedName.GetNamespace()) > 0 {
+		output = append(output, "/", qualifiedName.GetNamespace(), "/")
+	}
+	if len(qualifiedName.GetPackageName()) > 0 {
+		output = append(output, qualifiedName.GetPackageName(), "/")
+	}
+	output = append(output, qualifiedName.GetEntity())
 
-    return strings.Join(output, "")
+	return strings.Join(output, "")
 }
 
 //  GetPackageName() returns the package name from qualifiedName without a
 //      leading '/'
 func (qualifiedName *QualifiedName) GetPackageName() string {
-    return qualifiedName.packageName
+	return qualifiedName.packageName
 }
 
 //  GetEntityName() returns the entity name ([package/]entity) of qualifiedName
 //      without a leading '/'
 func (qualifiedName *QualifiedName) GetEntityName() string {
-    return qualifiedName.EntityName
+	return qualifiedName.EntityName
 }
 
 //  GetEntity() returns the name of entity in qualifiedName without a leading '/'
 func (qualifiedName *QualifiedName) GetEntity() string {
-    return qualifiedName.entity
+	return qualifiedName.entity
 }
 
 //  GetNamespace() returns the name of the namespace in qualifiedName without
 //      a leading '/'
 func (qualifiedName *QualifiedName) GetNamespace() string {
-    return qualifiedName.namespace
+	return qualifiedName.namespace
 }
 
 //  NewQualifiedName(name) initializes and constructs a (possibly fully qualified)
@@ -89,51 +89,51 @@ func (qualifiedName *QualifiedName) GetNamespace() string {
 //      /ns/foo => qualifiedName {namespace: ns, entityName: foo}
 //      /ns/pkg/foo => qualifiedName {namespace: ns, entityName: pkg/foo}
 func NewQualifiedName(name string) (*QualifiedName, error) {
-    qualifiedName := new(QualifiedName)
-
-    // If name has a preceding delimiter (/), or if it has two delimiters with a
-    // leading non-empty string, then it contains a namespace. Otherwise the name
-    // does not specify a namespace, so default the namespace to the namespace
-    // value set in the properties file; if that is not set, use "_"
-    name = addLeadSlash(name)
-    parts := strings.Split(name, "/")
-    if  strings.HasPrefix(name, "/")  {
-        qualifiedName.namespace = parts[1]
-
-        if len(parts) < 2 || len(parts) > 4 {
-            return qualifiedName, qualifiedNameNotSpecifiedErr()
-        }
-
-        for i := 1; i < len(parts); i++ {
-            if len(parts[i]) == 0 || parts[i] == "." {
-                return qualifiedName, qualifiedNameNotSpecifiedErr()
-            }
-        }
-
-        qualifiedName.EntityName = strings.Join(parts[2:], "/")
-        if len(parts) == 4 {
-            qualifiedName.packageName = parts[2]
-        }
-        qualifiedName.entity = parts[len(parts)-1]
-    } else {
-        if len(name) == 0 || name == "." {
-            return qualifiedName, qualifiedNameNotSpecifiedErr()
-        }
-
-        qualifiedName.entity = parts[len(parts)-1]
-        if len(parts) == 2 {
-            qualifiedName.packageName = parts[0]
-        }
-        qualifiedName.EntityName = name
-        qualifiedName.namespace = getNamespaceFromProp()
-    }
-
-    whisk.Debug(whisk.DbgInfo, "Qualified pkg+entity (EntityName): %s\n", qualifiedName.GetEntityName())
-    whisk.Debug(whisk.DbgInfo, "Qualified namespace: %s\n", qualifiedName.GetNamespace())
-    whisk.Debug(whisk.DbgInfo, "Qualified package: %s\n", qualifiedName.GetPackageName())
-    whisk.Debug(whisk.DbgInfo, "Qualified entity: %s\n", qualifiedName.GetEntity())
-
-    return qualifiedName, nil
+	qualifiedName := new(QualifiedName)
+
+	// If name has a preceding delimiter (/), or if it has two delimiters with a
+	// leading non-empty string, then it contains a namespace. Otherwise the name
+	// does not specify a namespace, so default the namespace to the namespace
+	// value set in the properties file; if that is not set, use "_"
+	name = addLeadSlash(name)
+	parts := strings.Split(name, "/")
+	if strings.HasPrefix(name, "/") {
+		qualifiedName.namespace = parts[1]
+
+		if len(parts) < 2 || len(parts) > 4 {
+			return qualifiedName, qualifiedNameNotSpecifiedErr()
+		}
+
+		for i := 1; i < len(parts); i++ {
+			if len(parts[i]) == 0 || parts[i] == "." {
+				return qualifiedName, qualifiedNameNotSpecifiedErr()
+			}
+		}
+
+		qualifiedName.EntityName = strings.Join(parts[2:], "/")
+		if len(parts) == 4 {
+			qualifiedName.packageName = parts[2]
+		}
+		qualifiedName.entity = parts[len(parts)-1]
+	} else {
+		if len(name) == 0 || name == "." {
+			return qualifiedName, qualifiedNameNotSpecifiedErr()
+		}
+
+		qualifiedName.entity = parts[len(parts)-1]
+		if len(parts) == 2 {
+			qualifiedName.packageName = parts[0]
+		}
+		qualifiedName.EntityName = name
+		qualifiedName.namespace = getNamespaceFromProp()
+	}
+
+	whisk.Debug(whisk.DbgInfo, "Qualified pkg+entity (EntityName): %s\n", qualifiedName.GetEntityName())
+	whisk.Debug(whisk.DbgInfo, "Qualified namespace: %s\n", qualifiedName.GetNamespace())
+	whisk.Debug(whisk.DbgInfo, "Qualified package: %s\n", qualifiedName.GetPackageName())
+	whisk.Debug(whisk.DbgInfo, "Qualified entity: %s\n", qualifiedName.GetEntity())
+
+	return qualifiedName, nil
 }
 
 /////////////////////
@@ -144,24 +144,24 @@ func NewQualifiedName(name string) (*QualifiedName, error) {
 //      invalid qualified names detected while building a new
 //      QualifiedName struct.
 func qualifiedNameNotSpecifiedErr() error {
-    whisk.Debug(whisk.DbgError, "A valid qualified name was not detected\n")
-    errStr := wski18n.T("A valid qualified name must be specified.")
-    return whisk.MakeWskError(errors.New(errStr), whisk.NOT_ALLOWED, whisk.DISPLAY_MSG, whisk.NO_DISPLAY_USAGE)
+	whisk.Debug(whisk.DbgError, "A valid qualified name was not detected\n")
+	errStr := wski18n.T("A valid qualified name must be specified.")
+	return whisk.MakeWskError(errors.New(errStr), whisk.NOT_ALLOWED, whisk.DISPLAY_MSG, whisk.NO_DISPLAY_USAGE)
 }
 
 //  NewQualifiedNameError(entityName, err) returns specific whisk error
 //      for invalid qualified names.
-func NewQualifiedNameError(entityName string, err error) (error) {
-    whisk.Debug(whisk.DbgError, "NewQualifiedName(%s) failed: %s\n", entityName, err)
+func NewQualifiedNameError(entityName string, err error) error {
+	whisk.Debug(whisk.DbgError, "NewQualifiedName(%s) failed: %s\n", entityName, err)
 
-    errMsg := wski18n.T(
-        "'{{.name}}' is not a valid qualified name: {{.err}}",
-        map[string]interface{}{
-            "name": entityName,
-            "err": err,
-        })
+	errMsg := wski18n.T(
+		"'{{.name}}' is not a valid qualified name: {{.err}}",
+		map[string]interface{}{
+			"name": entityName,
+			"err":  err,
+		})
 
-    return whisk.MakeWskError(errors.New(errMsg), whisk.EXIT_CODE_ERR_GENERAL, whisk.DISPLAY_MSG, whisk.DISPLAY_USAGE)
+	return whisk.MakeWskError(errors.New(errMsg), whisk.EXIT_CODE_ERR_GENERAL, whisk.DISPLAY_MSG, whisk.DISPLAY_USAGE)
 }
 
 ///////////////////////////
@@ -172,23 +172,23 @@ func NewQualifiedNameError(entityName string, err error) (error) {
 //      inserting a leading '/' if it is of 3 parts (namespace/package/action)
 //      and lacking the leading '/'.
 func addLeadSlash(name string) string {
-    parts := strings.Split(name, "/")
-    if len(parts) == 3 && parts[0] != "" {
-        name = "/" + name
-    }
-    return name
+	parts := strings.Split(name, "/")
+	if len(parts) == 3 && parts[0] != "" {
+		name = "/" + name
+	}
+	return name
 }
 
 //  getNamespaceFromProp() returns a namespace from Properties if one exists,
 //      else defaults to returning "_"
-func getNamespaceFromProp() (string) {
-    namespace := "_"
+func getNamespaceFromProp() string {
+	namespace := "_"
 
-    if Properties.Namespace != "" {
-        namespace = Properties.Namespace
-    }
+	if Properties.Namespace != "" {
+		namespace = Properties.Namespace
+	}
 
-    return namespace
+	return namespace
 }
 
 //  getQualifiedName(name, namespace) returns a fully qualified name given a
@@ -200,16 +200,16 @@ func getNamespaceFromProp() (string) {
 //      (foo, ns) => /ns/foo
 //      (/ns/pkg/foo, None) => /ns/pkg/foo
 //      (/ns/pkg/foo, otherns) => /ns/pkg/foo
-func getQualifiedName(name string, namespace string) (string) {
-    name = addLeadSlash(name)
-    if strings.HasPrefix(name, "/") {
-        return name
-    } else if strings.HasPrefix(namespace, "/")  {
-        return fmt.Sprintf("%s/%s", namespace, name)
-    } else {
-        if len(namespace) == 0 {
-            namespace = Properties.Namespace
-        }
-        return fmt.Sprintf("/%s/%s", namespace, name)
-    }
+func getQualifiedName(name string, namespace string) string {
+	name = addLeadSlash(name)
+	if strings.HasPrefix(name, "/") {
+		return name
+	} else if strings.HasPrefix(namespace, "/") {
+		return fmt.Sprintf("%s/%s", namespace, name)
+	} else {
+		if len(namespace) == 0 {
+			namespace = Properties.Namespace
+		}
+		return fmt.Sprintf("/%s/%s", namespace, name)
+	}
 }
diff --git a/commands/rule.go b/commands/rule.go
index dddbc3b..6092d8c 100644
--- a/commands/rule.go
+++ b/commands/rule.go
@@ -18,415 +18,415 @@
 package commands
 
 import (
-    "errors"
-    "fmt"
+	"errors"
+	"fmt"
 
-    "github.com/apache/incubator-openwhisk-client-go/whisk"
-    "github.com/apache/incubator-openwhisk-cli/wski18n"
+	"github.com/apache/incubator-openwhisk-cli/wski18n"
+	"github.com/apache/incubator-openwhisk-client-go/whisk"
 
-    "github.com/fatih/color"
-    "github.com/spf13/cobra"
+	"github.com/fatih/color"
+	"github.com/spf13/cobra"
 )
 
 // ruleCmd represents the rule command
 var ruleCmd = &cobra.Command{
-    Use:   "rule",
-    Short: wski18n.T("work with rules"),
+	Use:   "rule",
+	Short: wski18n.T("work with rules"),
 }
 
 var ruleEnableCmd = &cobra.Command{
-    Use:   "enable RULE_NAME",
-    Short: wski18n.T("enable rule"),
-    SilenceUsage:   true,
-    SilenceErrors:  true,
-    PreRunE: SetupClientConfig,
-    RunE: func(cmd *cobra.Command, args []string) error {
-        var err error
-        var qualifiedName = new(QualifiedName)
-
-        if whiskErr := CheckArgs(args, 1, 1, "Rule enable", wski18n.T("A rule name is required.")); whiskErr != nil {
-            return whiskErr
-        }
-
-        if qualifiedName, err = NewQualifiedName(args[0]); err != nil {
-            return NewQualifiedNameError(args[0], err)
-        }
-
-        Client.Namespace = qualifiedName.GetNamespace()
-        ruleName := qualifiedName.GetEntityName()
-
-        _, _, err = Client.Rules.SetState(ruleName, "active")
-        if err != nil {
-            whisk.Debug(whisk.DbgError, "Client.Rules.SetState(%s, active) failed: %s\n", ruleName, err)
-            errStr := wski18n.T("Unable to enable rule '{{.name}}': {{.err}}",
-                    map[string]interface{}{"name": ruleName, "err": err})
-            werr := whisk.MakeWskErrorFromWskError(errors.New(errStr), err, whisk.EXIT_CODE_ERR_GENERAL, whisk.DISPLAY_MSG, whisk.NO_DISPLAY_USAGE)
-            return werr
-        }
-
-        fmt.Fprintf(color.Output,
-            wski18n.T("{{.ok}} enabled rule {{.name}}\n",
-                map[string]interface{}{"ok": color.GreenString("ok:"), "name": boldString(ruleName)}))
-        return nil
-    },
+	Use:           "enable RULE_NAME",
+	Short:         wski18n.T("enable rule"),
+	SilenceUsage:  true,
+	SilenceErrors: true,
+	PreRunE:       SetupClientConfig,
+	RunE: func(cmd *cobra.Command, args []string) error {
+		var err error
+		var qualifiedName = new(QualifiedName)
+
+		if whiskErr := CheckArgs(args, 1, 1, "Rule enable", wski18n.T("A rule name is required.")); whiskErr != nil {
+			return whiskErr
+		}
+
+		if qualifiedName, err = NewQualifiedName(args[0]); err != nil {
+			return NewQualifiedNameError(args[0], err)
+		}
+
+		Client.Namespace = qualifiedName.GetNamespace()
+		ruleName := qualifiedName.GetEntityName()
+
+		_, _, err = Client.Rules.SetState(ruleName, "active")
+		if err != nil {
+			whisk.Debug(whisk.DbgError, "Client.Rules.SetState(%s, active) failed: %s\n", ruleName, err)
+			errStr := wski18n.T("Unable to enable rule '{{.name}}': {{.err}}",
+				map[string]interface{}{"name": ruleName, "err": err})
+			werr := whisk.MakeWskErrorFromWskError(errors.New(errStr), err, whisk.EXIT_CODE_ERR_GENERAL, whisk.DISPLAY_MSG, whisk.NO_DISPLAY_USAGE)
+			return werr
+		}
+
+		fmt.Fprintf(color.Output,
+			wski18n.T("{{.ok}} enabled rule {{.name}}\n",
+				map[string]interface{}{"ok": color.GreenString("ok:"), "name": boldString(ruleName)}))
+		return nil
+	},
 }
 
 var ruleDisableCmd = &cobra.Command{
-    Use:   "disable RULE_NAME",
-    Short: wski18n.T("disable rule"),
-    SilenceUsage:   true,
-    SilenceErrors:  true,
-    PreRunE: SetupClientConfig,
-    RunE: func(cmd *cobra.Command, args []string) error {
-        var err error
-        var qualifiedName = new(QualifiedName)
-
-        if whiskErr := CheckArgs(args, 1, 1, "Rule disable", wski18n.T("A rule name is required.")); whiskErr != nil {
-            return whiskErr
-        }
-
-        if qualifiedName, err = NewQualifiedName(args[0]); err != nil {
-            return NewQualifiedNameError(args[0], err)
-        }
-
-        Client.Namespace = qualifiedName.GetNamespace()
-        ruleName := qualifiedName.GetEntityName()
-
-        _, _, err = Client.Rules.SetState(ruleName, "inactive")
-        if err != nil {
-            whisk.Debug(whisk.DbgError, "Client.Rules.SetState(%s, inactive) failed: %s\n", ruleName, err)
-            errStr := wski18n.T("Unable to disable rule '{{.name}}': {{.err}}",
-                    map[string]interface{}{"name": ruleName, "err": err})
-            werr := whisk.MakeWskErrorFromWskError(errors.New(errStr), err, whisk.EXIT_CODE_ERR_GENERAL, whisk.DISPLAY_MSG, whisk.NO_DISPLAY_USAGE)
-            return werr
-        }
-
-        fmt.Fprintf(color.Output,
-            wski18n.T("{{.ok}} disabled rule {{.name}}\n",
-                map[string]interface{}{"ok": color.GreenString("ok:"), "name": boldString(ruleName)}))
-        return nil
-    },
+	Use:           "disable RULE_NAME",
+	Short:         wski18n.T("disable rule"),
+	SilenceUsage:  true,
+	SilenceErrors: true,
+	PreRunE:       SetupClientConfig,
+	RunE: func(cmd *cobra.Command, args []string) error {
+		var err error
+		var qualifiedName = new(QualifiedName)
+
+		if whiskErr := CheckArgs(args, 1, 1, "Rule disable", wski18n.T("A rule name is required.")); whiskErr != nil {
+			return whiskErr
+		}
+
+		if qualifiedName, err = NewQualifiedName(args[0]); err != nil {
+			return NewQualifiedNameError(args[0], err)
+		}
+
+		Client.Namespace = qualifiedName.GetNamespace()
+		ruleName := qualifiedName.GetEntityName()
+
+		_, _, err = Client.Rules.SetState(ruleName, "inactive")
+		if err != nil {
+			whisk.Debug(whisk.DbgError, "Client.Rules.SetState(%s, inactive) failed: %s\n", ruleName, err)
+			errStr := wski18n.T("Unable to disable rule '{{.name}}': {{.err}}",
+				map[string]interface{}{"name": ruleName, "err": err})
+			werr := whisk.MakeWskErrorFromWskError(errors.New(errStr), err, whisk.EXIT_CODE_ERR_GENERAL, whisk.DISPLAY_MSG, whisk.NO_DISPLAY_USAGE)
+			return werr
+		}
+
+		fmt.Fprintf(color.Output,
+			wski18n.T("{{.ok}} disabled rule {{.name}}\n",
+				map[string]interface{}{"ok": color.GreenString("ok:"), "name": boldString(ruleName)}))
+		return nil
+	},
 }
 
 var ruleStatusCmd = &cobra.Command{
-    Use:   "status RULE_NAME",
-    Short: wski18n.T("get rule status"),
-    SilenceUsage:   true,
-    SilenceErrors:  true,
-    PreRunE: SetupClientConfig,
-    RunE: func(cmd *cobra.Command, args []string) error {
-        var err error
-        var qualifiedName = new(QualifiedName)
-
-        if whiskErr := CheckArgs(args, 1, 1, "Rule status", wski18n.T("A rule name is required.")); whiskErr != nil {
-            return whiskErr
-        }
-
-        if qualifiedName, err = NewQualifiedName(args[0]); err != nil {
-            return NewQualifiedNameError(args[0], err)
-        }
-
-        Client.Namespace = qualifiedName.GetNamespace()
-        ruleName := qualifiedName.GetEntityName()
-
-        rule, _, err := Client.Rules.Get(ruleName)
-        if err != nil {
-            whisk.Debug(whisk.DbgError, "Client.Rules.Get(%s) failed: %s\n", ruleName, err)
-            errStr := wski18n.T("Unable to get status of rule '{{.name}}': {{.err}}",
-                    map[string]interface{}{"name": ruleName, "err": err})
-            werr := whisk.MakeWskErrorFromWskError(errors.New(errStr), err, whisk.EXIT_CODE_ERR_GENERAL, whisk.DISPLAY_MSG, whisk.DISPLAY_USAGE)
-            return werr
-        }
-
-        fmt.Fprintf(color.Output,
-            wski18n.T("{{.ok}} rule {{.name}} is {{.status}}\n",
-                map[string]interface{}{"ok": color.GreenString("ok:"), "name": boldString(ruleName), "status": boldString(rule.Status)}))
-        return nil
-    },
+	Use:           "status RULE_NAME",
+	Short:         wski18n.T("get rule status"),
+	SilenceUsage:  true,
+	SilenceErrors: true,
+	PreRunE:       SetupClientConfig,
+	RunE: func(cmd *cobra.Command, args []string) error {
+		var err error
+		var qualifiedName = new(QualifiedName)
+
+		if whiskErr := CheckArgs(args, 1, 1, "Rule status", wski18n.T("A rule name is required.")); whiskErr != nil {
+			return whiskErr
+		}
+
+		if qualifiedName, err = NewQualifiedName(args[0]); err != nil {
+			return NewQualifiedNameError(args[0], err)
+		}
+
+		Client.Namespace = qualifiedName.GetNamespace()
+		ruleName := qualifiedName.GetEntityName()
+
+		rule, _, err := Client.Rules.Get(ruleName)
+		if err != nil {
+			whisk.Debug(whisk.DbgError, "Client.Rules.Get(%s) failed: %s\n", ruleName, err)
+			errStr := wski18n.T("Unable to get status of rule '{{.name}}': {{.err}}",
+				map[string]interface{}{"name": ruleName, "err": err})
+			werr := whisk.MakeWskErrorFromWskError(errors.New(errStr), err, whisk.EXIT_CODE_ERR_GENERAL, whisk.DISPLAY_MSG, whisk.DISPLAY_USAGE)
+			return werr
+		}
+
+		fmt.Fprintf(color.Output,
+			wski18n.T("{{.ok}} rule {{.name}} is {{.status}}\n",
+				map[string]interface{}{"ok": color.GreenString("ok:"), "name": boldString(ruleName), "status": boldString(rule.Status)}))
+		return nil
+	},
 }
 
 var ruleCreateCmd = &cobra.Command{
-    Use:   "create RULE_NAME TRIGGER_NAME ACTION_NAME",
-    Short: wski18n.T("create new rule"),
-    SilenceUsage:   true,
-    SilenceErrors:  true,
-    PreRunE: SetupClientConfig,
-    RunE: func(cmd *cobra.Command, args []string) error {
-        var err error
-        var qualifiedName = new(QualifiedName)
-
-        if whiskErr := CheckArgs(args, 3, 3, "Rule create",
-                wski18n.T("A rule, trigger and action name are required.")); whiskErr != nil {
-            return whiskErr
-        }
-
-        if qualifiedName, err = NewQualifiedName(args[0]); err != nil {
-            return NewQualifiedNameError(args[0], err)
-        }
-
-        Client.Namespace = qualifiedName.GetNamespace()
-        ruleName := qualifiedName.GetEntityName()
-        triggerName := getQualifiedName(args[1], Properties.Namespace)
-        actionName := getQualifiedName(args[2], Properties.Namespace)
-
-        rule := &whisk.Rule{
-            Name:    ruleName,
-            Trigger: triggerName,
-            Action:  actionName,
-        }
-
-        whisk.Debug(whisk.DbgInfo, "Inserting rule:\n%+v\n", rule)
-        var retRule *whisk.Rule
-        retRule, _, err = Client.Rules.Insert(rule, false)
-        if err != nil {
-            whisk.Debug(whisk.DbgError, "Client.Rules.Insert(%#v) failed: %s\n", rule, err)
-            errStr := wski18n.T("Unable to create rule '{{.name}}': {{.err}}",
-                    map[string]interface{}{"name": ruleName, "err": err})
-            werr := whisk.MakeWskErrorFromWskError(errors.New(errStr), err, whisk.EXIT_CODE_ERR_GENERAL, whisk.DISPLAY_MSG, whisk.NO_DISPLAY_USAGE)
-            return werr
-        }
-        whisk.Debug(whisk.DbgInfo, "Inserted rule:\n%+v\n", retRule)
-
-        fmt.Fprintf(color.Output,
-            wski18n.T("{{.ok}} created rule {{.name}}\n",
-                map[string]interface{}{"ok": color.GreenString("ok:"), "name": boldString(ruleName)}))
-        return nil
-    },
+	Use:           "create RULE_NAME TRIGGER_NAME ACTION_NAME",
+	Short:         wski18n.T("create new rule"),
+	SilenceUsage:  true,
+	SilenceErrors: true,
+	PreRunE:       SetupClientConfig,
+	RunE: func(cmd *cobra.Command, args []string) error {
+		var err error
+		var qualifiedName = new(QualifiedName)
+
+		if whiskErr := CheckArgs(args, 3, 3, "Rule create",
+			wski18n.T("A rule, trigger and action name are required.")); whiskErr != nil {
+			return whiskErr
+		}
+
+		if qualifiedName, err = NewQualifiedName(args[0]); err != nil {
+			return NewQualifiedNameError(args[0], err)
+		}
+
+		Client.Namespace = qualifiedName.GetNamespace()
+		ruleName := qualifiedName.GetEntityName()
+		triggerName := getQualifiedName(args[1], Properties.Namespace)
+		actionName := getQualifiedName(args[2], Properties.Namespace)
+
+		rule := &whisk.Rule{
+			Name:    ruleName,
+			Trigger: triggerName,
+			Action:  actionName,
+		}
+
+		whisk.Debug(whisk.DbgInfo, "Inserting rule:\n%+v\n", rule)
+		var retRule *whisk.Rule
+		retRule, _, err = Client.Rules.Insert(rule, false)
+		if err != nil {
+			whisk.Debug(whisk.DbgError, "Client.Rules.Insert(%#v) failed: %s\n", rule, err)
+			errStr := wski18n.T("Unable to create rule '{{.name}}': {{.err}}",
+				map[string]interface{}{"name": ruleName, "err": err})
+			werr := whisk.MakeWskErrorFromWskError(errors.New(errStr), err, whisk.EXIT_CODE_ERR_GENERAL, whisk.DISPLAY_MSG, whisk.NO_DISPLAY_USAGE)
+			return werr
+		}
+		whisk.Debug(whisk.DbgInfo, "Inserted rule:\n%+v\n", retRule)
+
+		fmt.Fprintf(color.Output,
+			wski18n.T("{{.ok}} created rule {{.name}}\n",
+				map[string]interface{}{"ok": color.GreenString("ok:"), "name": boldString(ruleName)}))
+		return nil
+	},
 }
 
 var ruleUpdateCmd = &cobra.Command{
-    Use:   "update RULE_NAME TRIGGER_NAME ACTION_NAME",
-    Short: wski18n.T("update an existing rule, or create a rule if it does not exist"),
-    SilenceUsage:   true,
-    SilenceErrors:  true,
-    PreRunE: SetupClientConfig,
-    RunE: func(cmd *cobra.Command, args []string) error {
-        var err error
-        var qualifiedName = new(QualifiedName)
-
-        if whiskErr := CheckArgs(args, 3, 3, "Rule update",
-                wski18n.T("A rule, trigger and action name are required.")); whiskErr != nil {
-            return whiskErr
-        }
-
-        if qualifiedName, err = NewQualifiedName(args[0]); err != nil {
-            return NewQualifiedNameError(args[0], err)
-        }
-
-        Client.Namespace = qualifiedName.GetNamespace()
-        ruleName := qualifiedName.GetEntityName()
-        triggerName := getQualifiedName(args[1], Properties.Namespace)
-        actionName := getQualifiedName(args[2], Properties.Namespace)
-
-        rule := &whisk.Rule{
-            Name:    ruleName,
-            Trigger: triggerName,
-            Action:  actionName,
-        }
-
-        _, _, err = Client.Rules.Insert(rule, true)
-        if err != nil {
-            whisk.Debug(whisk.DbgError, "Client.Rules.Insert(%#v) failed: %s\n", rule, err)
-            errStr := wski18n.T("Unable to update rule '{{.name}}': {{.err}}",
-                    map[string]interface{}{"name": rule.Name, "err": err})
-            werr := whisk.MakeWskErrorFromWskError(errors.New(errStr), err, whisk.EXIT_CODE_ERR_GENERAL, whisk.DISPLAY_MSG, whisk.NO_DISPLAY_USAGE)
-            return werr
-        }
-
-        fmt.Fprintf(color.Output,
-            wski18n.T("{{.ok}} updated rule {{.name}}\n",
-                map[string]interface{}{"ok": color.GreenString("ok:"), "name": boldString(ruleName)}))
-        return nil
-    },
+	Use:           "update RULE_NAME TRIGGER_NAME ACTION_NAME",
+	Short:         wski18n.T("update an existing rule, or create a rule if it does not exist"),
+	SilenceUsage:  true,
+	SilenceErrors: true,
+	PreRunE:       SetupClientConfig,
+	RunE: func(cmd *cobra.Command, args []string) error {
+		var err error
+		var qualifiedName = new(QualifiedName)
+
+		if whiskErr := CheckArgs(args, 3, 3, "Rule update",
+			wski18n.T("A rule, trigger and action name are required.")); whiskErr != nil {
+			return whiskErr
+		}
+
+		if qualifiedName, err = NewQualifiedName(args[0]); err != nil {
+			return NewQualifiedNameError(args[0], err)
+		}
+
+		Client.Namespace = qualifiedName.GetNamespace()
+		ruleName := qualifiedName.GetEntityName()
+		triggerName := getQualifiedName(args[1], Properties.Namespace)
+		actionName := getQualifiedName(args[2], Properties.Namespace)
+
+		rule := &whisk.Rule{
+			Name:    ruleName,
+			Trigger: triggerName,
+			Action:  actionName,
+		}
+
+		_, _, err = Client.Rules.Insert(rule, true)
+		if err != nil {
+			whisk.Debug(whisk.DbgError, "Client.Rules.Insert(%#v) failed: %s\n", rule, err)
+			errStr := wski18n.T("Unable to update rule '{{.name}}': {{.err}}",
+				map[string]interface{}{"name": rule.Name, "err": err})
+			werr := whisk.MakeWskErrorFromWskError(errors.New(errStr), err, whisk.EXIT_CODE_ERR_GENERAL, whisk.DISPLAY_MSG, whisk.NO_DISPLAY_USAGE)
+			return werr
+		}
+
+		fmt.Fprintf(color.Output,
+			wski18n.T("{{.ok}} updated rule {{.name}}\n",
+				map[string]interface{}{"ok": color.GreenString("ok:"), "name": boldString(ruleName)}))
+		return nil
+	},
 }
 
 var ruleGetCmd = &cobra.Command{
-    Use:   "get RULE_NAME",
-    Short: wski18n.T("get rule"),
-    SilenceUsage:   true,
-    SilenceErrors:  true,
-    PreRunE: SetupClientConfig,
-    RunE: func(cmd *cobra.Command, args []string) error {
-        var err error
-        var field string
-        var qualifiedName = new(QualifiedName)
-
-        if whiskErr := CheckArgs(args, 1, 2, "Rule get", wski18n.T("A rule name is required.")); whiskErr != nil {
-            return whiskErr
-        }
-
-        if len(args) > 1 {
-            field = args[1]
-
-            if !fieldExists(&whisk.Rule{}, field){
-                errMsg := wski18n.T("Invalid field filter '{{.arg}}'.", map[string]interface{}{"arg": field})
-                whiskErr := whisk.MakeWskError(errors.New(errMsg), whisk.EXIT_CODE_ERR_GENERAL,
-                    whisk.DISPLAY_MSG, whisk.NO_DISPLAY_USAGE)
-                return whiskErr
-            }
-        }
-
-        if qualifiedName, err = NewQualifiedName(args[0]); err != nil {
-            return NewQualifiedNameError(args[0], err)
-        }
-
-        Client.Namespace = qualifiedName.GetNamespace()
-        ruleName := qualifiedName.GetEntityName()
-
-        rule, _, err := Client.Rules.Get(ruleName)
-        if err != nil {
-            whisk.Debug(whisk.DbgError, "Client.Rules.Get(%s) failed: %s\n", ruleName, err)
-            errStr := wski18n.T("Unable to get rule '{{.name}}': {{.err}}",
-                    map[string]interface{}{"name": ruleName, "err": err})
-            werr := whisk.MakeWskErrorFromWskError(errors.New(errStr), err, whisk.EXIT_CODE_ERR_GENERAL, whisk.DISPLAY_MSG, whisk.DISPLAY_USAGE)
-            return werr
-        }
-
-        if (Flags.rule.summary) {
-            printRuleSummary(rule)
-        } else {
-            if len(field) > 0 {
-                fmt.Fprintf(color.Output, wski18n.T("{{.ok}} got rule {{.name}}, displaying field {{.field}}\n",
-                    map[string]interface{}{"ok": color.GreenString("ok:"), "name": boldString(ruleName),
-                        "field": field}))
-                printField(rule, field)
-            } else {
-                fmt.Fprintf(color.Output, wski18n.T("{{.ok}} got rule {{.name}}\n",
-                        map[string]interface{}{"ok": color.GreenString("ok:"), "name": boldString(ruleName)}))
-                printJSON(rule)
-            }
-        }
-
-        return nil
-    },
+	Use:           "get RULE_NAME",
+	Short:         wski18n.T("get rule"),
+	SilenceUsage:  true,
+	SilenceErrors: true,
+	PreRunE:       SetupClientConfig,
+	RunE: func(cmd *cobra.Command, args []string) error {
+		var err error
+		var field string
+		var qualifiedName = new(QualifiedName)
+
+		if whiskErr := CheckArgs(args, 1, 2, "Rule get", wski18n.T("A rule name is required.")); whiskErr != nil {
+			return whiskErr
+		}
+
+		if len(args) > 1 {
+			field = args[1]
+
+			if !fieldExists(&whisk.Rule{}, field) {
+				errMsg := wski18n.T("Invalid field filter '{{.arg}}'.", map[string]interface{}{"arg": field})
+				whiskErr := whisk.MakeWskError(errors.New(errMsg), whisk.EXIT_CODE_ERR_GENERAL,
+					whisk.DISPLAY_MSG, whisk.NO_DISPLAY_USAGE)
+				return whiskErr
+			}
+		}
+
+		if qualifiedName, err = NewQualifiedName(args[0]); err != nil {
+			return NewQualifiedNameError(args[0], err)
+		}
+
+		Client.Namespace = qualifiedName.GetNamespace()
+		ruleName := qualifiedName.GetEntityName()
+
+		rule, _, err := Client.Rules.Get(ruleName)
+		if err != nil {
+			whisk.Debug(whisk.DbgError, "Client.Rules.Get(%s) failed: %s\n", ruleName, err)
+			errStr := wski18n.T("Unable to get rule '{{.name}}': {{.err}}",
+				map[string]interface{}{"name": ruleName, "err": err})
+			werr := whisk.MakeWskErrorFromWskError(errors.New(errStr), err, whisk.EXIT_CODE_ERR_GENERAL, whisk.DISPLAY_MSG, whisk.DISPLAY_USAGE)
+			return werr
+		}
+
+		if Flags.rule.summary {
+			printRuleSummary(rule)
+		} else {
+			if len(field) > 0 {
+				fmt.Fprintf(color.Output, wski18n.T("{{.ok}} got rule {{.name}}, displaying field {{.field}}\n",
+					map[string]interface{}{"ok": color.GreenString("ok:"), "name": boldString(ruleName),
+						"field": field}))
+				printField(rule, field)
+			} else {
+				fmt.Fprintf(color.Output, wski18n.T("{{.ok}} got rule {{.name}}\n",
+					map[string]interface{}{"ok": color.GreenString("ok:"), "name": boldString(ruleName)}))
+				printJSON(rule)
+			}
+		}
+
+		return nil
+	},
 }
 
 var ruleDeleteCmd = &cobra.Command{
-    Use:   "delete RULE_NAME",
-    Short: wski18n.T("delete rule"),
-    SilenceUsage:   true,
-    SilenceErrors:  true,
-    PreRunE: SetupClientConfig,
-    RunE: func(cmd *cobra.Command, args []string) error {
-        var err error
-        var qualifiedName = new(QualifiedName)
-
-        if whiskErr := CheckArgs(args, 1, 1, "Rule delete", wski18n.T("A rule name is required.")); whiskErr != nil {
-            return whiskErr
-        }
-
-        if qualifiedName, err = NewQualifiedName(args[0]); err != nil {
-            return NewQualifiedNameError(args[0], err)
-        }
-
-        Client.Namespace = qualifiedName.GetNamespace()
-        ruleName := qualifiedName.GetEntityName()
-
-        if Flags.rule.disable {
-            _, _, err := Client.Rules.SetState(ruleName, "inactive")
-            if err != nil {
-                whisk.Debug(whisk.DbgError, "Client.Rules.SetState(%s, inactive) failed: %s\n", ruleName, err)
-                errStr := wski18n.T("Unable to disable rule '{{.name}}': {{.err}}",
-                        map[string]interface{}{"name": ruleName, "err": err})
-                werr := whisk.MakeWskErrorFromWskError(errors.New(errStr), err, whisk.EXIT_CODE_ERR_GENERAL, whisk.DISPLAY_MSG, whisk.NO_DISPLAY_USAGE)
-                return werr
-            }
-        }
-
-        _, err = Client.Rules.Delete(ruleName)
-        if err != nil {
-            whisk.Debug(whisk.DbgError, "Client.Rules.Delete(%s) error: %s\n", ruleName, err)
-            errStr := wski18n.T("Unable to delete rule '{{.name}}': {{.err}}",
-                    map[string]interface{}{"name": ruleName, "err": err})
-            werr := whisk.MakeWskErrorFromWskError(errors.New(errStr), err, whisk.EXIT_CODE_ERR_GENERAL, whisk.DISPLAY_MSG, whisk.NO_DISPLAY_USAGE)
-            return werr
-        }
-
-        fmt.Fprintf(color.Output,
-            wski18n.T("{{.ok}} deleted rule {{.name}}\n",
-                map[string]interface{}{"ok": color.GreenString("ok:"), "name": boldString(ruleName)}))
-        return nil
-    },
+	Use:           "delete RULE_NAME",
+	Short:         wski18n.T("delete rule"),
+	SilenceUsage:  true,
+	SilenceErrors: true,
+	PreRunE:       SetupClientConfig,
+	RunE: func(cmd *cobra.Command, args []string) error {
+		var err error
+		var qualifiedName = new(QualifiedName)
+
+		if whiskErr := CheckArgs(args, 1, 1, "Rule delete", wski18n.T("A rule name is required.")); whiskErr != nil {
+			return whiskErr
+		}
+
+		if qualifiedName, err = NewQualifiedName(args[0]); err != nil {
+			return NewQualifiedNameError(args[0], err)
+		}
+
+		Client.Namespace = qualifiedName.GetNamespace()
+		ruleName := qualifiedName.GetEntityName()
+
+		if Flags.rule.disable {
+			_, _, err := Client.Rules.SetState(ruleName, "inactive")
+			if err != nil {
+				whisk.Debug(whisk.DbgError, "Client.Rules.SetState(%s, inactive) failed: %s\n", ruleName, err)
+				errStr := wski18n.T("Unable to disable rule '{{.name}}': {{.err}}",
+					map[string]interface{}{"name": ruleName, "err": err})
+				werr := whisk.MakeWskErrorFromWskError(errors.New(errStr), err, whisk.EXIT_CODE_ERR_GENERAL, whisk.DISPLAY_MSG, whisk.NO_DISPLAY_USAGE)
+				return werr
+			}
+		}
+
+		_, err = Client.Rules.Delete(ruleName)
+		if err != nil {
+			whisk.Debug(whisk.DbgError, "Client.Rules.Delete(%s) error: %s\n", ruleName, err)
+			errStr := wski18n.T("Unable to delete rule '{{.name}}': {{.err}}",
+				map[string]interface{}{"name": ruleName, "err": err})
+			werr := whisk.MakeWskErrorFromWskError(errors.New(errStr), err, whisk.EXIT_CODE_ERR_GENERAL, whisk.DISPLAY_MSG, whisk.NO_DISPLAY_USAGE)
+			return werr
+		}
+
+		fmt.Fprintf(color.Output,
+			wski18n.T("{{.ok}} deleted rule {{.name}}\n",
+				map[string]interface{}{"ok": color.GreenString("ok:"), "name": boldString(ruleName)}))
+		return nil
+	},
 }
 
 var ruleListCmd = &cobra.Command{
-    Use:   "list [NAMESPACE]",
-    Short: wski18n.T("list all rules"),
-    SilenceUsage:   true,
-    SilenceErrors:  true,
-    PreRunE: SetupClientConfig,
-    RunE: func(cmd *cobra.Command, args []string) error {
-        var err error
-        var qualifiedName = new(QualifiedName)
-
-        if whiskErr := CheckArgs(args, 0, 1, "Rule list",
-            wski18n.T("An optional namespace is the only valid argument.")); whiskErr != nil {
-            return whiskErr
-        }
-
-        if len(args) == 1 {
-            if qualifiedName, err = NewQualifiedName(args[0]); err != nil {
-                return NewQualifiedNameError(args[0], err)
-            }
-
-            if len(qualifiedName.GetEntityName()) > 0 {
-                return entityNameError(qualifiedName.GetEntityName())
-            }
-
-            Client.Namespace = qualifiedName.GetNamespace()
-        }
-
-        ruleListOptions := &whisk.RuleListOptions{
-            Skip:  Flags.common.skip,
-            Limit: Flags.common.limit,
-        }
-
-        rules, _, err := Client.Rules.List(ruleListOptions)
-        if err != nil {
-            whisk.Debug(whisk.DbgError, "Client.Rules.List(%#v) error: %s\n", ruleListOptions, err)
-            errStr := wski18n.T("Unable to obtain the list of rules for namespace '{{.name}}': {{.err}}",
-                    map[string]interface{}{"name": getClientNamespace(), "err": err})
-            werr := whisk.MakeWskErrorFromWskError(errors.New(errStr), err, whisk.EXIT_CODE_ERR_GENERAL, whisk.DISPLAY_MSG, whisk.NO_DISPLAY_USAGE)
-            return werr
-        } else {
-            //No errors, lets attempt to retrieve the status of each rule #312
-            for index, rule := range rules {
-                ruleStatus, _, err := Client.Rules.Get(rule.Name)
-                if err != nil {
-                    errStr := wski18n.T("Unable to get status of rule '{{.name}}': {{.err}}",
-                        map[string]interface{}{"name": rule.Name, "err": err})
-                    fmt.Println(errStr)
-                    werr := whisk.MakeWskErrorFromWskError(errors.New(errStr), err, whisk.EXIT_CODE_ERR_GENERAL, whisk.DISPLAY_MSG, whisk.NO_DISPLAY_USAGE)
-                    return werr
-                }
-                rules[index].Status = ruleStatus.Status
-            }
-        }
-
-        sortByName := Flags.common.nameSort
-        printList(rules, sortByName)
-        return nil
-    },
+	Use:           "list [NAMESPACE]",
+	Short:         wski18n.T("list all rules"),
+	SilenceUsage:  true,
+	SilenceErrors: true,
+	PreRunE:       SetupClientConfig,
+	RunE: func(cmd *cobra.Command, args []string) error {
+		var err error
+		var qualifiedName = new(QualifiedName)
+
+		if whiskErr := CheckArgs(args, 0, 1, "Rule list",
+			wski18n.T("An optional namespace is the only valid argument.")); whiskErr != nil {
+			return whiskErr
+		}
+
+		if len(args) == 1 {
+			if qualifiedName, err = NewQualifiedName(args[0]); err != nil {
+				return NewQualifiedNameError(args[0], err)
+			}
+
+			if len(qualifiedName.GetEntityName()) > 0 {
+				return entityNameError(qualifiedName.GetEntityName())
+			}
+
+			Client.Namespace = qualifiedName.GetNamespace()
+		}
+
+		ruleListOptions := &whisk.RuleListOptions{
+			Skip:  Flags.common.skip,
+			Limit: Flags.common.limit,
+		}
+
+		rules, _, err := Client.Rules.List(ruleListOptions)
+		if err != nil {
+			whisk.Debug(whisk.DbgError, "Client.Rules.List(%#v) error: %s\n", ruleListOptions, err)
+			errStr := wski18n.T("Unable to obtain the list of rules for namespace '{{.name}}': {{.err}}",
+				map[string]interface{}{"name": getClientNamespace(), "err": err})
+			werr := whisk.MakeWskErrorFromWskError(errors.New(errStr), err, whisk.EXIT_CODE_ERR_GENERAL, whisk.DISPLAY_MSG, whisk.NO_DISPLAY_USAGE)
+			return werr
+		} else {
+			//No errors, lets attempt to retrieve the status of each rule #312
+			for index, rule := range rules {
+				ruleStatus, _, err := Client.Rules.Get(rule.Name)
+				if err != nil {
+					errStr := wski18n.T("Unable to get status of rule '{{.name}}': {{.err}}",
+						map[string]interface{}{"name": rule.Name, "err": err})
+					fmt.Println(errStr)
+					werr := whisk.MakeWskErrorFromWskError(errors.New(errStr), err, whisk.EXIT_CODE_ERR_GENERAL, whisk.DISPLAY_MSG, whisk.NO_DISPLAY_USAGE)
+					return werr
+				}
+				rules[index].Status = ruleStatus.Status
+			}
+		}
+
+		sortByName := Flags.common.nameSort
+		printList(rules, sortByName)
+		return nil
+	},
 }
 
 func init() {
-    ruleDeleteCmd.Flags().BoolVar(&Flags.rule.disable, "disable", false, wski18n.T("automatically disable rule before deleting it"))
-
-    ruleGetCmd.Flags().BoolVarP(&Flags.rule.summary, "summary", "s", false, wski18n.T("summarize rule details"))
-
-    ruleListCmd.Flags().IntVarP(&Flags.common.skip, "skip", "s", 0, wski18n.T("exclude the first `SKIP` number of rules from the result"))
-    ruleListCmd.Flags().IntVarP(&Flags.common.limit, "limit", "l", 30, wski18n.T("only return `LIMIT` number of rules from the collection"))
-    ruleListCmd.Flags().BoolVarP(&Flags.common.nameSort, "name-sort", "n", false, wski18n.T("sorts a list alphabetically by entity name; only applicable within the limit/skip returned entity block"))
-
-    ruleCmd.AddCommand(
-        ruleCreateCmd,
-        ruleEnableCmd,
-        ruleDisableCmd,
-        ruleStatusCmd,
-        ruleUpdateCmd,
-        ruleGetCmd,
-        ruleDeleteCmd,
-        ruleListCmd,
-    )
+	ruleDeleteCmd.Flags().BoolVar(&Flags.rule.disable, "disable", false, wski18n.T("automatically disable rule before deleting it"))
+
+	ruleGetCmd.Flags().BoolVarP(&Flags.rule.summary, "summary", "s", false, wski18n.T("summarize rule details"))
+
+	ruleListCmd.Flags().IntVarP(&Flags.common.skip, "skip", "s", 0, wski18n.T("exclude the first `SKIP` number of rules from the result"))
+	ruleListCmd.Flags().IntVarP(&Flags.common.limit, "limit", "l", 30, wski18n.T("only return `LIMIT` number of rules from the collection"))
+	ruleListCmd.Flags().BoolVarP(&Flags.common.nameSort, "name-sort", "n", false, wski18n.T("sorts a list alphabetically by entity name; only applicable within the limit/skip returned entity block"))
+
+	ruleCmd.AddCommand(
+		ruleCreateCmd,
+		ruleEnableCmd,
+		ruleDisableCmd,
+		ruleStatusCmd,
+		ruleUpdateCmd,
+		ruleGetCmd,
+		ruleDeleteCmd,
+		ruleListCmd,
+	)
 
 }
diff --git a/commands/sdk.go b/commands/sdk.go
index 4f4eaaf..1974a12 100644
--- a/commands/sdk.go
+++ b/commands/sdk.go
@@ -18,241 +18,242 @@
 package commands
 
 import (
-    "errors"
-    "fmt"
-    "io"
-    "os"
-    "strings"
+	"errors"
+	"fmt"
+	"io"
+	"os"
+	"strings"
 
-    "github.com/spf13/cobra"
+	"github.com/spf13/cobra"
 
-    "github.com/apache/incubator-openwhisk-client-go/whisk"
-    "github.com/apache/incubator-openwhisk-cli/wski18n"
+	"github.com/apache/incubator-openwhisk-cli/wski18n"
+	"github.com/apache/incubator-openwhisk-client-go/whisk"
 )
 
 // sdkCmd represents the sdk command
 var sdkCmd = &cobra.Command{
-    Use:   "sdk",
-    Short: wski18n.T("work with the sdk"),
+	Use:   "sdk",
+	Short: wski18n.T("work with the sdk"),
 }
 
 type sdkInfo struct {
-    UrlPath   string
-    FileName  string
-    isGzTar   bool
-    IsGzip    bool
-    IsZip     bool
-    IsTar     bool
-    Unpack    bool
-    UnpackDir string
+	UrlPath   string
+	FileName  string
+	isGzTar   bool
+	IsGzip    bool
+	IsZip     bool
+	IsTar     bool
+	Unpack    bool
+	UnpackDir string
 }
 
 var sdkMap map[string]*sdkInfo
+
 const SDK_DOCKER_COMPONENT_NAME string = "docker"
 const SDK_IOS_COMPONENT_NAME string = "ios"
 const BASH_AUTOCOMPLETE_FILENAME string = "wsk_cli_bash_completion.sh"
 
 var sdkInstallCmd = &cobra.Command{
-    Use:   "install COMPONENT",
-    Short: wski18n.T("install SDK artifacts"),
-    Long: wski18n.T("install SDK artifacts, where valid COMPONENT values are docker, ios, and bashauto"),
-    SilenceUsage:   true,
-    SilenceErrors:  true,
-    PreRunE: SetupClientConfig,
-    RunE: func(cmd *cobra.Command, args []string) error {
-        var err error
-        if len(args) != 1 {
-            whisk.Debug(whisk.DbgError, "Invalid number of arguments: %d\n", len(args))
-            errStr := wski18n.T("The SDK component argument is missing. One component (docker, ios, or bashauto) must be specified")
-            werr := whisk.MakeWskError(errors.New(errStr), whisk.EXIT_CODE_ERR_GENERAL, whisk.DISPLAY_MSG, whisk.DISPLAY_USAGE)
-            return werr
-        }
-        component := strings.ToLower(args[0])
-        switch component {
-        case "docker":
-            err = dockerInstall()
-        case "ios":
-            err = iOSInstall()
-        case "bashauto":
-            if Flags.sdk.stdout {
-                if err = WskCmd.GenBashCompletion(os.Stdout); err != nil {
-                    whisk.Debug(whisk.DbgError, "GenBashCompletion error: %s\n", err)
-                    errStr := wski18n.T("Unable to output bash command completion {{.err}}",
-                            map[string]interface{}{"err": err})
-                    werr := whisk.MakeWskError(errors.New(errStr), whisk.EXIT_CODE_ERR_GENERAL, whisk.DISPLAY_MSG, whisk.NO_DISPLAY_USAGE)
-                    return werr
-                }
-             } else {
-                    err = WskCmd.GenBashCompletionFile(BASH_AUTOCOMPLETE_FILENAME)
-                    if (err != nil) {
-                        whisk.Debug(whisk.DbgError, "GenBashCompletionFile('%s`) error: \n", BASH_AUTOCOMPLETE_FILENAME, err)
-                        errStr := wski18n.T("Unable to generate '{{.name}}': {{.err}}",
-                                map[string]interface{}{"name": BASH_AUTOCOMPLETE_FILENAME, "err": err})
-                        werr := whisk.MakeWskError(errors.New(errStr), whisk.EXIT_CODE_ERR_GENERAL, whisk.DISPLAY_MSG, whisk.NO_DISPLAY_USAGE)
-                        return werr
-                    }
-                    fmt.Printf(
-                        wski18n.T("bash_completion_msg",
-                    map[string]interface{}{"name": BASH_AUTOCOMPLETE_FILENAME}))
-             }
-        default:
-            whisk.Debug(whisk.DbgError, "Invalid component argument '%s'\n", component)
-            errStr := wski18n.T("The SDK component argument '{{.component}}' is invalid. Valid components are docker, ios and bashauto",
-                    map[string]interface{}{"component": component})
-            err = whisk.MakeWskError(errors.New(errStr), whisk.EXIT_CODE_ERR_GENERAL, whisk.DISPLAY_MSG, whisk.DISPLAY_USAGE)
-        }
+	Use:           "install COMPONENT",
+	Short:         wski18n.T("install SDK artifacts"),
+	Long:          wski18n.T("install SDK artifacts, where valid COMPONENT values are docker, ios, and bashauto"),
+	SilenceUsage:  true,
+	SilenceErrors: true,
+	PreRunE:       SetupClientConfig,
+	RunE: func(cmd *cobra.Command, args []string) error {
+		var err error
+		if len(args) != 1 {
+			whisk.Debug(whisk.DbgError, "Invalid number of arguments: %d\n", len(args))
+			errStr := wski18n.T("The SDK component argument is missing. One component (docker, ios, or bashauto) must be specified")
+			werr := whisk.MakeWskError(errors.New(errStr), whisk.EXIT_CODE_ERR_GENERAL, whisk.DISPLAY_MSG, whisk.DISPLAY_USAGE)
+			return werr
+		}
+		component := strings.ToLower(args[0])
+		switch component {
+		case "docker":
+			err = dockerInstall()
+		case "ios":
+			err = iOSInstall()
+		case "bashauto":
+			if Flags.sdk.stdout {
+				if err = WskCmd.GenBashCompletion(os.Stdout); err != nil {
+					whisk.Debug(whisk.DbgError, "GenBashCompletion error: %s\n", err)
+					errStr := wski18n.T("Unable to output bash command completion {{.err}}",
+						map[string]interface{}{"err": err})
+					werr := whisk.MakeWskError(errors.New(errStr), whisk.EXIT_CODE_ERR_GENERAL, whisk.DISPLAY_MSG, whisk.NO_DISPLAY_USAGE)
+					return werr
+				}
+			} else {
+				err = WskCmd.GenBashCompletionFile(BASH_AUTOCOMPLETE_FILENAME)
+				if err != nil {
+					whisk.Debug(whisk.DbgError, "GenBashCompletionFile('%s`) error: \n", BASH_AUTOCOMPLETE_FILENAME, err)
+					errStr := wski18n.T("Unable to generate '{{.name}}': {{.err}}",
+						map[string]interface{}{"name": BASH_AUTOCOMPLETE_FILENAME, "err": err})
+					werr := whisk.MakeWskError(errors.New(errStr), whisk.EXIT_CODE_ERR_GENERAL, whisk.DISPLAY_MSG, whisk.NO_DISPLAY_USAGE)
+					return werr
+				}
+				fmt.Printf(
+					wski18n.T("bash_completion_msg",
+						map[string]interface{}{"name": BASH_AUTOCOMPLETE_FILENAME}))
+			}
+		default:
+			whisk.Debug(whisk.DbgError, "Invalid component argument '%s'\n", component)
+			errStr := wski18n.T("The SDK component argument '{{.component}}' is invalid. Valid components are docker, ios and bashauto",
+				map[string]interface{}{"component": component})
+			err = whisk.MakeWskError(errors.New(errStr), whisk.EXIT_CODE_ERR_GENERAL, whisk.DISPLAY_MSG, whisk.DISPLAY_USAGE)
+		}
 
-        if err != nil {
-            return err
-        }
-        return nil
-    },
+		if err != nil {
+			return err
+		}
+		return nil
+	},
 }
 
 func dockerInstall() error {
-    var err error
+	var err error
 
-    targetFile := sdkMap[SDK_DOCKER_COMPONENT_NAME].FileName
-    if _, err = os.Stat(targetFile); err == nil {
-        whisk.Debug(whisk.DbgError, "os.Stat reports file '%s' exists\n", targetFile)
-        errStr := wski18n.T("The file '{{.name}}' already exists.  Delete it and retry.",
-            map[string]interface{}{"name": targetFile})
-        werr := whisk.MakeWskError(errors.New(errStr), whisk.EXIT_CODE_ERR_GENERAL, whisk.DISPLAY_MSG, whisk.NO_DISPLAY_USAGE)
-        return werr
-    }
+	targetFile := sdkMap[SDK_DOCKER_COMPONENT_NAME].FileName
+	if _, err = os.Stat(targetFile); err == nil {
+		whisk.Debug(whisk.DbgError, "os.Stat reports file '%s' exists\n", targetFile)
+		errStr := wski18n.T("The file '{{.name}}' already exists.  Delete it and retry.",
+			map[string]interface{}{"name": targetFile})
+		werr := whisk.MakeWskError(errors.New(errStr), whisk.EXIT_CODE_ERR_GENERAL, whisk.DISPLAY_MSG, whisk.NO_DISPLAY_USAGE)
+		return werr
+	}
 
-    if err = sdkInstall(SDK_DOCKER_COMPONENT_NAME); err != nil {
-        whisk.Debug(whisk.DbgError, "sdkInstall(%s) failed: %s\n", SDK_DOCKER_COMPONENT_NAME, err)
-        errStr := wski18n.T("The {{.component}} SDK installation failed: {{.err}}",
-                map[string]interface{}{"component": SDK_DOCKER_COMPONENT_NAME, "err": err})
-        werr := whisk.MakeWskErrorFromWskError(errors.New(errStr), err, whisk.EXIT_CODE_ERR_GENERAL, whisk.DISPLAY_MSG, whisk.NO_DISPLAY_USAGE)
-        return werr
-    }
+	if err = sdkInstall(SDK_DOCKER_COMPONENT_NAME); err != nil {
+		whisk.Debug(whisk.DbgError, "sdkInstall(%s) failed: %s\n", SDK_DOCKER_COMPONENT_NAME, err)
+		errStr := wski18n.T("The {{.component}} SDK installation failed: {{.err}}",
+			map[string]interface{}{"component": SDK_DOCKER_COMPONENT_NAME, "err": err})
+		werr := whisk.MakeWskErrorFromWskError(errors.New(errStr), err, whisk.EXIT_CODE_ERR_GENERAL, whisk.DISPLAY_MSG, whisk.NO_DISPLAY_USAGE)
+		return werr
+	}
 
-    fmt.Println(wski18n.T("The docker skeleton is now installed at the current directory."))
-    return nil
+	fmt.Println(wski18n.T("The docker skeleton is now installed at the current directory."))
+	return nil
 }
 
 func iOSInstall() error {
-    var err error
+	var err error
 
-    if err = sdkInstall(SDK_IOS_COMPONENT_NAME); err != nil {
-        whisk.Debug(whisk.DbgError, "sdkInstall(%s) failed: %s\n", SDK_IOS_COMPONENT_NAME, err)
-        errStr := wski18n.T("The {{.component}} SDK installation failed: {{.err}}",
-                map[string]interface{}{"component": SDK_IOS_COMPONENT_NAME, "err": err})
-        werr := whisk.MakeWskErrorFromWskError(errors.New(errStr), err, whisk.EXIT_CODE_ERR_GENERAL, whisk.DISPLAY_MSG, whisk.NO_DISPLAY_USAGE)
-        return werr
-    }
+	if err = sdkInstall(SDK_IOS_COMPONENT_NAME); err != nil {
+		whisk.Debug(whisk.DbgError, "sdkInstall(%s) failed: %s\n", SDK_IOS_COMPONENT_NAME, err)
+		errStr := wski18n.T("The {{.component}} SDK installation failed: {{.err}}",
+			map[string]interface{}{"component": SDK_IOS_COMPONENT_NAME, "err": err})
+		werr := whisk.MakeWskErrorFromWskError(errors.New(errStr), err, whisk.EXIT_CODE_ERR_GENERAL, whisk.DISPLAY_MSG, whisk.NO_DISPLAY_USAGE)
+		return werr
+	}
 
-    fmt.Printf(
-        wski18n.T("Downloaded OpenWhisk iOS starter app. Unzip '{{.name}}' and open the project in Xcode.\n",
-            map[string]interface{}{"name": sdkMap[SDK_IOS_COMPONENT_NAME].FileName}))
-    return nil
+	fmt.Printf(
+		wski18n.T("Downloaded OpenWhisk iOS starter app. Unzip '{{.name}}' and open the project in Xcode.\n",
+			map[string]interface{}{"name": sdkMap[SDK_IOS_COMPONENT_NAME].FileName}))
+	return nil
 }
 
 func sdkInstall(componentName string) error {
-    targetFile := sdkMap[componentName].FileName
-    if _, err := os.Stat(targetFile); err == nil {
-        whisk.Debug(whisk.DbgError, "os.Stat reports file '%s' exists\n", targetFile)
-        errStr := wski18n.T("The file '{{.name}}' already exists.  Delete it and retry.",
-                map[string]interface{}{"name": targetFile})
-        werr := whisk.MakeWskError(errors.New(errStr), whisk.EXIT_CODE_ERR_GENERAL, whisk.DISPLAY_MSG, whisk.NO_DISPLAY_USAGE)
-        return werr
-    }
+	targetFile := sdkMap[componentName].FileName
+	if _, err := os.Stat(targetFile); err == nil {
+		whisk.Debug(whisk.DbgError, "os.Stat reports file '%s' exists\n", targetFile)
+		errStr := wski18n.T("The file '{{.name}}' already exists.  Delete it and retry.",
+			map[string]interface{}{"name": targetFile})
+		werr := whisk.MakeWskError(errors.New(errStr), whisk.EXIT_CODE_ERR_GENERAL, whisk.DISPLAY_MSG, whisk.NO_DISPLAY_USAGE)
+		return werr
+	}
 
-    resp, err := Client.Sdks.Install(sdkMap[componentName].UrlPath)
-    if err != nil {
-        whisk.Debug(whisk.DbgError, "Client.Sdks.Install(%s) failed: %s\n", sdkMap[componentName].UrlPath, err)
-        errStr := wski18n.T("Unable to retrieve '{{.urlpath}}' SDK: {{.err}}",
-                map[string]interface{}{"urlpath": sdkMap[componentName].UrlPath, "err": err})
-        werr := whisk.MakeWskErrorFromWskError(errors.New(errStr), err, whisk.EXIT_CODE_ERR_GENERAL, whisk.DISPLAY_MSG, whisk.NO_DISPLAY_USAGE)
-        return werr
-    }
+	resp, err := Client.Sdks.Install(sdkMap[componentName].UrlPath)
+	if err != nil {
+		whisk.Debug(whisk.DbgError, "Client.Sdks.Install(%s) failed: %s\n", sdkMap[componentName].UrlPath, err)
+		errStr := wski18n.T("Unable to retrieve '{{.urlpath}}' SDK: {{.err}}",
+			map[string]interface{}{"urlpath": sdkMap[componentName].UrlPath, "err": err})
+		werr := whisk.MakeWskErrorFromWskError(errors.New(errStr), err, whisk.EXIT_CODE_ERR_GENERAL, whisk.DISPLAY_MSG, whisk.NO_DISPLAY_USAGE)
+		return werr
+	}
 
-    if resp.Body == nil {
-        whisk.Debug(whisk.DbgError, "SDK Install HTTP response has no body\n")
-        errStr := wski18n.T("Server failed to send the '{{.component}}' SDK: {{.err}}",
-                map[string]interface{}{"name": componentName, "err": err})
-        werr := whisk.MakeWskError(errors.New(errStr), whisk.EXIT_CODE_ERR_NETWORK, whisk.DISPLAY_MSG, whisk.NO_DISPLAY_USAGE)
-        return werr
-    }
+	if resp.Body == nil {
+		whisk.Debug(whisk.DbgError, "SDK Install HTTP response has no body\n")
+		errStr := wski18n.T("Server failed to send the '{{.component}}' SDK: {{.err}}",
+			map[string]interface{}{"name": componentName, "err": err})
+		werr := whisk.MakeWskError(errors.New(errStr), whisk.EXIT_CODE_ERR_NETWORK, whisk.DISPLAY_MSG, whisk.NO_DISPLAY_USAGE)
+		return werr
+	}
 
-    // Create the SDK file
-    sdkfile, err := os.Create(targetFile)
-    if err != nil {
-        whisk.Debug(whisk.DbgError, "os.Create(%s) failure: %s\n", targetFile, err)
-        errStr := wski18n.T("Error creating SDK file '{{.name}}': {{.err}}",
-                map[string]interface{}{"name": targetFile, "err": err})
-        werr := whisk.MakeWskErrorFromWskError(errors.New(errStr), err, whisk.EXIT_CODE_ERR_GENERAL, whisk.DISPLAY_MSG, whisk.NO_DISPLAY_USAGE)
-        return werr
-    }
+	// Create the SDK file
+	sdkfile, err := os.Create(targetFile)
+	if err != nil {
+		whisk.Debug(whisk.DbgError, "os.Create(%s) failure: %s\n", targetFile, err)
+		errStr := wski18n.T("Error creating SDK file '{{.name}}': {{.err}}",
+			map[string]interface{}{"name": targetFile, "err": err})
+		werr := whisk.MakeWskErrorFromWskError(errors.New(errStr), err, whisk.EXIT_CODE_ERR_GENERAL, whisk.DISPLAY_MSG, whisk.NO_DISPLAY_USAGE)
+		return werr
+	}
 
-    // Read the HTTP response body and write it to the SDK file
-    whisk.Debug(whisk.DbgInfo, "Reading SDK file from HTTP response body\n")
-    _, err = io.Copy(sdkfile, resp.Body)
-    if err != nil {
-        whisk.Debug(whisk.DbgError, "io.Copy() of resp.Body into sdkfile failure: %s\n", err)
-        errStr := wski18n.T("Error copying server response into file: {{.err}}",
-                map[string]interface{}{"err": err})
-        werr := whisk.MakeWskErrorFromWskError(errors.New(errStr), err, whisk.EXIT_CODE_ERR_GENERAL, whisk.DISPLAY_MSG, whisk.NO_DISPLAY_USAGE)
-        sdkfile.Close()
-        return werr
+	// Read the HTTP response body and write it to the SDK file
+	whisk.Debug(whisk.DbgInfo, "Reading SDK file from HTTP response body\n")
+	_, err = io.Copy(sdkfile, resp.Body)
+	if err != nil {
+		whisk.Debug(whisk.DbgError, "io.Copy() of resp.Body into sdkfile failure: %s\n", err)
+		errStr := wski18n.T("Error copying server response into file: {{.err}}",
+			map[string]interface{}{"err": err})
+		werr := whisk.MakeWskErrorFromWskError(errors.New(errStr), err, whisk.EXIT_CODE_ERR_GENERAL, whisk.DISPLAY_MSG, whisk.NO_DISPLAY_USAGE)
+		sdkfile.Close()
+		return werr
 
-    }
-    sdkfile.Close()     // Don't use 'defer' since this file might need to be deleted after unpack
+	}
+	sdkfile.Close() // Don't use 'defer' since this file might need to be deleted after unpack
 
-    // At this point, the entire file is downloaded from the server
-    // Check if there is any special post-download processing (i.e. unpack)
-    if sdkMap[componentName].Unpack {
-        // Make sure the target directory does not already exist
-        defer os.Remove(targetFile)
-        targetdir := sdkMap[componentName].UnpackDir
-        if _, err = os.Stat(targetdir); err == nil {
-            whisk.Debug(whisk.DbgError, "os.Stat reports that directory '%s' exists\n", targetdir)
-            errStr := wski18n.T("The directory '{{.name}}' already exists.  Delete it and retry.",
-                    map[string]interface{}{"name": targetdir})
-            werr := whisk.MakeWskError(errors.New(errStr), whisk.EXIT_CODE_ERR_GENERAL, whisk.DISPLAY_MSG, whisk.NO_DISPLAY_USAGE)
-            return werr
-        }
+	// At this point, the entire file is downloaded from the server
+	// Check if there is any special post-download processing (i.e. unpack)
+	if sdkMap[componentName].Unpack {
+		// Make sure the target directory does not already exist
+		defer os.Remove(targetFile)
+		targetdir := sdkMap[componentName].UnpackDir
+		if _, err = os.Stat(targetdir); err == nil {
+			whisk.Debug(whisk.DbgError, "os.Stat reports that directory '%s' exists\n", targetdir)
+			errStr := wski18n.T("The directory '{{.name}}' already exists.  Delete it and retry.",
+				map[string]interface{}{"name": targetdir})
+			werr := whisk.MakeWskError(errors.New(errStr), whisk.EXIT_CODE_ERR_GENERAL, whisk.DISPLAY_MSG, whisk.NO_DISPLAY_USAGE)
+			return werr
+		}
 
-        // If the packed SDK is a .tgz file, unpack it in two steps
-        // 1. UnGzip into temp .tar file
-        // 2. Untar the contents into the current folder
-        if sdkMap[componentName].isGzTar {
-            whisk.Debug(whisk.DbgInfo, "unGzipping downloaded file\n")
-            err := unpackGzip(targetFile, "temp.tar")
-            if err != nil {
-                whisk.Debug(whisk.DbgError, "unpackGzip(%s,temp.tar) failure: %s\n", targetFile, err)
-                errStr := wski18n.T("Error unGzipping file '{{.name}}': {{.err}}",
-                    map[string]interface{}{"name": targetFile, "err": err})
-                werr := whisk.MakeWskError(errors.New(errStr), whisk.EXIT_CODE_ERR_GENERAL, whisk.DISPLAY_MSG, whisk.NO_DISPLAY_USAGE)
-                return werr
-            }
-            defer os.Remove("temp.tar")
+		// If the packed SDK is a .tgz file, unpack it in two steps
+		// 1. UnGzip into temp .tar file
+		// 2. Untar the contents into the current folder
+		if sdkMap[componentName].isGzTar {
+			whisk.Debug(whisk.DbgInfo, "unGzipping downloaded file\n")
+			err := unpackGzip(targetFile, "temp.tar")
+			if err != nil {
+				whisk.Debug(whisk.DbgError, "unpackGzip(%s,temp.tar) failure: %s\n", targetFile, err)
+				errStr := wski18n.T("Error unGzipping file '{{.name}}': {{.err}}",
+					map[string]interface{}{"name": targetFile, "err": err})
+				werr := whisk.MakeWskError(errors.New(errStr), whisk.EXIT_CODE_ERR_GENERAL, whisk.DISPLAY_MSG, whisk.NO_DISPLAY_USAGE)
+				return werr
+			}
+			defer os.Remove("temp.tar")
 
-            whisk.Debug(whisk.DbgInfo, "unTarring unGzipped file\n")
-            err = unpackTar("temp.tar")
-            if err != nil {
-                whisk.Debug(whisk.DbgError, "unpackTar(temp.tar) failure: %s\n", err)
-                errStr := wski18n.T("Error untarring file '{{.name}}': {{.err}}",
-                        map[string]interface{}{"name": "temp.tar", "err": err})
-                werr := whisk.MakeWskError(errors.New(errStr), whisk.EXIT_CODE_ERR_GENERAL, whisk.DISPLAY_MSG, whisk.NO_DISPLAY_USAGE)
-                return werr
-            }
-        }
+			whisk.Debug(whisk.DbgInfo, "unTarring unGzipped file\n")
+			err = unpackTar("temp.tar")
+			if err != nil {
+				whisk.Debug(whisk.DbgError, "unpackTar(temp.tar) failure: %s\n", err)
+				errStr := wski18n.T("Error untarring file '{{.name}}': {{.err}}",
+					map[string]interface{}{"name": "temp.tar", "err": err})
+				werr := whisk.MakeWskError(errors.New(errStr), whisk.EXIT_CODE_ERR_GENERAL, whisk.DISPLAY_MSG, whisk.NO_DISPLAY_USAGE)
+				return werr
+			}
+		}
 
-        // Future SDKs may require other unpacking procedures not yet covered here....
-    }
+		// Future SDKs may require other unpacking procedures not yet covered here....
+	}
 
-    return nil
+	return nil
 }
 
 func init() {
-    sdkInstallCmd.Flags().BoolVarP(&Flags.sdk.stdout, "stdout", "s", false, wski18n.T("prints bash command completion script to stdout"))
+	sdkInstallCmd.Flags().BoolVarP(&Flags.sdk.stdout, "stdout", "s", false, wski18n.T("prints bash command completion script to stdout"))
 
-    sdkCmd.AddCommand(sdkInstallCmd)
+	sdkCmd.AddCommand(sdkInstallCmd)
 
-    sdkMap = make(map[string]*sdkInfo)
-    sdkMap["docker"] = &sdkInfo{ UrlPath: "blackbox.tar.gz", FileName: "blackbox.tar.gz", isGzTar: true, Unpack: true, UnpackDir: "dockerSkeleton"}
-    sdkMap["ios"] = &sdkInfo{ UrlPath: "OpenWhiskIOSStarterApp.zip", FileName: "OpenWhiskIOSStarterApp.zip", IsZip: true, Unpack: false}
+	sdkMap = make(map[string]*sdkInfo)
+	sdkMap["docker"] = &sdkInfo{UrlPath: "blackbox.tar.gz", FileName: "blackbox.tar.gz", isGzTar: true, Unpack: true, UnpackDir: "dockerSkeleton"}
+	sdkMap["ios"] = &sdkInfo{UrlPath: "OpenWhiskIOSStarterApp.zip", FileName: "OpenWhiskIOSStarterApp.zip", IsZip: true, Unpack: false}
 }
diff --git a/commands/shared.go b/commands/shared.go
index 5082e05..9295d2b 100644
--- a/commands/shared.go
+++ b/commands/shared.go
@@ -18,27 +18,26 @@
 package commands
 
 import (
-    "errors"
+	"errors"
 
-    "github.com/apache/incubator-openwhisk-cli/wski18n"
-    "github.com/apache/incubator-openwhisk-client-go/whisk"
+	"github.com/apache/incubator-openwhisk-cli/wski18n"
+	"github.com/apache/incubator-openwhisk-client-go/whisk"
 )
 
-func entityNameError(entityName string) (error) {
-    errMsg := wski18n.T(
-        "An entity name, '{{.name}}', was provided instead of a namespace. Valid namespaces are of the following format: /NAMESPACE.",
-        map[string]interface{}{
-            "name": entityName,
-        })
+func entityNameError(entityName string) error {
+	errMsg := wski18n.T(
+		"An entity name, '{{.name}}', was provided instead of a namespace. Valid namespaces are of the following format: /NAMESPACE.",
+		map[string]interface{}{
+			"name": entityName,
+		})
 
-    return whisk.MakeWskError(errors.New(errMsg), whisk.EXIT_CODE_ERR_GENERAL, whisk.DISPLAY_MSG, whisk.DISPLAY_USAGE)
+	return whisk.MakeWskError(errors.New(errMsg), whisk.EXIT_CODE_ERR_GENERAL, whisk.DISPLAY_MSG, whisk.DISPLAY_USAGE)
 }
 
 func entityListError(err error, namespace string, kind string) error {
-    whisk.Debug(whisk.DbgError, "Client.%s.List(%s) error: %s\n", kind, namespace, err)
-    errStr := wski18n.T("Unable to obtain the list of entities for namespace '{{.namespace}}': {{.err}}",
-        map[string]interface{}{"namespace": namespace, "err": err})
-    return whisk.MakeWskErrorFromWskError(errors.New(errStr), err,
-        whisk.EXIT_CODE_ERR_NETWORK, whisk.DISPLAY_MSG, whisk.NO_DISPLAY_USAGE)
+	whisk.Debug(whisk.DbgError, "Client.%s.List(%s) error: %s\n", kind, namespace, err)
+	errStr := wski18n.T("Unable to obtain the list of entities for namespace '{{.namespace}}': {{.err}}",
+		map[string]interface{}{"namespace": namespace, "err": err})
+	return whisk.MakeWskErrorFromWskError(errors.New(errStr), err,
+		whisk.EXIT_CODE_ERR_NETWORK, whisk.DISPLAY_MSG, whisk.NO_DISPLAY_USAGE)
 }
-
diff --git a/commands/trigger.go b/commands/trigger.go
index 9f1889c..fb50161 100644
--- a/commands/trigger.go
+++ b/commands/trigger.go
@@ -18,561 +18,560 @@
 package commands
 
 import (
-    "errors"
-    "fmt"
+	"errors"
+	"fmt"
 
-    "github.com/apache/incubator-openwhisk-client-go/whisk"
-    "github.com/apache/incubator-openwhisk-cli/wski18n"
+	"github.com/apache/incubator-openwhisk-cli/wski18n"
+	"github.com/apache/incubator-openwhisk-client-go/whisk"
 
-    "github.com/spf13/cobra"
-    "github.com/fatih/color"
+	"github.com/fatih/color"
+	"github.com/spf13/cobra"
 )
 
-const FEED_LIFECYCLE_EVENT  = "lifecycleEvent"
-const FEED_TRIGGER_NAME     = "triggerName"
-const FEED_AUTH_KEY         = "authKey"
-const FEED_CREATE           = "CREATE"
-const FEED_READ             = "READ"
-const FEED_UPDATE           = "UPDATE"
-const FEED_DELETE           = "DELETE"
+const FEED_LIFECYCLE_EVENT = "lifecycleEvent"
+const FEED_TRIGGER_NAME = "triggerName"
+const FEED_AUTH_KEY = "authKey"
+const FEED_CREATE = "CREATE"
+const FEED_READ = "READ"
+const FEED_UPDATE = "UPDATE"
+const FEED_DELETE = "DELETE"
 
 // triggerCmd represents the trigger command
 var triggerCmd = &cobra.Command{
-    Use:   "trigger",
-    Short: wski18n.T("work with triggers"),
+	Use:   "trigger",
+	Short: wski18n.T("work with triggers"),
 }
 
 var triggerFireCmd = &cobra.Command{
-    Use:   "fire TRIGGER_NAME [PAYLOAD]",
-    Short: wski18n.T("fire trigger event"),
-    SilenceUsage:   true,
-    SilenceErrors:  true,
-    PreRunE: SetupClientConfig,
-    RunE: func(cmd *cobra.Command, args []string) error {
-        var err error
-        var parameters interface{}
-        var qualifiedName = new(QualifiedName)
-
-        if whiskErr := CheckArgs(args, 1, 2, "Trigger fire",
-                wski18n.T("A trigger name is required. A payload is optional.")); whiskErr != nil {
-            return whiskErr
-        }
-
-        if qualifiedName, err = NewQualifiedName(args[0]); err != nil {
-            return NewQualifiedNameError(args[0], err)
-        }
-
-        Client.Namespace = qualifiedName.GetNamespace()
-
-        // Add payload to parameters
-        if len(args) == 2 {
-            Flags.common.param = append(Flags.common.param, getFormattedJSON("payload", args[1]))
-            Flags.common.param = append(Flags.common.param, Flags.common.param...)
-        }
-
-        if len(Flags.common.param) > 0 {
-            parameters, err = getJSONFromStrings(Flags.common.param, false)
-            if err != nil {
-                whisk.Debug(whisk.DbgError, "getJSONFromStrings(%#v, false) failed: %s\n", Flags.common.param, err)
-                errStr := wski18n.T("Invalid parameter argument '{{.param}}': {{.err}}",
-                        map[string]interface{}{"param": fmt.Sprintf("%#v",Flags.common.param), "err": err})
-                werr := whisk.MakeWskErrorFromWskError(errors.New(errStr), err, whisk.EXIT_CODE_ERR_GENERAL,
-                    whisk.DISPLAY_MSG, whisk.DISPLAY_USAGE)
-                return werr
-            }
-        }
-
-        trigResp, _, err := Client.Triggers.Fire(qualifiedName.GetEntityName(), parameters)
-        if err != nil {
-            whisk.Debug(whisk.DbgError, "Client.Triggers.Fire(%s, %#v) failed: %s\n", qualifiedName.GetEntityName(), parameters, err)
-            errStr := wski18n.T("Unable to fire trigger '{{.name}}': {{.err}}",
-                    map[string]interface{}{"name": qualifiedName.GetEntityName(), "err": err})
-            werr := whisk.MakeWskErrorFromWskError(errors.New(errStr), err, whisk.EXIT_CODE_ERR_GENERAL,
-                whisk.DISPLAY_MSG, whisk.NO_DISPLAY_USAGE)
-            return werr
-        }
-
-        fmt.Fprintf(color.Output,
-            wski18n.T("{{.ok}} triggered /{{.namespace}}/{{.name}} with id {{.id}}\n",
-                map[string]interface{}{
-                    "ok": color.GreenString("ok:"),
-                    "namespace": boldString(qualifiedName.GetNamespace()),
-                    "name": boldString(qualifiedName.GetEntityName()),
-                    "id": boldString(trigResp.ActivationId)}))
-        return nil
-    },
+	Use:           "fire TRIGGER_NAME [PAYLOAD]",
+	Short:         wski18n.T("fire trigger event"),
+	SilenceUsage:  true,
+	SilenceErrors: true,
+	PreRunE:       SetupClientConfig,
+	RunE: func(cmd *cobra.Command, args []string) error {
+		var err error
+		var parameters interface{}
+		var qualifiedName = new(QualifiedName)
+
+		if whiskErr := CheckArgs(args, 1, 2, "Trigger fire",
+			wski18n.T("A trigger name is required. A payload is optional.")); whiskErr != nil {
+			return whiskErr
+		}
+
+		if qualifiedName, err = NewQualifiedName(args[0]); err != nil {
+			return NewQualifiedNameError(args[0], err)
+		}
+
+		Client.Namespace = qualifiedName.GetNamespace()
+
+		// Add payload to parameters
+		if len(args) == 2 {
+			Flags.common.param = append(Flags.common.param, getFormattedJSON("payload", args[1]))
+			Flags.common.param = append(Flags.common.param, Flags.common.param...)
+		}
+
+		if len(Flags.common.param) > 0 {
+			parameters, err = getJSONFromStrings(Flags.common.param, false)
+			if err != nil {
+				whisk.Debug(whisk.DbgError, "getJSONFromStrings(%#v, false) failed: %s\n", Flags.common.param, err)
+				errStr := wski18n.T("Invalid parameter argument '{{.param}}': {{.err}}",
+					map[string]interface{}{"param": fmt.Sprintf("%#v", Flags.common.param), "err": err})
+				werr := whisk.MakeWskErrorFromWskError(errors.New(errStr), err, whisk.EXIT_CODE_ERR_GENERAL,
+					whisk.DISPLAY_MSG, whisk.DISPLAY_USAGE)
+				return werr
+			}
+		}
+
+		trigResp, _, err := Client.Triggers.Fire(qualifiedName.GetEntityName(), parameters)
+		if err != nil {
+			whisk.Debug(whisk.DbgError, "Client.Triggers.Fire(%s, %#v) failed: %s\n", qualifiedName.GetEntityName(), parameters, err)
+			errStr := wski18n.T("Unable to fire trigger '{{.name}}': {{.err}}",
+				map[string]interface{}{"name": qualifiedName.GetEntityName(), "err": err})
+			werr := whisk.MakeWskErrorFromWskError(errors.New(errStr), err, whisk.EXIT_CODE_ERR_GENERAL,
+				whisk.DISPLAY_MSG, whisk.NO_DISPLAY_USAGE)
+			return werr
+		}
+
+		fmt.Fprintf(color.Output,
+			wski18n.T("{{.ok}} triggered /{{.namespace}}/{{.name}} with id {{.id}}\n",
+				map[string]interface{}{
+					"ok":        color.GreenString("ok:"),
+					"namespace": boldString(qualifiedName.GetNamespace()),
+					"name":      boldString(qualifiedName.GetEntityName()),
+					"id":        boldString(trigResp.ActivationId)}))
+		return nil
+	},
 }
 
 var triggerCreateCmd = &cobra.Command{
-    Use:   "create TRIGGER_NAME",
-    Short: wski18n.T("create new trigger"),
-    SilenceUsage:   true,
-    SilenceErrors:  true,
-    PreRunE: SetupClientConfig,
-    RunE: func(cmd *cobra.Command, args []string) error {
-        var err error
-        var annotations interface{}
-        var feedArgPassed bool = (Flags.common.feed != "")
-        var qualifiedName = new(QualifiedName)
-
-        if whiskErr := CheckArgs(args, 1, 1, "Trigger create",
-                wski18n.T("A trigger name is required.")); whiskErr != nil {
-            return whiskErr
-        }
-
-        if qualifiedName, err = NewQualifiedName(args[0]); err != nil {
-            return NewQualifiedNameError(args[0], err)
-        }
-
-        Client.Namespace = qualifiedName.GetNamespace()
-
-        var fullTriggerName string
-        var fullFeedName string
-        var feedQualifiedName = new(QualifiedName)
-        if feedArgPassed {
-            whisk.Debug(whisk.DbgInfo, "Trigger has a feed\n")
-
-            if feedQualifiedName, err = NewQualifiedName(Flags.common.feed); err != nil {
-                return NewQualifiedNameError(Flags.common.feed, err)
-            }
-
-            fullFeedName = fmt.Sprintf("/%s/%s", feedQualifiedName.GetNamespace(), feedQualifiedName.GetEntityName())
-            fullTriggerName = fmt.Sprintf("/%s/%s", qualifiedName.GetNamespace(), qualifiedName.GetEntityName())
-            Flags.common.param = append(Flags.common.param, getFormattedJSON(FEED_LIFECYCLE_EVENT, FEED_CREATE))
-            Flags.common.param = append(Flags.common.param, getFormattedJSON(FEED_TRIGGER_NAME, fullTriggerName))
-            Flags.common.param = append(Flags.common.param, getFormattedJSON(FEED_AUTH_KEY, Client.Config.AuthToken))
-        }
-
-
-        // Convert the trigger's list of default parameters from a string into []KeyValue
-        // The 1 or more --param arguments have all been combined into a single []string
-        // e.g.   --p arg1,arg2 --p arg3,arg4   ->  [arg1, arg2, arg3, arg4]
-        whisk.Debug(whisk.DbgInfo, "Parsing parameters: %#v\n", Flags.common.param)
-        parameters, err := getJSONFromStrings(Flags.common.param, !feedArgPassed)
-
-        if err != nil {
-            whisk.Debug(whisk.DbgError, "getJSONFromStrings(%#v, true) failed: %s\n", Flags.common.param, err)
-            errStr := wski18n.T("Invalid parameter argument '{{.param}}': {{.err}}",
-                    map[string]interface{}{"param": fmt.Sprintf("%#v",Flags.common.param), "err": err})
-            werr := whisk.MakeWskErrorFromWskError(errors.New(errStr), err, whisk.EXIT_CODE_ERR_GENERAL, whisk.DISPLAY_MSG, whisk.DISPLAY_USAGE)
-            return werr
-        }
-
-        // Add feed to annotations
-        if feedArgPassed {
-            Flags.common.annotation = append(Flags.common.annotation, getFormattedJSON("feed", Flags.common.feed))
-        }
-
-        whisk.Debug(whisk.DbgInfo, "Parsing annotations: %#v\n", Flags.common.annotation)
-        annotations, err = getJSONFromStrings(Flags.common.annotation, true)
-
-        if err != nil {
-            whisk.Debug(whisk.DbgError, "getJSONFromStrings(%#v, true) failed: %s\n", Flags.common.annotation, err)
-            errStr := wski18n.T("Invalid annotation argument '{{.annotation}}': {{.err}}",
-                    map[string]interface{}{"annotation": fmt.Sprintf("%#v",Flags.common.annotation), "err": err})
-            werr := whisk.MakeWskErrorFromWskError(errors.New(errStr), err, whisk.EXIT_CODE_ERR_GENERAL, whisk.DISPLAY_MSG, whisk.DISPLAY_USAGE)
-            return werr
-        }
-
-        trigger := &whisk.Trigger{
-            Name:        qualifiedName.GetEntityName(),
-            Annotations: annotations.(whisk.KeyValueArr),
-        }
-
-        if !feedArgPassed {
-            trigger.Parameters = parameters.(whisk.KeyValueArr)
-        }
-
-        _, _, err = Client.Triggers.Insert(trigger, false)
-        if err != nil {
-            whisk.Debug(whisk.DbgError, "Client.Triggers.Insert(%+v,false) failed: %s\n", trigger, err)
-            errStr := wski18n.T("Unable to create trigger '{{.name}}': {{.err}}",
-                    map[string]interface{}{"name": trigger.Name, "err": err})
-            werr := whisk.MakeWskErrorFromWskError(errors.New(errStr), err, whisk.EXIT_CODE_ERR_GENERAL, whisk.DISPLAY_MSG, whisk.NO_DISPLAY_USAGE)
-            return werr
-        }
-
-        // Invoke the specified feed action to configure the trigger feed
-        if feedArgPassed {
-            err := configureFeed(trigger.Name, fullFeedName)
-            if err != nil {
-                whisk.Debug(whisk.DbgError, "configureFeed(%s, %s) failed: %s\n", trigger.Name, Flags.common.feed,
-                    err)
-                errStr := wski18n.T("Unable to create trigger '{{.name}}': {{.err}}",
-                        map[string]interface{}{"name": trigger.Name, "err": err})
-                werr := whisk.MakeWskErrorFromWskError(errors.New(errStr), err, whisk.EXIT_CODE_ERR_GENERAL, whisk.DISPLAY_MSG, whisk.NO_DISPLAY_USAGE)
-
-                // Delete trigger that was created for this feed
-                delerr := deleteTrigger(args[0])
-                if delerr != nil {
-                    whisk.Debug(whisk.DbgWarn, "Ignoring deleteTrigger(%s) failure: %s\n", args[0], delerr)
-                }
-                return werr
-            }
-        }
-
-        fmt.Fprintf(color.Output,
-            wski18n.T("{{.ok}} created trigger {{.name}}\n",
-                map[string]interface{}{"ok": color.GreenString("ok:"), "name": boldString(trigger.Name)}))
-        return nil
-    },
+	Use:           "create TRIGGER_NAME",
+	Short:         wski18n.T("create new trigger"),
+	SilenceUsage:  true,
+	SilenceErrors: true,
+	PreRunE:       SetupClientConfig,
+	RunE: func(cmd *cobra.Command, args []string) error {
+		var err error
+		var annotations interface{}
+		var feedArgPassed bool = (Flags.common.feed != "")
+		var qualifiedName = new(QualifiedName)
+
+		if whiskErr := CheckArgs(args, 1, 1, "Trigger create",
+			wski18n.T("A trigger name is required.")); whiskErr != nil {
+			return whiskErr
+		}
+
+		if qualifiedName, err = NewQualifiedName(args[0]); err != nil {
+			return NewQualifiedNameError(args[0], err)
+		}
+
+		Client.Namespace = qualifiedName.GetNamespace()
+
+		var fullTriggerName string
+		var fullFeedName string
+		var feedQualifiedName = new(QualifiedName)
+		if feedArgPassed {
+			whisk.Debug(whisk.DbgInfo, "Trigger has a feed\n")
+
+			if feedQualifiedName, err = NewQualifiedName(Flags.common.feed); err != nil {
+				return NewQualifiedNameError(Flags.common.feed, err)
+			}
+
+			fullFeedName = fmt.Sprintf("/%s/%s", feedQualifiedName.GetNamespace(), feedQualifiedName.GetEntityName())
+			fullTriggerName = fmt.Sprintf("/%s/%s", qualifiedName.GetNamespace(), qualifiedName.GetEntityName())
+			Flags.common.param = append(Flags.common.param, getFormattedJSON(FEED_LIFECYCLE_EVENT, FEED_CREATE))
+			Flags.common.param = append(Flags.common.param, getFormattedJSON(FEED_TRIGGER_NAME, fullTriggerName))
+			Flags.common.param = append(Flags.common.param, getFormattedJSON(FEED_AUTH_KEY, Client.Config.AuthToken))
+		}
+
+		// Convert the trigger's list of default parameters from a string into []KeyValue
+		// The 1 or more --param arguments have all been combined into a single []string
+		// e.g.   --p arg1,arg2 --p arg3,arg4   ->  [arg1, arg2, arg3, arg4]
+		whisk.Debug(whisk.DbgInfo, "Parsing parameters: %#v\n", Flags.common.param)
+		parameters, err := getJSONFromStrings(Flags.common.param, !feedArgPassed)
+
+		if err != nil {
+			whisk.Debug(whisk.DbgError, "getJSONFromStrings(%#v, true) failed: %s\n", Flags.common.param, err)
+			errStr := wski18n.T("Invalid parameter argument '{{.param}}': {{.err}}",
+				map[string]interface{}{"param": fmt.Sprintf("%#v", Flags.common.param), "err": err})
+			werr := whisk.MakeWskErrorFromWskError(errors.New(errStr), err, whisk.EXIT_CODE_ERR_GENERAL, whisk.DISPLAY_MSG, whisk.DISPLAY_USAGE)
+			return werr
+		}
+
+		// Add feed to annotations
+		if feedArgPassed {
+			Flags.common.annotation = append(Flags.common.annotation, getFormattedJSON("feed", Flags.common.feed))
+		}
+
+		whisk.Debug(whisk.DbgInfo, "Parsing annotations: %#v\n", Flags.common.annotation)
+		annotations, err = getJSONFromStrings(Flags.common.annotation, true)
+
+		if err != nil {
+			whisk.Debug(whisk.DbgError, "getJSONFromStrings(%#v, true) failed: %s\n", Flags.common.annotation, err)
+			errStr := wski18n.T("Invalid annotation argument '{{.annotation}}': {{.err}}",
+				map[string]interface{}{"annotation": fmt.Sprintf("%#v", Flags.common.annotation), "err": err})
+			werr := whisk.MakeWskErrorFromWskError(errors.New(errStr), err, whisk.EXIT_CODE_ERR_GENERAL, whisk.DISPLAY_MSG, whisk.DISPLAY_USAGE)
+			return werr
+		}
+
+		trigger := &whisk.Trigger{
+			Name:        qualifiedName.GetEntityName(),
+			Annotations: annotations.(whisk.KeyValueArr),
+		}
+
+		if !feedArgPassed {
+			trigger.Parameters = parameters.(whisk.KeyValueArr)
+		}
+
+		_, _, err = Client.Triggers.Insert(trigger, false)
+		if err != nil {
+			whisk.Debug(whisk.DbgError, "Client.Triggers.Insert(%+v,false) failed: %s\n", trigger, err)
+			errStr := wski18n.T("Unable to create trigger '{{.name}}': {{.err}}",
+				map[string]interface{}{"name": trigger.Name, "err": err})
+			werr := whisk.MakeWskErrorFromWskError(errors.New(errStr), err, whisk.EXIT_CODE_ERR_GENERAL, whisk.DISPLAY_MSG, whisk.NO_DISPLAY_USAGE)
+			return werr
+		}
+
+		// Invoke the specified feed action to configure the trigger feed
+		if feedArgPassed {
+			err := configureFeed(trigger.Name, fullFeedName)
+			if err != nil {
+				whisk.Debug(whisk.DbgError, "configureFeed(%s, %s) failed: %s\n", trigger.Name, Flags.common.feed,
+					err)
+				errStr := wski18n.T("Unable to create trigger '{{.name}}': {{.err}}",
+					map[string]interface{}{"name": trigger.Name, "err": err})
+				werr := whisk.MakeWskErrorFromWskError(errors.New(errStr), err, whisk.EXIT_CODE_ERR_GENERAL, whisk.DISPLAY_MSG, whisk.NO_DISPLAY_USAGE)
+
+				// Delete trigger that was created for this feed
+				delerr := deleteTrigger(args[0])
+				if delerr != nil {
+					whisk.Debug(whisk.DbgWarn, "Ignoring deleteTrigger(%s) failure: %s\n", args[0], delerr)
+				}
+				return werr
+			}
+		}
+
+		fmt.Fprintf(color.Output,
+			wski18n.T("{{.ok}} created trigger {{.name}}\n",
+				map[string]interface{}{"ok": color.GreenString("ok:"), "name": boldString(trigger.Name)}))
+		return nil
+	},
 }
 
 var triggerUpdateCmd = &cobra.Command{
-    Use:   "update TRIGGER_NAME",
-    Short: wski18n.T("update an existing trigger, or create a trigger if it does not exist"),
-    SilenceUsage:   true,
-    SilenceErrors:  true,
-    PreRunE: SetupClientConfig,
-    RunE: func(cmd *cobra.Command, args []string) error {
-        var err error
-        var fullFeedName string
-        var qualifiedName = new(QualifiedName)
-
-        if whiskErr := CheckArgs(args, 1, 1, "Trigger update",
-                wski18n.T("A trigger name is required.")); whiskErr != nil {
-            return whiskErr
-        }
-
-        if qualifiedName, err = NewQualifiedName(args[0]); err != nil {
-            return NewQualifiedNameError(args[0], err)
-        }
-
-        Client.Namespace = qualifiedName.GetNamespace()
-
-        // Convert the trigger's list of default parameters from a string into []KeyValue
-        // The 1 or more --param arguments have all been combined into a single []string
-        // e.g.   --p arg1,arg2 --p arg3,arg4   ->  [arg1, arg2, arg3, arg4]
-
-        whisk.Debug(whisk.DbgInfo, "Parsing parameters: %#v\n", Flags.common.param)
-        parameters, err := getJSONFromStrings(Flags.common.param, true)
-
-        if err != nil {
-            whisk.Debug(whisk.DbgError, "getJSONFromStrings(%#v, true) failed: %s\n", Flags.common.param, err)
-            errStr := wski18n.T("Invalid parameter argument '{{.param}}': {{.err}}",
-                    map[string]interface{}{"param": fmt.Sprintf("%#v",Flags.common.param), "err": err})
-            werr := whisk.MakeWskErrorFromWskError(errors.New(errStr), err, whisk.EXIT_CODE_ERR_GENERAL, whisk.DISPLAY_MSG, whisk.DISPLAY_USAGE)
-            return werr
-        }
-
-        whisk.Debug(whisk.DbgInfo, "Parsing annotations: %#v\n", Flags.common.annotation)
-        annotations, err := getJSONFromStrings(Flags.common.annotation, true)
-
-        if err != nil {
-            whisk.Debug(whisk.DbgError, "getJSONFromStrings(%#v, true) failed: %s\n", Flags.common.annotation, err)
-            errStr := wski18n.T("Invalid annotation argument '{{.annotation}}': {{.err}}",
-                    map[string]interface{}{"annotation": fmt.Sprintf("%#v",Flags.common.annotation), "err": err})
-            werr := whisk.MakeWskErrorFromWskError(errors.New(errStr), err, whisk.EXIT_CODE_ERR_GENERAL, whisk.DISPLAY_MSG, whisk.DISPLAY_USAGE)
-            return werr
-        }
-
-        retTrigger, _, err := Client.Triggers.Get(qualifiedName.GetEntityName())
-        if err != nil {
-            whisk.Debug(whisk.DbgError, "Client.Triggers.Get(%s) failed: %s\n", qualifiedName.GetEntityName(), err)
-            errStr := wski18n.T("Unable to get trigger '{{.name}}': {{.err}}",
-                    map[string]interface{}{"name": qualifiedName.GetEntityName(), "err": err})
-            werr := whisk.MakeWskErrorFromWskError(errors.New(errStr), err, whisk.EXIT_CODE_ERR_GENERAL, whisk.DISPLAY_MSG, whisk.NO_DISPLAY_USAGE)
-            return werr
-        }
-
-        // Get full feed name from trigger get request as it is needed to get the feed
-        if retTrigger != nil && retTrigger.Annotations != nil {
-            fullFeedName = getValueString(retTrigger.Annotations, "feed")
-        }
-
-        if len(fullFeedName) > 0 {
-            fullTriggerName := fmt.Sprintf("/%s/%s", qualifiedName.GetNamespace(), qualifiedName.GetEntityName())
-            Flags.common.param = append(Flags.common.param, getFormattedJSON(FEED_LIFECYCLE_EVENT, FEED_UPDATE))
-            Flags.common.param = append(Flags.common.param, getFormattedJSON(FEED_TRIGGER_NAME, fullTriggerName))
-            Flags.common.param = append(Flags.common.param, getFormattedJSON(FEED_AUTH_KEY, Client.Config.AuthToken))
-
-            // Invoke the specified feed action to configure the trigger feed
-            err = configureFeed(qualifiedName.GetEntityName(), fullFeedName)
-            if err != nil {
-                whisk.Debug(whisk.DbgError, "configureFeed(%s, %s) failed: %s\n", qualifiedName.GetEntityName(), Flags.common.feed,
-                    err)
-                errStr := wski18n.T("Unable to create trigger '{{.name}}': {{.err}}",
-                        map[string]interface{}{"name": qualifiedName.GetEntityName(), "err": err})
-                werr := whisk.MakeWskErrorFromWskError(errors.New(errStr), err, whisk.EXIT_CODE_ERR_GENERAL, whisk.DISPLAY_MSG, whisk.NO_DISPLAY_USAGE)
-                return werr
-            }
-        } else {
-            trigger := &whisk.Trigger{
-                Name:        qualifiedName.GetEntityName(),
-                Parameters:  parameters.(whisk.KeyValueArr),
-                Annotations: annotations.(whisk.KeyValueArr),
-            }
-
-            _, _, err = Client.Triggers.Insert(trigger, true)
-            if err != nil {
-                whisk.Debug(whisk.DbgError, "Client.Triggers.Insert(%+v,true) failed: %s\n", trigger, err)
-                errStr := wski18n.T("Unable to update trigger '{{.name}}': {{.err}}",
-                        map[string]interface{}{"name": trigger.Name, "err": err})
-                werr := whisk.MakeWskErrorFromWskError(errors.New(errStr), err, whisk.EXIT_CODE_ERR_GENERAL, whisk.DISPLAY_MSG, whisk.NO_DISPLAY_USAGE)
-                return werr
-            }
-        }
-
-        fmt.Fprintf(color.Output,
-            wski18n.T("{{.ok}} updated trigger {{.name}}\n",
-                map[string]interface{}{"ok": color.GreenString("ok:"), "name": boldString(qualifiedName.GetEntityName())}))
-        return nil
-    },
+	Use:           "update TRIGGER_NAME",
+	Short:         wski18n.T("update an existing trigger, or create a trigger if it does not exist"),
+	SilenceUsage:  true,
+	SilenceErrors: true,
+	PreRunE:       SetupClientConfig,
+	RunE: func(cmd *cobra.Command, args []string) error {
+		var err error
+		var fullFeedName string
+		var qualifiedName = new(QualifiedName)
+
+		if whiskErr := CheckArgs(args, 1, 1, "Trigger update",
+			wski18n.T("A trigger name is required.")); whiskErr != nil {
+			return whiskErr
+		}
+
+		if qualifiedName, err = NewQualifiedName(args[0]); err != nil {
+			return NewQualifiedNameError(args[0], err)
+		}
+
+		Client.Namespace = qualifiedName.GetNamespace()
+
+		// Convert the trigger's list of default parameters from a string into []KeyValue
+		// The 1 or more --param arguments have all been combined into a single []string
+		// e.g.   --p arg1,arg2 --p arg3,arg4   ->  [arg1, arg2, arg3, arg4]
+
+		whisk.Debug(whisk.DbgInfo, "Parsing parameters: %#v\n", Flags.common.param)
+		parameters, err := getJSONFromStrings(Flags.common.param, true)
+
+		if err != nil {
+			whisk.Debug(whisk.DbgError, "getJSONFromStrings(%#v, true) failed: %s\n", Flags.common.param, err)
+			errStr := wski18n.T("Invalid parameter argument '{{.param}}': {{.err}}",
+				map[string]interface{}{"param": fmt.Sprintf("%#v", Flags.common.param), "err": err})
+			werr := whisk.MakeWskErrorFromWskError(errors.New(errStr), err, whisk.EXIT_CODE_ERR_GENERAL, whisk.DISPLAY_MSG, whisk.DISPLAY_USAGE)
+			return werr
+		}
+
+		whisk.Debug(whisk.DbgInfo, "Parsing annotations: %#v\n", Flags.common.annotation)
+		annotations, err := getJSONFromStrings(Flags.common.annotation, true)
+
+		if err != nil {
+			whisk.Debug(whisk.DbgError, "getJSONFromStrings(%#v, true) failed: %s\n", Flags.common.annotation, err)
+			errStr := wski18n.T("Invalid annotation argument '{{.annotation}}': {{.err}}",
+				map[string]interface{}{"annotation": fmt.Sprintf("%#v", Flags.common.annotation), "err": err})
+			werr := whisk.MakeWskErrorFromWskError(errors.New(errStr), err, whisk.EXIT_CODE_ERR_GENERAL, whisk.DISPLAY_MSG, whisk.DISPLAY_USAGE)
+			return werr
+		}
+
+		retTrigger, _, err := Client.Triggers.Get(qualifiedName.GetEntityName())
+		if err != nil {
+			whisk.Debug(whisk.DbgError, "Client.Triggers.Get(%s) failed: %s\n", qualifiedName.GetEntityName(), err)
+			errStr := wski18n.T("Unable to get trigger '{{.name}}': {{.err}}",
+				map[string]interface{}{"name": qualifiedName.GetEntityName(), "err": err})
+			werr := whisk.MakeWskErrorFromWskError(errors.New(errStr), err, whisk.EXIT_CODE_ERR_GENERAL, whisk.DISPLAY_MSG, whisk.NO_DISPLAY_USAGE)
+			return werr
+		}
+
+		// Get full feed name from trigger get request as it is needed to get the feed
+		if retTrigger != nil && retTrigger.Annotations != nil {
+			fullFeedName = getValueString(retTrigger.Annotations, "feed")
+		}
+
+		if len(fullFeedName) > 0 {
+			fullTriggerName := fmt.Sprintf("/%s/%s", qualifiedName.GetNamespace(), qualifiedName.GetEntityName())
+			Flags.common.param = append(Flags.common.param, getFormattedJSON(FEED_LIFECYCLE_EVENT, FEED_UPDATE))
+			Flags.common.param = append(Flags.common.param, getFormattedJSON(FEED_TRIGGER_NAME, fullTriggerName))
+			Flags.common.param = append(Flags.common.param, getFormattedJSON(FEED_AUTH_KEY, Client.Config.AuthToken))
+
+			// Invoke the specified feed action to configure the trigger feed
+			err = configureFeed(qualifiedName.GetEntityName(), fullFeedName)
+			if err != nil {
+				whisk.Debug(whisk.DbgError, "configureFeed(%s, %s) failed: %s\n", qualifiedName.GetEntityName(), Flags.common.feed,
+					err)
+				errStr := wski18n.T("Unable to create trigger '{{.name}}': {{.err}}",
+					map[string]interface{}{"name": qualifiedName.GetEntityName(), "err": err})
+				werr := whisk.MakeWskErrorFromWskError(errors.New(errStr), err, whisk.EXIT_CODE_ERR_GENERAL, whisk.DISPLAY_MSG, whisk.NO_DISPLAY_USAGE)
+				return werr
+			}
+		} else {
+			trigger := &whisk.Trigger{
+				Name:        qualifiedName.GetEntityName(),
+				Parameters:  parameters.(whisk.KeyValueArr),
+				Annotations: annotations.(whisk.KeyValueArr),
+			}
+
+			_, _, err = Client.Triggers.Insert(trigger, true)
+			if err != nil {
+				whisk.Debug(whisk.DbgError, "Client.Triggers.Insert(%+v,true) failed: %s\n", trigger, err)
+				errStr := wski18n.T("Unable to update trigger '{{.name}}': {{.err}}",
+					map[string]interface{}{"name": trigger.Name, "err": err})
+				werr := whisk.MakeWskErrorFromWskError(errors.New(errStr), err, whisk.EXIT_CODE_ERR_GENERAL, whisk.DISPLAY_MSG, whisk.NO_DISPLAY_USAGE)
+				return werr
+			}
+		}
+
+		fmt.Fprintf(color.Output,
+			wski18n.T("{{.ok}} updated trigger {{.name}}\n",
+				map[string]interface{}{"ok": color.GreenString("ok:"), "name": boldString(qualifiedName.GetEntityName())}))
+		return nil
+	},
 }
 
 var triggerGetCmd = &cobra.Command{
-    Use:   "get TRIGGER_NAME [FIELD_FILTER]",
-    Short: wski18n.T("get trigger"),
-    SilenceUsage:   true,
-    SilenceErrors:  true,
-    PreRunE: SetupClientConfig,
-    RunE: func(cmd *cobra.Command, args []string) error {
-        var err error
-        var field string
-        var fullFeedName string
-        var qualifiedName = new(QualifiedName)
-
-        if whiskErr := CheckArgs(args, 1, 2, "Trigger get", wski18n.T("A trigger name is required.")); whiskErr != nil {
-            return whiskErr
-        }
-
-        if len(args) > 1 {
-            field = args[1]
-
-            if !fieldExists(&whisk.Trigger{}, field) {
-                errMsg := wski18n.T("Invalid field filter '{{.arg}}'.", map[string]interface{}{"arg": field})
-                whiskErr := whisk.MakeWskError(errors.New(errMsg), whisk.EXIT_CODE_ERR_GENERAL,
-                    whisk.DISPLAY_MSG, whisk.NO_DISPLAY_USAGE)
-                return whiskErr
-            }
-        }
-
-        if qualifiedName, err = NewQualifiedName(args[0]); err != nil {
-            return NewQualifiedNameError(args[0], err)
-        }
-
-        Client.Namespace = qualifiedName.GetNamespace()
-
-        retTrigger, _, err := Client.Triggers.Get(qualifiedName.GetEntityName())
-        if err != nil {
-            whisk.Debug(whisk.DbgError, "Client.Triggers.Get(%s) failed: %s\n", qualifiedName.GetEntityName(), err)
-            errStr := wski18n.T("Unable to get trigger '{{.name}}': {{.err}}",
-                    map[string]interface{}{"name": qualifiedName.GetEntityName(), "err": err})
-            werr := whisk.MakeWskErrorFromWskError(errors.New(errStr), err, whisk.EXIT_CODE_ERR_GENERAL, whisk.DISPLAY_MSG, whisk.NO_DISPLAY_USAGE)
-            return werr
-        }
-
-        // Get full feed name from trigger get request as it is needed to get the feed
-        if retTrigger != nil && retTrigger.Annotations != nil {
-            fullFeedName = getValueString(retTrigger.Annotations, "feed")
-        }
-
-        if len(fullFeedName) > 0 {
-            fullTriggerName := fmt.Sprintf("/%s/%s", qualifiedName.GetNamespace(), qualifiedName.GetEntityName())
-            Flags.common.param = append(Flags.common.param, getFormattedJSON(FEED_LIFECYCLE_EVENT, FEED_READ))
-            Flags.common.param = append(Flags.common.param, getFormattedJSON(FEED_TRIGGER_NAME, fullTriggerName))
-            Flags.common.param = append(Flags.common.param, getFormattedJSON(FEED_AUTH_KEY, Client.Config.AuthToken))
-
-            err = configureFeed(qualifiedName.GetEntityName(), fullFeedName)
-            if err != nil {
-                whisk.Debug(whisk.DbgError, "configureFeed(%s, %s) failed: %s\n", qualifiedName.GetEntityName(), fullFeedName, err)
-            }
-        } else {
-            if (Flags.trigger.summary) {
-                printSummary(retTrigger)
-            } else {
-                if len(field) > 0 {
-                    fmt.Fprintf(color.Output, wski18n.T("{{.ok}} got trigger {{.name}}, displaying field {{.field}}\n",
-                        map[string]interface{}{"ok": color.GreenString("ok:"), "name": boldString(qualifiedName.GetEntityName()),
-                        "field": boldString(field)}))
-                    printField(retTrigger, field)
-                } else {
-                    fmt.Fprintf(color.Output, wski18n.T("{{.ok}} got trigger {{.name}}\n",
-                            map[string]interface{}{"ok": color.GreenString("ok:"), "name": boldString(qualifiedName.GetEntityName())}))
-                    printJSON(retTrigger)
-                }
-            }
-        }
-
-        return nil
-    },
+	Use:           "get TRIGGER_NAME [FIELD_FILTER]",
+	Short:         wski18n.T("get trigger"),
+	SilenceUsage:  true,
+	SilenceErrors: true,
+	PreRunE:       SetupClientConfig,
+	RunE: func(cmd *cobra.Command, args []string) error {
+		var err error
+		var field string
+		var fullFeedName string
+		var qualifiedName = new(QualifiedName)
+
+		if whiskErr := CheckArgs(args, 1, 2, "Trigger get", wski18n.T("A trigger name is required.")); whiskErr != nil {
+			return whiskErr
+		}
+
+		if len(args) > 1 {
+			field = args[1]
+
+			if !fieldExists(&whisk.Trigger{}, field) {
+				errMsg := wski18n.T("Invalid field filter '{{.arg}}'.", map[string]interface{}{"arg": field})
+				whiskErr := whisk.MakeWskError(errors.New(errMsg), whisk.EXIT_CODE_ERR_GENERAL,
+					whisk.DISPLAY_MSG, whisk.NO_DISPLAY_USAGE)
+				return whiskErr
+			}
+		}
+
+		if qualifiedName, err = NewQualifiedName(args[0]); err != nil {
+			return NewQualifiedNameError(args[0], err)
+		}
+
+		Client.Namespace = qualifiedName.GetNamespace()
+
+		retTrigger, _, err := Client.Triggers.Get(qualifiedName.GetEntityName())
+		if err != nil {
+			whisk.Debug(whisk.DbgError, "Client.Triggers.Get(%s) failed: %s\n", qualifiedName.GetEntityName(), err)
+			errStr := wski18n.T("Unable to get trigger '{{.name}}': {{.err}}",
+				map[string]interface{}{"name": qualifiedName.GetEntityName(), "err": err})
+			werr := whisk.MakeWskErrorFromWskError(errors.New(errStr), err, whisk.EXIT_CODE_ERR_GENERAL, whisk.DISPLAY_MSG, whisk.NO_DISPLAY_USAGE)
+			return werr
+		}
+
+		// Get full feed name from trigger get request as it is needed to get the feed
+		if retTrigger != nil && retTrigger.Annotations != nil {
+			fullFeedName = getValueString(retTrigger.Annotations, "feed")
+		}
+
+		if len(fullFeedName) > 0 {
+			fullTriggerName := fmt.Sprintf("/%s/%s", qualifiedName.GetNamespace(), qualifiedName.GetEntityName())
+			Flags.common.param = append(Flags.common.param, getFormattedJSON(FEED_LIFECYCLE_EVENT, FEED_READ))
+			Flags.common.param = append(Flags.common.param, getFormattedJSON(FEED_TRIGGER_NAME, fullTriggerName))
+			Flags.common.param = append(Flags.common.param, getFormattedJSON(FEED_AUTH_KEY, Client.Config.AuthToken))
+
+			err = configureFeed(qualifiedName.GetEntityName(), fullFeedName)
+			if err != nil {
+				whisk.Debug(whisk.DbgError, "configureFeed(%s, %s) failed: %s\n", qualifiedName.GetEntityName(), fullFeedName, err)
+			}
+		} else {
+			if Flags.trigger.summary {
+				printSummary(retTrigger)
+			} else {
+				if len(field) > 0 {
+					fmt.Fprintf(color.Output, wski18n.T("{{.ok}} got trigger {{.name}}, displaying field {{.field}}\n",
+						map[string]interface{}{"ok": color.GreenString("ok:"), "name": boldString(qualifiedName.GetEntityName()),
+							"field": boldString(field)}))
+					printField(retTrigger, field)
+				} else {
+					fmt.Fprintf(color.Output, wski18n.T("{{.ok}} got trigger {{.name}}\n",
+						map[string]interface{}{"ok": color.GreenString("ok:"), "name": boldString(qualifiedName.GetEntityName())}))
+					printJSON(retTrigger)
+				}
+			}
+		}
+
+		return nil
+	},
 }
 
 var triggerDeleteCmd = &cobra.Command{
-    Use:   "delete TRIGGER_NAME",
-    Short: wski18n.T("delete trigger"),
-    SilenceUsage:   true,
-    SilenceErrors:  true,
-    PreRunE: SetupClientConfig,
-    RunE: func(cmd *cobra.Command, args []string) error {
-        var err error
-        var retTrigger *whisk.Trigger
-        var fullFeedName string
-        var origParams []string
-        var qualifiedName = new(QualifiedName)
-
-        if whiskErr := CheckArgs(args, 1, 1, "Trigger delete",
-                wski18n.T("A trigger name is required.")); whiskErr != nil {
-            return whiskErr
-        }
-
-        if qualifiedName, err = NewQualifiedName(args[0]); err != nil {
-            return NewQualifiedNameError(args[0], err)
-        }
-
-        Client.Namespace = qualifiedName.GetNamespace()
-
-        retTrigger, _, err = Client.Triggers.Get(qualifiedName.GetEntityName())
-        if err != nil {
-            whisk.Debug(whisk.DbgError, "Client.Triggers.Get(%s) failed: %s\n", qualifiedName.GetEntityName(), err)
-            errStr := wski18n.T("Unable to get trigger '{{.name}}': {{.err}}",
-                    map[string]interface{}{"name": qualifiedName.GetEntityName(), "err": err})
-            werr := whisk.MakeWskErrorFromWskError(errors.New(errStr), err, whisk.EXIT_CODE_ERR_GENERAL, whisk.DISPLAY_MSG, whisk.NO_DISPLAY_USAGE)
-            return werr
-        }
-
-        // Get full feed name from trigger delete request as it is needed to delete the feed
-        if retTrigger != nil && retTrigger.Annotations != nil {
-            fullFeedName = getValueString(retTrigger.Annotations, "feed")
-
-            if len(fullFeedName) > 0 {
-                origParams = Flags.common.param
-                fullTriggerName := fmt.Sprintf("/%s/%s", qualifiedName.GetNamespace(), qualifiedName.GetEntityName())
-                Flags.common.param = append(Flags.common.param, getFormattedJSON(FEED_LIFECYCLE_EVENT, FEED_DELETE))
-                Flags.common.param = append(Flags.common.param, getFormattedJSON(FEED_TRIGGER_NAME, fullTriggerName))
-                Flags.common.param = append(Flags.common.param, getFormattedJSON(FEED_AUTH_KEY, Client.Config.AuthToken))
-
-                err = configureFeed(qualifiedName.GetEntityName(), fullFeedName)
-                if err != nil {
-                    whisk.Debug(whisk.DbgError, "configureFeed(%s, %s) failed: %s\n", qualifiedName.GetEntityName(), fullFeedName, err)
-                }
-
-                Flags.common.param = origParams
-                Client.Namespace = qualifiedName.GetNamespace()
-            }
-
-        }
-
-        retTrigger, _, err = Client.Triggers.Delete(qualifiedName.GetEntityName())
-        if err != nil {
-            whisk.Debug(whisk.DbgError, "Client.Triggers.Delete(%s) failed: %s\n", qualifiedName.GetEntityName(), err)
-            errStr := wski18n.T("Unable to delete trigger '{{.name}}': {{.err}}",
-                map[string]interface{}{"name": qualifiedName.GetEntityName(), "err": err})
-            werr := whisk.MakeWskErrorFromWskError(errors.New(errStr), err, whisk.EXIT_CODE_ERR_GENERAL, whisk.DISPLAY_MSG, whisk.NO_DISPLAY_USAGE)
-            return werr
-        }
-
-        fmt.Fprintf(color.Output,
-            wski18n.T("{{.ok}} deleted trigger {{.name}}\n",
-                map[string]interface{}{"ok": color.GreenString("ok:"), "name": boldString(qualifiedName.GetEntityName())}))
-
-        return nil
-    },
+	Use:           "delete TRIGGER_NAME",
+	Short:         wski18n.T("delete trigger"),
+	SilenceUsage:  true,
+	SilenceErrors: true,
+	PreRunE:       SetupClientConfig,
+	RunE: func(cmd *cobra.Command, args []string) error {
+		var err error
+		var retTrigger *whisk.Trigger
+		var fullFeedName string
+		var origParams []string
+		var qualifiedName = new(QualifiedName)
+
+		if whiskErr := CheckArgs(args, 1, 1, "Trigger delete",
+			wski18n.T("A trigger name is required.")); whiskErr != nil {
+			return whiskErr
+		}
+
+		if qualifiedName, err = NewQualifiedName(args[0]); err != nil {
+			return NewQualifiedNameError(args[0], err)
+		}
+
+		Client.Namespace = qualifiedName.GetNamespace()
+
+		retTrigger, _, err = Client.Triggers.Get(qualifiedName.GetEntityName())
+		if err != nil {
+			whisk.Debug(whisk.DbgError, "Client.Triggers.Get(%s) failed: %s\n", qualifiedName.GetEntityName(), err)
+			errStr := wski18n.T("Unable to get trigger '{{.name}}': {{.err}}",
+				map[string]interface{}{"name": qualifiedName.GetEntityName(), "err": err})
+			werr := whisk.MakeWskErrorFromWskError(errors.New(errStr), err, whisk.EXIT_CODE_ERR_GENERAL, whisk.DISPLAY_MSG, whisk.NO_DISPLAY_USAGE)
+			return werr
+		}
+
+		// Get full feed name from trigger delete request as it is needed to delete the feed
+		if retTrigger != nil && retTrigger.Annotations != nil {
+			fullFeedName = getValueString(retTrigger.Annotations, "feed")
+
+			if len(fullFeedName) > 0 {
+				origParams = Flags.common.param
+				fullTriggerName := fmt.Sprintf("/%s/%s", qualifiedName.GetNamespace(), qualifiedName.GetEntityName())
+				Flags.common.param = append(Flags.common.param, getFormattedJSON(FEED_LIFECYCLE_EVENT, FEED_DELETE))
+				Flags.common.param = append(Flags.common.param, getFormattedJSON(FEED_TRIGGER_NAME, fullTriggerName))
+				Flags.common.param = append(Flags.common.param, getFormattedJSON(FEED_AUTH_KEY, Client.Config.AuthToken))
+
+				err = configureFeed(qualifiedName.GetEntityName(), fullFeedName)
+				if err != nil {
+					whisk.Debug(whisk.DbgError, "configureFeed(%s, %s) failed: %s\n", qualifiedName.GetEntityName(), fullFeedName, err)
+				}
+
+				Flags.common.param = origParams
+				Client.Namespace = qualifiedName.GetNamespace()
+			}
+
+		}
+
+		retTrigger, _, err = Client.Triggers.Delete(qualifiedName.GetEntityName())
+		if err != nil {
+			whisk.Debug(whisk.DbgError, "Client.Triggers.Delete(%s) failed: %s\n", qualifiedName.GetEntityName(), err)
+			errStr := wski18n.T("Unable to delete trigger '{{.name}}': {{.err}}",
+				map[string]interface{}{"name": qualifiedName.GetEntityName(), "err": err})
+			werr := whisk.MakeWskErrorFromWskError(errors.New(errStr), err, whisk.EXIT_CODE_ERR_GENERAL, whisk.DISPLAY_MSG, whisk.NO_DISPLAY_USAGE)
+			return werr
+		}
+
+		fmt.Fprintf(color.Output,
+			wski18n.T("{{.ok}} deleted trigger {{.name}}\n",
+				map[string]interface{}{"ok": color.GreenString("ok:"), "name": boldString(qualifiedName.GetEntityName())}))
+
+		return nil
+	},
 }
 
 var triggerListCmd = &cobra.Command{
-    Use:   "list [NAMESPACE]",
-    Short: wski18n.T("list all triggers"),
-    SilenceUsage:   true,
-    SilenceErrors:  true,
-    PreRunE: SetupClientConfig,
-    RunE: func(cmd *cobra.Command, args []string) error {
-        var err error
-        var qualifiedName = new(QualifiedName)
-
-        if whiskErr := CheckArgs(args, 0, 1, "Trigger list",
-            wski18n.T("An optional namespace is the only valid argument.")); whiskErr != nil {
-            return whiskErr
-        }
-
-        if len(args) == 1 {
-            if qualifiedName, err = NewQualifiedName(args[0]); err != nil {
-                return NewQualifiedNameError(args[0], err)
-            }
-
-            if len(qualifiedName.GetEntityName()) > 0 {
-                return entityNameError(qualifiedName.GetEntityName())
-            }
-
-            Client.Namespace = qualifiedName.GetNamespace()
-        }
-
-        options := &whisk.TriggerListOptions{
-            Skip:  Flags.common.skip,
-            Limit: Flags.common.limit,
-        }
-        triggers, _, err := Client.Triggers.List(options)
-        if err != nil {
-            whisk.Debug(whisk.DbgError, "Client.Triggers.List(%#v) for namespace '%s' failed: %s\n", options,
-                Client.Namespace, err)
-            errStr := wski18n.T("Unable to obtain the list of triggers for namespace '{{.name}}': {{.err}}",
-                    map[string]interface{}{"name": getClientNamespace(), "err": err})
-            werr := whisk.MakeWskErrorFromWskError(errors.New(errStr), err, whisk.EXIT_CODE_ERR_GENERAL, whisk.DISPLAY_MSG, whisk.NO_DISPLAY_USAGE)
-            return werr
-        }
-        sortByName := Flags.common.nameSort
-        printList(triggers, sortByName)
-        return nil
-    },
+	Use:           "list [NAMESPACE]",
+	Short:         wski18n.T("list all triggers"),
+	SilenceUsage:  true,
... 2359 lines suppressed ...

-- 
To stop receiving notification emails like this one, please contact
csantanapr@apache.org.

[incubator-openwhisk-cli] 02/03: Fail Travis when Go formatting errors exist

Posted by cs...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

csantanapr pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/incubator-openwhisk-cli.git

commit f02d6a7fdc287b6137617388a7a41328a5757c60
Author: dubeejw <jw...@us.ibm.com>
AuthorDate: Sat Jan 27 10:46:20 2018 -0500

    Fail Travis when Go formatting errors exist
---
 .travis.yml                               |   3 +
 build.gradle                              |   4 +
 commands/api.go                           |  14 +-
 tests/src/integration/command_test.go     | 942 ++++++++++++++--------------
 tests/src/integration/common/utils.go     | 132 ++--
 tests/src/integration/common/wsk.go       |  66 +-
 tests/src/integration/integration_test.go | 994 +++++++++++++++---------------
 wski18n/detection.go                      |  24 +-
 wski18n/i18n.go                           | 152 ++---
 wski18n/i18n_resources.go                 | 510 +++++++--------
 10 files changed, 1424 insertions(+), 1417 deletions(-)

diff --git a/.travis.yml b/.travis.yml
index 2620fc8..42934f0 100644
--- a/.travis.yml
+++ b/.travis.yml
@@ -28,6 +28,9 @@ install:
   - pip install --upgrade pip setuptools
 
 before_script:
+  - cd $TRAVIS_BUILD_DIR
+  - GO_FILES=$(find . -iname '*.go' -type f | grep -v /vendor/)
+  - test -z "$(gofmt -s -l $(echo $GO_FILES))"
   - cd $TRAVIS_BUILD_DIR/..
   - git clone https://github.com/apache/incubator-openwhisk-utilities.git
   - git clone https://github.com/apache/incubator-openwhisk.git
diff --git a/build.gradle b/build.gradle
index ba6171d..00c0cd4 100644
--- a/build.gradle
+++ b/build.gradle
@@ -193,6 +193,10 @@ goBuild {
       golang.packagePath ] as List<String>)
 }
 
+gofmt {
+    gofmt "-s -w ."
+}
+
 task compile(type: Copy, dependsOn: goBuild) {
     destinationDir = file('./build')
     from("./build/${rootProject.localPlatform.goOs}-${rootProject.localPlatform.goArch}")
diff --git a/commands/api.go b/commands/api.go
index 50b8d89..4134683 100644
--- a/commands/api.go
+++ b/commands/api.go
@@ -99,11 +99,11 @@ func isValidRelpath(relpath string) (error, bool) {
 func getManagedUrl(api *whisk.RetApi, relpath string, operation string) (url string) {
 	baseUrl := strings.TrimSuffix(api.BaseUrl, "/")
 	whisk.Debug(whisk.DbgInfo, "getManagedUrl: baseUrl = '%s', relpath = '%s', operation = '%s'\n", baseUrl, relpath, operation)
-	for path, _ := range api.Swagger.Paths {
+	for path := range api.Swagger.Paths {
 		whisk.Debug(whisk.DbgInfo, "getManagedUrl: comparing api relpath: '%s'\n", path)
 		if path == relpath {
 			whisk.Debug(whisk.DbgInfo, "getManagedUrl: relpath matches '%s'\n", relpath)
-			for op, _ := range api.Swagger.Paths[path] {
+			for op := range api.Swagger.Paths[path] {
 				whisk.Debug(whisk.DbgInfo, "getManagedUrl: comparing operation: '%s'\n", op)
 				if strings.ToLower(op) == strings.ToLower(operation) {
 					whisk.Debug(whisk.DbgInfo, "getManagedUrl: operation matches: '%s'\n", operation)
@@ -205,7 +205,7 @@ var apiCreateCmd = &cobra.Command{
 		} else {
 			whisk.Debug(whisk.DbgInfo, "Processing swagger based create API response\n")
 			baseUrl := retApi.BaseUrl
-			for path, _ := range retApi.Swagger.Paths {
+			for path := range retApi.Swagger.Paths {
 				managedUrl := strings.TrimSuffix(baseUrl, "/") + path
 				whisk.Debug(whisk.DbgInfo, "Managed path: '%s'\n", managedUrl)
 				for op, opv := range retApi.Swagger.Paths[path] {
@@ -573,7 +573,7 @@ func genFilteredList(resultApi *whisk.RetApi, apiPath string, apiVerb string) []
 	apiName := resultApi.Swagger.Info.Title
 	basePath := resultApi.Swagger.BasePath
 	if resultApi.Swagger != nil && resultApi.Swagger.Paths != nil {
-		for path, _ := range resultApi.Swagger.Paths {
+		for path := range resultApi.Swagger.Paths {
 			whisk.Debug(whisk.DbgInfo, "genFilteredApi: comparing api relpath: '%s'\n", path)
 			if len(apiPath) == 0 || path == apiPath {
 				whisk.Debug(whisk.DbgInfo, "genFilteredList: relpath matches\n")
@@ -611,7 +611,7 @@ func genFilteredRow(resultApi *whisk.RetApi, apiPath string, apiVerb string, max
 	apiName := resultApi.Swagger.Info.Title
 	basePath := resultApi.Swagger.BasePath
 	if resultApi.Swagger != nil && resultApi.Swagger.Paths != nil {
-		for path, _ := range resultApi.Swagger.Paths {
+		for path := range resultApi.Swagger.Paths {
 			whisk.Debug(whisk.DbgInfo, "genFilteredRow: comparing api relpath: '%s'\n", path)
 			if len(apiPath) == 0 || path == apiPath {
 				whisk.Debug(whisk.DbgInfo, "genFilteredRow: relpath matches\n")
@@ -674,7 +674,7 @@ func getLargestActionNameSize(retApiArray *whisk.RetApiArray, apiPath string, ap
 	for i := 0; i < len(retApiArray.Apis); i++ {
 		var resultApi = retApiArray.Apis[i].ApiValue
 		if resultApi.Swagger != nil && resultApi.Swagger.Paths != nil {
-			for path, _ := range resultApi.Swagger.Paths {
+			for path := range resultApi.Swagger.Paths {
 				whisk.Debug(whisk.DbgInfo, "getLargestActionNameSize: comparing api relpath: '%s'\n", path)
 				if len(apiPath) == 0 || path == apiPath {
 					whisk.Debug(whisk.DbgInfo, "getLargestActionNameSize: relpath matches\n")
@@ -708,7 +708,7 @@ func getLargestApiNameSize(retApiArray *whisk.RetApiArray, apiPath string, apiVe
 		var resultApi = retApiArray.Apis[i].ApiValue
 		apiName := resultApi.Swagger.Info.Title
 		if resultApi.Swagger != nil && resultApi.Swagger.Paths != nil {
-			for path, _ := range resultApi.Swagger.Paths {
+			for path := range resultApi.Swagger.Paths {
 				whisk.Debug(whisk.DbgInfo, "getLargestActionNameSize: comparing api relpath: '%s'\n", path)
 				if len(apiPath) == 0 || path == apiPath {
 					whisk.Debug(whisk.DbgInfo, "getLargestActionNameSize: relpath matches\n")
diff --git a/tests/src/integration/command_test.go b/tests/src/integration/command_test.go
index bc08df1..d4808f1 100644
--- a/tests/src/integration/command_test.go
+++ b/tests/src/integration/command_test.go
@@ -20,10 +20,10 @@
 package tests
 
 import (
-    "testing"
-    "os"
-    "github.com/stretchr/testify/assert"
-    "github.com/apache/incubator-openwhisk-cli/tests/src/integration/common"
+	"github.com/apache/incubator-openwhisk-cli/tests/src/integration/common"
+	"github.com/stretchr/testify/assert"
+	"os"
+	"testing"
 )
 
 var wsk *common.Wsk = common.NewWsk()
@@ -42,528 +42,528 @@ var missingFileMsg = "File '" + missingFile + "' is not a valid file or it does
 
 // Test case to check if the binary exits.
 func TestWskExist(t *testing.T) {
-    assert.True(t, wsk.Exists(), "The binary should exist.")
+	assert.True(t, wsk.Exists(), "The binary should exist.")
 }
 
 func TestHelpUsageInfoCommand(t *testing.T) {
-    stdout, err := wsk.RunCommand("-h")
-    assert.Equal(t, nil, err, "The command -h failed to run.")
-    assert.Contains(t, string(stdout), "Usage:", "The output of the command -h does not contain \"Usage\".")
-    assert.Contains(t, string(stdout), "Flags:", "The output of the command -h does not contain \"Flags\".")
-    assert.Contains(t, string(stdout), "Available Commands:",
-        "The output of the command -h does not contain \"Available Commands\".")
-    assert.Contains(t, string(stdout), "--help", "The output of the command -h does not contain \"--help\".")
+	stdout, err := wsk.RunCommand("-h")
+	assert.Equal(t, nil, err, "The command -h failed to run.")
+	assert.Contains(t, string(stdout), "Usage:", "The output of the command -h does not contain \"Usage\".")
+	assert.Contains(t, string(stdout), "Flags:", "The output of the command -h does not contain \"Flags\".")
+	assert.Contains(t, string(stdout), "Available Commands:",
+		"The output of the command -h does not contain \"Available Commands\".")
+	assert.Contains(t, string(stdout), "--help", "The output of the command -h does not contain \"--help\".")
 }
 
 func TestHelpUsageInfoCommandLanguage(t *testing.T) {
-    os.Setenv("LANG", "de_DE")
-    assert.Equal(t, "de_DE", os.Getenv("LANG"), "The environment variable LANG has not been set to de_DE.")
-    TestHelpUsageInfoCommand(t)
+	os.Setenv("LANG", "de_DE")
+	assert.Equal(t, "de_DE", os.Getenv("LANG"), "The environment variable LANG has not been set to de_DE.")
+	TestHelpUsageInfoCommand(t)
 }
 
 func TestShowCLIBuildVersion(t *testing.T) {
-    stdout, err := wsk.RunCommand("property", "get", "--cliversion")
-    assert.Equal(t, nil, err, "The command property get --cliversion failed to run.")
-    output := common.RemoveRedundentSpaces(string(stdout))
-    assert.NotContains(t, output, "whisk CLI version not set",
-        "The output of the command property get --cliversion contains \"whisk CLI version not set\".")
-    assert.Contains(t, output, "whisk CLI version",
-        "The output of the command property get --cliversion does not contain \"whisk CLI version\".")
+	stdout, err := wsk.RunCommand("property", "get", "--cliversion")
+	assert.Equal(t, nil, err, "The command property get --cliversion failed to run.")
+	output := common.RemoveRedundentSpaces(string(stdout))
+	assert.NotContains(t, output, "whisk CLI version not set",
+		"The output of the command property get --cliversion contains \"whisk CLI version not set\".")
+	assert.Contains(t, output, "whisk CLI version",
+		"The output of the command property get --cliversion does not contain \"whisk CLI version\".")
 }
 
 func TestShowAPIVersion(t *testing.T) {
-    stdout, err := wsk.RunCommand("property", "get", "--apiversion")
-    assert.Equal(t, nil, err, "The command property get --apiversion failed to run.")
-    assert.Contains(t, string(stdout), "whisk API version",
-        "The output of the command property get --apiversion does not contain \"whisk API version\".")
+	stdout, err := wsk.RunCommand("property", "get", "--apiversion")
+	assert.Equal(t, nil, err, "The command property get --apiversion failed to run.")
+	assert.Contains(t, string(stdout), "whisk API version",
+		"The output of the command property get --apiversion does not contain \"whisk API version\".")
 }
 
 // Test case to verify the default namespace _.
 func TestDefaultNamespace(t *testing.T) {
-    common.CreateFile(tmpProp)
-    common.WriteFile(tmpProp, []string{"NAMESPACE="})
+	common.CreateFile(tmpProp)
+	common.WriteFile(tmpProp, []string{"NAMESPACE="})
 
-    os.Setenv("WSK_CONFIG_FILE", tmpProp)
-    assert.Equal(t, os.Getenv("WSK_CONFIG_FILE"), tmpProp, "The environment variable WSK_CONFIG_FILE has not been set.")
+	os.Setenv("WSK_CONFIG_FILE", tmpProp)
+	assert.Equal(t, os.Getenv("WSK_CONFIG_FILE"), tmpProp, "The environment variable WSK_CONFIG_FILE has not been set.")
 
-    stdout, err := wsk.RunCommand("property", "get", "-i", "--namespace")
-    assert.Equal(t, nil, err, "The command property get -i --namespace failed to run.")
-    assert.Contains(t, common.RemoveRedundentSpaces(string(stdout)), "whisk namespace _",
-        "The output of the command does not contain \"whisk namespace _\".")
-    common.DeleteFile(tmpProp)
+	stdout, err := wsk.RunCommand("property", "get", "-i", "--namespace")
+	assert.Equal(t, nil, err, "The command property get -i --namespace failed to run.")
+	assert.Contains(t, common.RemoveRedundentSpaces(string(stdout)), "whisk namespace _",
+		"The output of the command does not contain \"whisk namespace _\".")
+	common.DeleteFile(tmpProp)
 }
 
 // Test case to validate default property values.
 func TestValidateDefaultProperties(t *testing.T) {
-    common.CreateFile(tmpProp)
-
-    os.Setenv("WSK_CONFIG_FILE", tmpProp)
-    assert.Equal(t, os.Getenv("WSK_CONFIG_FILE"), tmpProp, "The environment variable WSK_CONFIG_FILE has not been set.")
-
-    stdout, err := wsk.RunCommand("property", "unset", "--auth", "--apihost", "--apiversion", "--namespace")
-    assert.Equal(t, nil, err, "The command property unset failed to run.")
-    outputString := string(stdout)
-    assert.Contains(t, outputString, "ok: whisk auth unset",
-        "The output of the command does not contain \"ok: whisk auth unset\".")
-    assert.Contains(t, outputString, "ok: whisk API host unset",
-        "The output of the command does not contain \"ok: whisk API host unset\".")
-    assert.Contains(t, outputString, "ok: whisk API version unset",
-        "The output of the command does not contain \"ok: whisk API version unset\".")
-    assert.Contains(t, outputString, "ok: whisk namespace unset",
-        "The output of the command does not contain \"ok: whisk namespace unset\".")
-
-    stdout, err = wsk.RunCommand("property", "get", "--auth")
-    assert.Equal(t, nil, err, "The command property get --auth failed to run.")
-    assert.Equal(t, "whisk auth", common.RemoveRedundentSpaces(string(stdout)),
-        "The output of the command does not equal to \"whisk auth\".")
-
-    stdout, err = wsk.RunCommand("property", "get", "--apihost")
-    assert.Equal(t, nil, err, "The command property get --apihost failed to run.")
-    assert.Equal(t, "whisk API host", common.RemoveRedundentSpaces(string(stdout)),
-        "The output of the command does not equal to \"whisk API host\".")
-
-    stdout, err = wsk.RunCommand("property", "get", "--namespace")
-    assert.Equal(t, nil, err, "The command property get --namespace failed to run.")
-    assert.Equal(t, "whisk namespace _", common.RemoveRedundentSpaces(string(stdout)),
-        "The output of the command does not equal to \"whisk namespace _\".")
-
-    common.DeleteFile(tmpProp)
+	common.CreateFile(tmpProp)
+
+	os.Setenv("WSK_CONFIG_FILE", tmpProp)
+	assert.Equal(t, os.Getenv("WSK_CONFIG_FILE"), tmpProp, "The environment variable WSK_CONFIG_FILE has not been set.")
+
+	stdout, err := wsk.RunCommand("property", "unset", "--auth", "--apihost", "--apiversion", "--namespace")
+	assert.Equal(t, nil, err, "The command property unset failed to run.")
+	outputString := string(stdout)
+	assert.Contains(t, outputString, "ok: whisk auth unset",
+		"The output of the command does not contain \"ok: whisk auth unset\".")
+	assert.Contains(t, outputString, "ok: whisk API host unset",
+		"The output of the command does not contain \"ok: whisk API host unset\".")
+	assert.Contains(t, outputString, "ok: whisk API version unset",
+		"The output of the command does not contain \"ok: whisk API version unset\".")
+	assert.Contains(t, outputString, "ok: whisk namespace unset",
+		"The output of the command does not contain \"ok: whisk namespace unset\".")
+
+	stdout, err = wsk.RunCommand("property", "get", "--auth")
+	assert.Equal(t, nil, err, "The command property get --auth failed to run.")
+	assert.Equal(t, "whisk auth", common.RemoveRedundentSpaces(string(stdout)),
+		"The output of the command does not equal to \"whisk auth\".")
+
+	stdout, err = wsk.RunCommand("property", "get", "--apihost")
+	assert.Equal(t, nil, err, "The command property get --apihost failed to run.")
+	assert.Equal(t, "whisk API host", common.RemoveRedundentSpaces(string(stdout)),
+		"The output of the command does not equal to \"whisk API host\".")
+
+	stdout, err = wsk.RunCommand("property", "get", "--namespace")
+	assert.Equal(t, nil, err, "The command property get --namespace failed to run.")
+	assert.Equal(t, "whisk namespace _", common.RemoveRedundentSpaces(string(stdout)),
+		"The output of the command does not equal to \"whisk namespace _\".")
+
+	common.DeleteFile(tmpProp)
 }
 
 // Test case to set auth in property file.
 func TestSetAuth(t *testing.T) {
-    common.CreateFile(tmpProp)
+	common.CreateFile(tmpProp)
 
-    os.Setenv("WSK_CONFIG_FILE", tmpProp)
-    assert.Equal(t, os.Getenv("WSK_CONFIG_FILE"), tmpProp, "The environment variable WSK_CONFIG_FILE has not been set.")
+	os.Setenv("WSK_CONFIG_FILE", tmpProp)
+	assert.Equal(t, os.Getenv("WSK_CONFIG_FILE"), tmpProp, "The environment variable WSK_CONFIG_FILE has not been set.")
 
-    _, err := wsk.RunCommand("property", "set", "--auth", "testKey")
-    assert.Equal(t, nil, err, "The command property set --auth testKey failed to run.")
-    output := common.ReadFile(tmpProp)
-    assert.Contains(t, output, "AUTH=testKey",
-        "The wsk property file does not contain \"AUTH=testKey\".")
-    common.DeleteFile(tmpProp)
+	_, err := wsk.RunCommand("property", "set", "--auth", "testKey")
+	assert.Equal(t, nil, err, "The command property set --auth testKey failed to run.")
+	output := common.ReadFile(tmpProp)
+	assert.Contains(t, output, "AUTH=testKey",
+		"The wsk property file does not contain \"AUTH=testKey\".")
+	common.DeleteFile(tmpProp)
 }
 
 // Test case to set multiple property values with single command.
 func TestSetMultipleValues(t *testing.T) {
-    common.CreateFile(tmpProp)
-
-    os.Setenv("WSK_CONFIG_FILE", tmpProp)
-    assert.Equal(t, os.Getenv("WSK_CONFIG_FILE"), tmpProp, "The environment variable WSK_CONFIG_FILE has not been set.")
-
-    _, err := wsk.RunCommand("property", "set", "--auth", "testKey", "--apihost", "openwhisk.ng.bluemix.net",
-        "--apiversion", "v1")
-    assert.Equal(t, nil, err, "The command property set --auth --apihost --apiversion failed to run.")
-    output := common.ReadFile(tmpProp)
-    assert.Contains(t, output, "AUTH=testKey", "The wsk property file does not contain \"AUTH=testKey\".")
-    assert.Contains(t, output, "APIHOST=openwhisk.ng.bluemix.net",
-        "The wsk property file does not contain \"APIHOST=openwhisk.ng.bluemix.net\".")
-    assert.Contains(t, output, "APIVERSION=v1", "The wsk property file does not contain \"APIVERSION=v1\".")
-    common.DeleteFile(tmpProp)
+	common.CreateFile(tmpProp)
+
+	os.Setenv("WSK_CONFIG_FILE", tmpProp)
+	assert.Equal(t, os.Getenv("WSK_CONFIG_FILE"), tmpProp, "The environment variable WSK_CONFIG_FILE has not been set.")
+
+	_, err := wsk.RunCommand("property", "set", "--auth", "testKey", "--apihost", "openwhisk.ng.bluemix.net",
+		"--apiversion", "v1")
+	assert.Equal(t, nil, err, "The command property set --auth --apihost --apiversion failed to run.")
+	output := common.ReadFile(tmpProp)
+	assert.Contains(t, output, "AUTH=testKey", "The wsk property file does not contain \"AUTH=testKey\".")
+	assert.Contains(t, output, "APIHOST=openwhisk.ng.bluemix.net",
+		"The wsk property file does not contain \"APIHOST=openwhisk.ng.bluemix.net\".")
+	assert.Contains(t, output, "APIVERSION=v1", "The wsk property file does not contain \"APIVERSION=v1\".")
+	common.DeleteFile(tmpProp)
 }
 
 // Test case to reject bad command.
 func TestRejectBadComm(t *testing.T) {
-    common.CreateFile(tmpProp)
+	common.CreateFile(tmpProp)
 
-    os.Setenv("WSK_CONFIG_FILE", tmpProp)
-    assert.Equal(t, os.Getenv("WSK_CONFIG_FILE"), tmpProp, "The environment variable WSK_CONFIG_FILE has not been set.")
+	os.Setenv("WSK_CONFIG_FILE", tmpProp)
+	assert.Equal(t, os.Getenv("WSK_CONFIG_FILE"), tmpProp, "The environment variable WSK_CONFIG_FILE has not been set.")
 
-    stdout, err := wsk.RunCommand("bogus")
-    assert.NotEqual(t, nil, err, "The command bogus should fail to run.")
-    assert.Contains(t, string(stdout), "Run 'wsk --help' for usage",
-        "The output of the command does not contain \"Run 'wsk --help' for usage\".")
-    common.DeleteFile(tmpProp)
+	stdout, err := wsk.RunCommand("bogus")
+	assert.NotEqual(t, nil, err, "The command bogus should fail to run.")
+	assert.Contains(t, string(stdout), "Run 'wsk --help' for usage",
+		"The output of the command does not contain \"Run 'wsk --help' for usage\".")
+	common.DeleteFile(tmpProp)
 }
 
 // Test case to reject a command when the API host is not set.
 func TestRejectCommAPIHostNotSet(t *testing.T) {
-    common.CreateFile(tmpProp)
+	common.CreateFile(tmpProp)
 
-    os.Setenv("WSK_CONFIG_FILE", tmpProp)
-    assert.Equal(t, os.Getenv("WSK_CONFIG_FILE"), tmpProp, "The environment variable WSK_CONFIG_FILE has not been set.")
+	os.Setenv("WSK_CONFIG_FILE", tmpProp)
+	assert.Equal(t, os.Getenv("WSK_CONFIG_FILE"), tmpProp, "The environment variable WSK_CONFIG_FILE has not been set.")
 
-    stdout, err := wsk.RunCommand("property", "get")
-    assert.NotEqual(t, nil, err, "The command property get --apihost --apiversion should fail to run.")
-    assert.Contains(t, common.RemoveRedundentSpaces(string(stdout)),
-        "The API host is not valid: An API host must be provided",
-        "The output of the command does not contain \"The API host is not valid: An API host must be provided\".")
-    common.DeleteFile(tmpProp)
+	stdout, err := wsk.RunCommand("property", "get")
+	assert.NotEqual(t, nil, err, "The command property get --apihost --apiversion should fail to run.")
+	assert.Contains(t, common.RemoveRedundentSpaces(string(stdout)),
+		"The API host is not valid: An API host must be provided",
+		"The output of the command does not contain \"The API host is not valid: An API host must be provided\".")
+	common.DeleteFile(tmpProp)
 }
 
 func initInvalidArgsNotEnoughParamsArgs() {
-    invalidArgs = []common.InvalidArg{
-        common.InvalidArg{
-            Cmd: []string{"action", "create", "actionName", "-p"},
-            Err: invalidParamMsg,
-        },
-        common.InvalidArg{
-            Cmd: []string{"action", "create", "actionName", "-p", "key"},
-            Err: invalidParamMsg,
-        },
-        common.InvalidArg{
-            Cmd: []string{"action", "create", "actionName", "-P"},
-            Err: invalidParamFileMsg,
-        },
-        common.InvalidArg{
-            Cmd: []string{"action", "update", "actionName", "-p"},
-            Err: invalidParamMsg,
-        },
-        common.InvalidArg{
-            Cmd: []string{"action", "update", "actionName", "-p", "key"},
-            Err: invalidParamMsg,
-        },
-        common.InvalidArg{
-            Cmd: []string{"action", "update", "actionName", "-P"},
-            Err: invalidParamFileMsg,
-        },
-        common.InvalidArg{
-            Cmd: []string{"action", "invoke", "actionName", "-p"},
-            Err: invalidParamMsg,
-        },
-        common.InvalidArg{
-            Cmd: []string{"action", "invoke", "actionName", "-p", "key"},
-            Err: invalidParamMsg,
-        },
-        common.InvalidArg{
-            Cmd: []string{"action", "invoke", "actionName", "-P"},
-            Err: invalidParamFileMsg,
-        },
-        common.InvalidArg{
-            Cmd: []string{"action", "create", "actionName", "-a"},
-            Err: invalidAnnotMsg,
-        },
-        common.InvalidArg{
-            Cmd: []string{"action", "create", "actionName", "-a", "key"},
-            Err: invalidAnnotMsg,
-        },
-        common.InvalidArg{
-            Cmd: []string{"action", "create", "actionName", "-A"},
-            Err: invalidAnnotFileMsg,
-        },
-        common.InvalidArg{
-            Cmd: []string{"action", "update", "actionName", "-a"},
-            Err: invalidAnnotMsg,
-        },
-        common.InvalidArg{
-            Cmd: []string{"action", "update", "actionName", "-a", "key"},
-            Err: invalidAnnotMsg,
-        },
-        common.InvalidArg{
-            Cmd: []string{"action", "update", "actionName", "-A"},
-            Err: invalidAnnotFileMsg,
-        },
-        common.InvalidArg{
-            Cmd: []string{"action", "invoke", "actionName", "-a"},
-            Err: invalidAnnotMsg,
-        },
-        common.InvalidArg{
-            Cmd: []string{"action", "invoke", "actionName", "-a", "key"},
-            Err: invalidAnnotMsg,
-        },
-        common.InvalidArg{
-            Cmd: []string{"action", "invoke", "actionName", "-A"},
-            Err: invalidAnnotFileMsg,
-        },
-        common.InvalidArg{
-            Cmd: []string{"package", "create", "packageName", "-p"},
-            Err: invalidParamMsg,
-        },
-        common.InvalidArg{
-            Cmd: []string{"package", "create", "packageName", "-p", "key"},
-            Err: invalidParamMsg,
-        },
-        common.InvalidArg{
-            Cmd: []string{"package", "create", "packageName", "-P"},
-            Err: invalidParamFileMsg,
-        },
-        common.InvalidArg{
-            Cmd: []string{"package", "update", "packageName", "-p"},
-            Err: invalidParamMsg,
-        },
-        common.InvalidArg{
-            Cmd: []string{"package", "update", "packageName", "-p", "key"},
-            Err: invalidParamMsg,
-        },
-        common.InvalidArg{
-            Cmd: []string{"package", "update", "packageName", "-P"},
-            Err: invalidParamFileMsg,
-        },
-        common.InvalidArg{
-            Cmd: []string{"package", "bind", "packageName", "boundPackageName", "-p"},
-            Err: invalidParamMsg,
-        },
-        common.InvalidArg{
-            Cmd: []string{"package", "bind", "packageName", "boundPackageName", "-p", "key"},
-            Err: invalidParamMsg,
-        },
-        common.InvalidArg{
-            Cmd: []string{"package", "bind", "packageName", "boundPackageName", "-P"},
-            Err: invalidParamFileMsg,
-        },
-        common.InvalidArg{
-            Cmd: []string{"package", "create", "packageName", "-a"},
-            Err: invalidAnnotMsg,
-        },
-        common.InvalidArg{
-            Cmd: []string{"package", "create", "packageName", "-a", "key"},
-            Err: invalidAnnotMsg,
-        },
-        common.InvalidArg{
-            Cmd: []string{"package", "create", "packageName", "-A"},
-            Err: invalidAnnotFileMsg,
-        },
-        common.InvalidArg{
-            Cmd: []string{"package", "update", "packageName", "-a"},
-            Err: invalidAnnotMsg,
-        },
-        common.InvalidArg{
-            Cmd: []string{"package", "update", "packageName", "-a", "key"},
-            Err: invalidAnnotMsg,
-        },
-        common.InvalidArg{
-            Cmd: []string{"package", "update", "packageName", "-A"},
-            Err: invalidAnnotFileMsg,
-        },
-        common.InvalidArg{
-            Cmd: []string{"package", "bind", "packageName", "boundPackageName", "-a"},
-            Err: invalidAnnotMsg,
-        },
-        common.InvalidArg{
-            Cmd: []string{"package", "bind", "packageName", "boundPackageName", "-a", "key"},
-            Err: invalidAnnotMsg,
-        },
-        common.InvalidArg{
-            Cmd: []string{"package", "bind", "packageName", "boundPackageName", "-A"},
-            Err: invalidAnnotFileMsg,
-        },
-        common.InvalidArg{
-            Cmd: []string{"trigger", "create", "triggerName", "-p"},
-            Err: invalidParamMsg,
-        },
-        common.InvalidArg{
-            Cmd: []string{"trigger", "create", "triggerName", "-p", "key"},
-            Err: invalidParamMsg,
-        },
-        common.InvalidArg{
-            Cmd: []string{"trigger", "create", "triggerName", "-P"},
-            Err: invalidParamFileMsg,
-        },
-        common.InvalidArg{
-            Cmd: []string{"trigger", "update", "triggerName", "-p"},
-            Err: invalidParamMsg,
-        },
-        common.InvalidArg{
-            Cmd: []string{"trigger", "update", "triggerName", "-p", "key"},
-            Err: invalidParamMsg,
-        },
-        common.InvalidArg{
-            Cmd: []string{"trigger", "update", "triggerName", "-P"},
-            Err: invalidParamFileMsg,
-        },
-        common.InvalidArg{
-            Cmd: []string{"trigger", "fire", "triggerName", "-p"},
-            Err: invalidParamMsg,
-        },
-        common.InvalidArg{
-            Cmd: []string{"trigger", "fire", "triggerName", "-p", "key"},
-            Err: invalidParamMsg,
-        },
-        common.InvalidArg{
-            Cmd: []string{"trigger", "fire", "triggerName", "-P"},
-            Err: invalidParamFileMsg,
-        },
-        common.InvalidArg{
-            Cmd: []string{"trigger", "create", "triggerName", "-a"},
-            Err: invalidAnnotMsg,
-        },
-        common.InvalidArg{
-            Cmd: []string{"trigger", "create", "triggerName", "-a", "key"},
-            Err: invalidAnnotMsg,
-        },
-        common.InvalidArg{
-            Cmd: []string{"trigger", "create", "triggerName", "-A"},
-            Err: invalidAnnotFileMsg,
-        },
-        common.InvalidArg{
-            Cmd: []string{"trigger", "update", "triggerName", "-a"},
-            Err: invalidAnnotMsg,
-        },
-        common.InvalidArg{
-            Cmd: []string{"trigger", "update", "triggerName", "-a", "key"},
-            Err: invalidAnnotMsg,
-        },
-        common.InvalidArg{
-            Cmd: []string{"trigger", "update", "triggerName", "-A"},
-            Err: invalidAnnotFileMsg,
-        },
-        common.InvalidArg{
-            Cmd: []string{"trigger", "fire", "triggerName", "-a"},
-            Err: invalidAnnotMsg,
-        },
-        common.InvalidArg{
-            Cmd: []string{"trigger", "fire", "triggerName", "-a", "key"},
-            Err: invalidAnnotMsg,
-        },
-        common.InvalidArg{
-            Cmd: []string{"trigger", "fire", "triggerName", "-A"},
-            Err: invalidAnnotFileMsg,
-        },
-    }
+	invalidArgs = []common.InvalidArg{
+		{
+			Cmd: []string{"action", "create", "actionName", "-p"},
+			Err: invalidParamMsg,
+		},
+		{
+			Cmd: []string{"action", "create", "actionName", "-p", "key"},
+			Err: invalidParamMsg,
+		},
+		{
+			Cmd: []string{"action", "create", "actionName", "-P"},
+			Err: invalidParamFileMsg,
+		},
+		{
+			Cmd: []string{"action", "update", "actionName", "-p"},
+			Err: invalidParamMsg,
+		},
+		{
+			Cmd: []string{"action", "update", "actionName", "-p", "key"},
+			Err: invalidParamMsg,
+		},
+		{
+			Cmd: []string{"action", "update", "actionName", "-P"},
+			Err: invalidParamFileMsg,
+		},
+		{
+			Cmd: []string{"action", "invoke", "actionName", "-p"},
+			Err: invalidParamMsg,
+		},
+		{
+			Cmd: []string{"action", "invoke", "actionName", "-p", "key"},
+			Err: invalidParamMsg,
+		},
+		{
+			Cmd: []string{"action", "invoke", "actionName", "-P"},
+			Err: invalidParamFileMsg,
+		},
+		{
+			Cmd: []string{"action", "create", "actionName", "-a"},
+			Err: invalidAnnotMsg,
+		},
+		{
+			Cmd: []string{"action", "create", "actionName", "-a", "key"},
+			Err: invalidAnnotMsg,
+		},
+		{
+			Cmd: []string{"action", "create", "actionName", "-A"},
+			Err: invalidAnnotFileMsg,
+		},
+		{
+			Cmd: []string{"action", "update", "actionName", "-a"},
+			Err: invalidAnnotMsg,
+		},
+		{
+			Cmd: []string{"action", "update", "actionName", "-a", "key"},
+			Err: invalidAnnotMsg,
+		},
+		{
+			Cmd: []string{"action", "update", "actionName", "-A"},
+			Err: invalidAnnotFileMsg,
+		},
+		{
+			Cmd: []string{"action", "invoke", "actionName", "-a"},
+			Err: invalidAnnotMsg,
+		},
+		{
+			Cmd: []string{"action", "invoke", "actionName", "-a", "key"},
+			Err: invalidAnnotMsg,
+		},
+		{
+			Cmd: []string{"action", "invoke", "actionName", "-A"},
+			Err: invalidAnnotFileMsg,
+		},
+		{
+			Cmd: []string{"package", "create", "packageName", "-p"},
+			Err: invalidParamMsg,
+		},
+		{
+			Cmd: []string{"package", "create", "packageName", "-p", "key"},
+			Err: invalidParamMsg,
+		},
+		{
+			Cmd: []string{"package", "create", "packageName", "-P"},
+			Err: invalidParamFileMsg,
+		},
+		{
+			Cmd: []string{"package", "update", "packageName", "-p"},
+			Err: invalidParamMsg,
+		},
+		{
+			Cmd: []string{"package", "update", "packageName", "-p", "key"},
+			Err: invalidParamMsg,
+		},
+		{
+			Cmd: []string{"package", "update", "packageName", "-P"},
+			Err: invalidParamFileMsg,
+		},
+		{
+			Cmd: []string{"package", "bind", "packageName", "boundPackageName", "-p"},
+			Err: invalidParamMsg,
+		},
+		{
+			Cmd: []string{"package", "bind", "packageName", "boundPackageName", "-p", "key"},
+			Err: invalidParamMsg,
+		},
+		{
+			Cmd: []string{"package", "bind", "packageName", "boundPackageName", "-P"},
+			Err: invalidParamFileMsg,
+		},
+		{
+			Cmd: []string{"package", "create", "packageName", "-a"},
+			Err: invalidAnnotMsg,
+		},
+		{
+			Cmd: []string{"package", "create", "packageName", "-a", "key"},
+			Err: invalidAnnotMsg,
+		},
+		{
+			Cmd: []string{"package", "create", "packageName", "-A"},
+			Err: invalidAnnotFileMsg,
+		},
+		{
+			Cmd: []string{"package", "update", "packageName", "-a"},
+			Err: invalidAnnotMsg,
+		},
+		{
+			Cmd: []string{"package", "update", "packageName", "-a", "key"},
+			Err: invalidAnnotMsg,
+		},
+		{
+			Cmd: []string{"package", "update", "packageName", "-A"},
+			Err: invalidAnnotFileMsg,
+		},
+		{
+			Cmd: []string{"package", "bind", "packageName", "boundPackageName", "-a"},
+			Err: invalidAnnotMsg,
+		},
+		{
+			Cmd: []string{"package", "bind", "packageName", "boundPackageName", "-a", "key"},
+			Err: invalidAnnotMsg,
+		},
+		{
+			Cmd: []string{"package", "bind", "packageName", "boundPackageName", "-A"},
+			Err: invalidAnnotFileMsg,
+		},
+		{
+			Cmd: []string{"trigger", "create", "triggerName", "-p"},
+			Err: invalidParamMsg,
+		},
+		{
+			Cmd: []string{"trigger", "create", "triggerName", "-p", "key"},
+			Err: invalidParamMsg,
+		},
+		{
+			Cmd: []string{"trigger", "create", "triggerName", "-P"},
+			Err: invalidParamFileMsg,
+		},
+		{
+			Cmd: []string{"trigger", "update", "triggerName", "-p"},
+			Err: invalidParamMsg,
+		},
+		{
+			Cmd: []string{"trigger", "update", "triggerName", "-p", "key"},
+			Err: invalidParamMsg,
+		},
+		{
+			Cmd: []string{"trigger", "update", "triggerName", "-P"},
+			Err: invalidParamFileMsg,
+		},
+		{
+			Cmd: []string{"trigger", "fire", "triggerName", "-p"},
+			Err: invalidParamMsg,
+		},
+		{
+			Cmd: []string{"trigger", "fire", "triggerName", "-p", "key"},
+			Err: invalidParamMsg,
+		},
+		{
+			Cmd: []string{"trigger", "fire", "triggerName", "-P"},
+			Err: invalidParamFileMsg,
+		},
+		{
+			Cmd: []string{"trigger", "create", "triggerName", "-a"},
+			Err: invalidAnnotMsg,
+		},
+		{
+			Cmd: []string{"trigger", "create", "triggerName", "-a", "key"},
+			Err: invalidAnnotMsg,
+		},
+		{
+			Cmd: []string{"trigger", "create", "triggerName", "-A"},
+			Err: invalidAnnotFileMsg,
+		},
+		{
+			Cmd: []string{"trigger", "update", "triggerName", "-a"},
+			Err: invalidAnnotMsg,
+		},
+		{
+			Cmd: []string{"trigger", "update", "triggerName", "-a", "key"},
+			Err: invalidAnnotMsg,
+		},
+		{
+			Cmd: []string{"trigger", "update", "triggerName", "-A"},
+			Err: invalidAnnotFileMsg,
+		},
+		{
+			Cmd: []string{"trigger", "fire", "triggerName", "-a"},
+			Err: invalidAnnotMsg,
+		},
+		{
+			Cmd: []string{"trigger", "fire", "triggerName", "-a", "key"},
+			Err: invalidAnnotMsg,
+		},
+		{
+			Cmd: []string{"trigger", "fire", "triggerName", "-A"},
+			Err: invalidAnnotFileMsg,
+		},
+	}
 }
 
-func initInvalidArgsMissingInvalidParamsAnno(){
-    invalidArgs = []common.InvalidArg{
-        common.InvalidArg{
-            Cmd: []string{"action", "create", "actionName", helloFile, "-P", emptyFile},
-            Err: emptyFileMsg,
-        },
-        common.InvalidArg{
-            Cmd: []string{"action", "update", "actionName", helloFile, "-P", emptyFile},
-            Err: emptyFileMsg,
-        },
-        common.InvalidArg{
-            Cmd: []string{"action", "invoke", "actionName", "-P", emptyFile},
-            Err: emptyFileMsg,
-        },
-        common.InvalidArg{
-            Cmd: []string{"action", "create", "actionName", "-P", emptyFile},
-            Err: emptyFileMsg,
-        },
-        common.InvalidArg{
-            Cmd: []string{"action", "update", "actionName", "-P", emptyFile},
-            Err: emptyFileMsg,
-        },
-        common.InvalidArg{
-            Cmd: []string{"action", "invoke", "actionName", "-P", emptyFile},
-            Err: emptyFileMsg,
-        },
-        common.InvalidArg{
-            Cmd: []string{"package", "create", "packageName", "-P", emptyFile},
-            Err: emptyFileMsg,
-        },
-        common.InvalidArg{
-            Cmd: []string{"package", "update", "packageName", "-P", emptyFile},
-            Err: emptyFileMsg,
-        },
-        common.InvalidArg{
-            Cmd: []string{"package", "bind", "packageName", "boundPackageName", "-P", emptyFile},
-            Err: emptyFileMsg,
-        },
-        common.InvalidArg{
-            Cmd: []string{"package", "create", "packageName", "-P", emptyFile},
-            Err: emptyFileMsg,
-        },
-        common.InvalidArg{
-            Cmd: []string{"package", "update", "packageName", "-P", emptyFile},
-            Err: emptyFileMsg,
-        },
-        common.InvalidArg{
-            Cmd: []string{"package", "bind", "packageName", "boundPackageName", "-P", emptyFile},
-            Err: emptyFileMsg,
-        },
-        common.InvalidArg{
-            Cmd: []string{"trigger", "create", "triggerName", "-P", emptyFile},
-            Err: emptyFileMsg,
-        },
-        common.InvalidArg{
-            Cmd: []string{"trigger", "update", "triggerName", "-P", emptyFile},
-            Err: emptyFileMsg,
-        },
-        common.InvalidArg{
-            Cmd: []string{"trigger", "fire", "triggerName", "-P", emptyFile},
-            Err: emptyFileMsg,
-        },
-        common.InvalidArg{
-            Cmd: []string{"trigger", "create", "triggerName", "-P", emptyFile},
-            Err: emptyFileMsg,
-        },
-        common.InvalidArg{
-            Cmd: []string{"trigger", "update", "triggerName", "-P", emptyFile},
-            Err: emptyFileMsg,
-        },
-        common.InvalidArg{
-            Cmd: []string{"trigger", "fire", "triggerName", "-P", emptyFile},
-            Err: emptyFileMsg,
-        },
-        common.InvalidArg{
-            Cmd: []string{"action", "create", "actionName", helloFile, "-A", missingFile},
-            Err: missingFileMsg,
-        },
-        common.InvalidArg{
-            Cmd: []string{"action", "update", "actionName", helloFile, "-A", missingFile},
-            Err: missingFileMsg,
-        },
-        common.InvalidArg{
-            Cmd: []string{"action", "invoke", "actionName", "-A", missingFile},
-            Err: missingFileMsg,
-        },
-        common.InvalidArg{
-            Cmd: []string{"action", "create", "actionName", "-A", missingFile},
-            Err: missingFileMsg,
-        },
-        common.InvalidArg{
-            Cmd: []string{"action", "update", "actionName", "-A", missingFile},
-            Err: missingFileMsg,
-        },
-        common.InvalidArg{
-            Cmd: []string{"action", "invoke", "actionName", "-A", missingFile},
-            Err: missingFileMsg,
-        },
-        common.InvalidArg{
-            Cmd: []string{"package", "create", "packageName", "-A", missingFile},
-            Err: missingFileMsg,
-        },
-        common.InvalidArg{
-            Cmd: []string{"package", "update", "packageName", "-A", missingFile},
-            Err: missingFileMsg,
-        },
-        common.InvalidArg{
-            Cmd: []string{"package", "bind", "packageName", "boundPackageName", "-A", missingFile},
-            Err: missingFileMsg,
-        },
-        common.InvalidArg{
-            Cmd: []string{"trigger", "create", "triggerName", "-A", missingFile},
-            Err: missingFileMsg,
-        },
-        common.InvalidArg{
-            Cmd: []string{"trigger", "update", "triggerName", "-A", missingFile},
-            Err: missingFileMsg,
-        },
-        common.InvalidArg{
-            Cmd: []string{"trigger", "fire", "triggerName", "-A", missingFile},
-            Err: missingFileMsg,
-        },
-    }
+func initInvalidArgsMissingInvalidParamsAnno() {
+	invalidArgs = []common.InvalidArg{
+		{
+			Cmd: []string{"action", "create", "actionName", helloFile, "-P", emptyFile},
+			Err: emptyFileMsg,
+		},
+		{
+			Cmd: []string{"action", "update", "actionName", helloFile, "-P", emptyFile},
+			Err: emptyFileMsg,
+		},
+		{
+			Cmd: []string{"action", "invoke", "actionName", "-P", emptyFile},
+			Err: emptyFileMsg,
+		},
+		{
+			Cmd: []string{"action", "create", "actionName", "-P", emptyFile},
+			Err: emptyFileMsg,
+		},
+		{
+			Cmd: []string{"action", "update", "actionName", "-P", emptyFile},
+			Err: emptyFileMsg,
+		},
+		{
+			Cmd: []string{"action", "invoke", "actionName", "-P", emptyFile},
+			Err: emptyFileMsg,
+		},
+		{
+			Cmd: []string{"package", "create", "packageName", "-P", emptyFile},
+			Err: emptyFileMsg,
+		},
+		{
+			Cmd: []string{"package", "update", "packageName", "-P", emptyFile},
+			Err: emptyFileMsg,
+		},
+		{
+			Cmd: []string{"package", "bind", "packageName", "boundPackageName", "-P", emptyFile},
+			Err: emptyFileMsg,
+		},
+		{
+			Cmd: []string{"package", "create", "packageName", "-P", emptyFile},
+			Err: emptyFileMsg,
+		},
+		{
+			Cmd: []string{"package", "update", "packageName", "-P", emptyFile},
+			Err: emptyFileMsg,
+		},
+		{
+			Cmd: []string{"package", "bind", "packageName", "boundPackageName", "-P", emptyFile},
+			Err: emptyFileMsg,
+		},
+		{
+			Cmd: []string{"trigger", "create", "triggerName", "-P", emptyFile},
+			Err: emptyFileMsg,
+		},
+		{
+			Cmd: []string{"trigger", "update", "triggerName", "-P", emptyFile},
+			Err: emptyFileMsg,
+		},
+		{
+			Cmd: []string{"trigger", "fire", "triggerName", "-P", emptyFile},
+			Err: emptyFileMsg,
+		},
+		{
+			Cmd: []string{"trigger", "create", "triggerName", "-P", emptyFile},
+			Err: emptyFileMsg,
+		},
+		{
+			Cmd: []string{"trigger", "update", "triggerName", "-P", emptyFile},
+			Err: emptyFileMsg,
+		},
+		{
+			Cmd: []string{"trigger", "fire", "triggerName", "-P", emptyFile},
+			Err: emptyFileMsg,
+		},
+		{
+			Cmd: []string{"action", "create", "actionName", helloFile, "-A", missingFile},
+			Err: missingFileMsg,
+		},
+		{
+			Cmd: []string{"action", "update", "actionName", helloFile, "-A", missingFile},
+			Err: missingFileMsg,
+		},
+		{
+			Cmd: []string{"action", "invoke", "actionName", "-A", missingFile},
+			Err: missingFileMsg,
+		},
+		{
+			Cmd: []string{"action", "create", "actionName", "-A", missingFile},
+			Err: missingFileMsg,
+		},
+		{
+			Cmd: []string{"action", "update", "actionName", "-A", missingFile},
+			Err: missingFileMsg,
+		},
+		{
+			Cmd: []string{"action", "invoke", "actionName", "-A", missingFile},
+			Err: missingFileMsg,
+		},
+		{
+			Cmd: []string{"package", "create", "packageName", "-A", missingFile},
+			Err: missingFileMsg,
+		},
+		{
+			Cmd: []string{"package", "update", "packageName", "-A", missingFile},
+			Err: missingFileMsg,
+		},
+		{
+			Cmd: []string{"package", "bind", "packageName", "boundPackageName", "-A", missingFile},
+			Err: missingFileMsg,
+		},
+		{
+			Cmd: []string{"trigger", "create", "triggerName", "-A", missingFile},
+			Err: missingFileMsg,
+		},
+		{
+			Cmd: []string{"trigger", "update", "triggerName", "-A", missingFile},
+			Err: missingFileMsg,
+		},
+		{
+			Cmd: []string{"trigger", "fire", "triggerName", "-A", missingFile},
+			Err: missingFileMsg,
+		},
+	}
 }
 
 // Test case to reject commands that are executed with not enough param or annotation arguments.
 func TestRejectCommandsNotEnoughParamsArgs(t *testing.T) {
-    initInvalidArgsNotEnoughParamsArgs()
-    for _, invalidArg := range invalidArgs {
-        stdout, err := wsk.RunCommand(invalidArg.Cmd...)
-        outputString := string(stdout)
-        assert.NotEqual(t, nil, err, "The command should fail to run.")
-        assert.Equal(t, "exit status 1", err.Error(), "The error should be exit status 1.")
-        assert.Contains(t, outputString, invalidArg.Err,
-            "The output of the command does not contain " + invalidArg.Err)
-        assert.Contains(t, outputString, "Run 'wsk --help' for usage",
-            "The output of the command does not contain \"Run 'wsk --help' for usage\".")
-    }
+	initInvalidArgsNotEnoughParamsArgs()
+	for _, invalidArg := range invalidArgs {
+		stdout, err := wsk.RunCommand(invalidArg.Cmd...)
+		outputString := string(stdout)
+		assert.NotEqual(t, nil, err, "The command should fail to run.")
+		assert.Equal(t, "exit status 1", err.Error(), "The error should be exit status 1.")
+		assert.Contains(t, outputString, invalidArg.Err,
+			"The output of the command does not contain "+invalidArg.Err)
+		assert.Contains(t, outputString, "Run 'wsk --help' for usage",
+			"The output of the command does not contain \"Run 'wsk --help' for usage\".")
+	}
 }
 
 // Test case to reject commands that are executed with a missing or invalid parameter or annotation file.
 func TestRejectCommandsMissingIvalidParamsAnno(t *testing.T) {
-    initInvalidArgsMissingInvalidParamsAnno()
-    for _, invalidArg := range invalidArgs {
-        stdout, err := wsk.RunCommand(invalidArg.Cmd...)
-        outputString := string(stdout)
-        assert.NotEqual(t, nil, err, "The command should fail to run.")
-        assert.Equal(t, "exit status 2", err.Error(), "The error should be exit status 1.")
-        assert.Contains(t, outputString, invalidArg.Err,
-            "The output of the command does not contain " + invalidArg.Err)
-        assert.Contains(t, outputString, "Run 'wsk --help' for usage",
-            "The output of the command does not contain \"Run 'wsk --help' for usage\".")
-    }
+	initInvalidArgsMissingInvalidParamsAnno()
+	for _, invalidArg := range invalidArgs {
+		stdout, err := wsk.RunCommand(invalidArg.Cmd...)
+		outputString := string(stdout)
+		assert.NotEqual(t, nil, err, "The command should fail to run.")
+		assert.Equal(t, "exit status 2", err.Error(), "The error should be exit status 1.")
+		assert.Contains(t, outputString, invalidArg.Err,
+			"The output of the command does not contain "+invalidArg.Err)
+		assert.Contains(t, outputString, "Run 'wsk --help' for usage",
+			"The output of the command does not contain \"Run 'wsk --help' for usage\".")
+	}
 }
diff --git a/tests/src/integration/common/utils.go b/tests/src/integration/common/utils.go
index c24b23e..0d98af4 100644
--- a/tests/src/integration/common/utils.go
+++ b/tests/src/integration/common/utils.go
@@ -17,104 +17,104 @@
 package common
 
 import (
-    "fmt"
-    "os"
-    "unicode"
-    "io"
-    "path"
-    "runtime"
-    "strings"
+	"fmt"
+	"io"
+	"os"
+	"path"
+	"runtime"
+	"strings"
+	"unicode"
 )
 
 func checkError(err error) {
-    if err != nil {
-        fmt.Println(err.Error())
-        os.Exit(0)
-    }
+	if err != nil {
+		fmt.Println(err.Error())
+		os.Exit(0)
+	}
 }
 
 func CreateFile(filePath string) {
-    var _, err = os.Stat(filePath)
+	var _, err = os.Stat(filePath)
 
-    if os.IsNotExist(err) {
-        var file, err = os.Create(filePath)
-        checkError(err)
-        defer file.Close()
-    }
-    return
+	if os.IsNotExist(err) {
+		var file, err = os.Create(filePath)
+		checkError(err)
+		defer file.Close()
+	}
+	return
 }
 
 func ReadFile(filePath string) string {
-    var file, err = os.OpenFile(filePath, os.O_RDWR, 0644)
-    checkError(err)
-    defer file.Close()
+	var file, err = os.OpenFile(filePath, os.O_RDWR, 0644)
+	checkError(err)
+	defer file.Close()
 
-    var text = make([]byte, 1024)
-    for {
-        n, err := file.Read(text)
-        if err != io.EOF {
-            checkError(err)
-        }
-        if n == 0 {
-            break
-        }
-    }
-    return string(text)
+	var text = make([]byte, 1024)
+	for {
+		n, err := file.Read(text)
+		if err != io.EOF {
+			checkError(err)
+		}
+		if n == 0 {
+			break
+		}
+	}
+	return string(text)
 }
 
 func WriteFile(filePath string, lines []string) {
-    var file, err = os.OpenFile(filePath, os.O_RDWR, 0644)
-    checkError(err)
-    defer file.Close()
+	var file, err = os.OpenFile(filePath, os.O_RDWR, 0644)
+	checkError(err)
+	defer file.Close()
 
-    for _, each := range lines {
-        _, err = file.WriteString(each + "\n")
-        checkError(err)
-    }
+	for _, each := range lines {
+		_, err = file.WriteString(each + "\n")
+		checkError(err)
+	}
 
-    err = file.Sync()
-    checkError(err)
+	err = file.Sync()
+	checkError(err)
 }
 
 func DeleteFile(filePath string) {
-    var err = os.Remove(filePath)
-    checkError(err)
+	var err = os.Remove(filePath)
+	checkError(err)
 }
 
 func RemoveRedundentSpaces(in string) (out string) {
-    white := false
-    for _, c := range in {
-        if unicode.IsSpace(c) {
-            if !white {
-                out = out + " "
-            }
-            white = true
-        } else {
-            out = out + string(c)
-            white = false
-        }
-    }
-    out = strings.TrimSpace(out)
-    return
+	white := false
+	for _, c := range in {
+		if unicode.IsSpace(c) {
+			if !white {
+				out = out + " "
+			}
+			white = true
+		} else {
+			out = out + string(c)
+			white = false
+		}
+	}
+	out = strings.TrimSpace(out)
+	return
 }
 
 func GetTestActionFilename(fileName string) string {
-    return GetRepoPath() + "/tests/src/dat/" + fileName
+	return GetRepoPath() + "/tests/src/dat/" + fileName
 }
 
 func GetRepoPath() string {
-    return os.Getenv("GOPATH") + "/src/github.com/apache/incubator-openwhisk-cli"
+	return os.Getenv("GOPATH") + "/src/github.com/apache/incubator-openwhisk-cli"
 }
 
 func GetBinPath() string {
-    _, goFileName, _, _ := runtime.Caller(1)
-    //  Yes, this assumes we're using the official build script.  I haven't
-    //  figured out a better approach yet given the panoply of options.
-    //  Maybe some sort of Go search path?
-    return path.Join(path.Dir(goFileName), "../../../../build")
+	_, goFileName, _, _ := runtime.Caller(1)
+	//  Yes, this assumes we're using the official build script.  I haven't
+	//  figured out a better approach yet given the panoply of options.
+	//  Maybe some sort of Go search path?
+	return path.Join(path.Dir(goFileName), "../../../../build")
 }
 
 type InvalidArg struct {
-    Cmd []string
-    Err string
+	Cmd []string
+	Err string
 }
diff --git a/tests/src/integration/common/wsk.go b/tests/src/integration/common/wsk.go
index 4af89e1..d6481dc 100644
--- a/tests/src/integration/common/wsk.go
+++ b/tests/src/integration/common/wsk.go
@@ -17,55 +17,55 @@
 package common
 
 import (
-    "os"
-    "os/exec"
-    "github.com/apache/incubator-openwhisk-client-go/whisk"
+	"github.com/apache/incubator-openwhisk-client-go/whisk"
+	"os"
+	"os/exec"
 )
 
 const cmd = "wsk"
 const arg = "-i"
 
 type Wsk struct {
-    Path string
-    Arg []string
-    Dir string
-    Wskprops *whisk.Wskprops
+	Path     string
+	Arg      []string
+	Dir      string
+	Wskprops *whisk.Wskprops
 }
 
 func NewWsk() *Wsk {
-    return NewWskWithPath(GetBinPath())
+	return NewWskWithPath(GetBinPath())
 }
 
 func NewWskWithPath(path string) *Wsk {
-    var dep Wsk
-    dep.Path = cmd
-    dep.Arg = []string{arg}
-    dep.Dir = path
-    pi := whisk.PropertiesImp{
-        OsPackage: whisk.OSPackageImp{},
-    }
-    dep.Wskprops, _ = whisk.GetDefaultWskProp(pi)
-    return &dep
+	var dep Wsk
+	dep.Path = cmd
+	dep.Arg = []string{arg}
+	dep.Dir = path
+	pi := whisk.PropertiesImp{
+		OsPackage: whisk.OSPackageImp{},
+	}
+	dep.Wskprops, _ = whisk.GetDefaultWskProp(pi)
+	return &dep
 }
 
-func (wsk *Wsk)Exists() bool {
-    _, err := os.Stat(wsk.Dir + "/" + wsk.Path);
-    if err == nil {
-        return true
-    } else {
-        return false
-    }
+func (wsk *Wsk) Exists() bool {
+	_, err := os.Stat(wsk.Dir + "/" + wsk.Path)
+	if err == nil {
+		return true
+	} else {
+		return false
+	}
 }
 
-func (wsk *Wsk)RunCommand(s ...string) ([]byte, error) {
-    cs := wsk.Arg
-    cs = append(cs, s...)
-    command := exec.Command(wsk.Dir + "/" + wsk.Path, cs...)
-    command.Dir = wsk.Dir
-    return command.CombinedOutput()
+func (wsk *Wsk) RunCommand(s ...string) ([]byte, error) {
+	cs := wsk.Arg
+	cs = append(cs, s...)
+	command := exec.Command(wsk.Dir+"/"+wsk.Path, cs...)
+	command.Dir = wsk.Dir
+	return command.CombinedOutput()
 }
 
-func (wsk *Wsk)ListNamespaces() ([]byte, error) {
-    return wsk.RunCommand("namespace", "list", "--apihost", wsk.Wskprops.APIHost,
-        "--auth", wsk.Wskprops.AuthKey)
+func (wsk *Wsk) ListNamespaces() ([]byte, error) {
+	return wsk.RunCommand("namespace", "list", "--apihost", wsk.Wskprops.APIHost,
+		"--auth", wsk.Wskprops.AuthKey)
 }
diff --git a/tests/src/integration/integration_test.go b/tests/src/integration/integration_test.go
index ab368a2..f6245c9 100644
--- a/tests/src/integration/integration_test.go
+++ b/tests/src/integration/integration_test.go
@@ -20,12 +20,12 @@
 package tests
 
 import (
-    "testing"
-    "github.com/stretchr/testify/assert"
-    "github.com/apache/incubator-openwhisk-cli/tests/src/integration/common"
-    "os"
-    "strings"
-    "fmt"
+	"fmt"
+	"github.com/apache/incubator-openwhisk-cli/tests/src/integration/common"
+	"github.com/stretchr/testify/assert"
+	"os"
+	"strings"
+	"testing"
 )
 
 var invalidArgs []common.InvalidArg
@@ -52,280 +52,280 @@ var apiListReqMsg = "Optional parameters are: API base path (or API name), API r
 var invalidShared = "Cannot use value '" + invalidArg + "' for shared"
 
 func initInvalidArgs() {
-    invalidArgs = []common.InvalidArg{
-        common.InvalidArg {
-            Cmd: []string{"action", "create"},
-            Err: tooFewArgsMsg + " " + actionNameActionReqMsg,
-        },
-        common.InvalidArg {
-            Cmd: []string{"action", "create", "someAction"},
-            Err: tooFewArgsMsg + " " + actionNameActionReqMsg,
-        },
-        common.InvalidArg {
-            Cmd: []string{"action", "create", "actionName", "artifactName", invalidArg},
-            Err: tooManyArgsMsg + invalidArg + ".",
-        },
-        common.InvalidArg {
-            Cmd: []string{"action", "update"},
-            Err: tooFewArgsMsg + " " + actionNameReqMsg + " " + actionOptMsg,
-        },
-        common.InvalidArg {
-            Cmd: []string{"action", "update", "actionName", "artifactName", invalidArg},
-            Err: tooManyArgsMsg + invalidArg + ". " + actionNameReqMsg + " " + actionOptMsg,
-        },
-        common.InvalidArg {
-            Cmd: []string{"action", "delete"},
-            Err: tooFewArgsMsg + " " + actionNameReqMsg,
-        },
-        common.InvalidArg {
-            Cmd: []string{"action", "delete", "actionName", invalidArg},
-            Err: tooManyArgsMsg + invalidArg + ".",
-        },
-        common.InvalidArg {
-            Cmd: []string{"action", "get"},
-            Err: tooFewArgsMsg + " " + actionNameReqMsg,
-        },
-        common.InvalidArg {
-            Cmd: []string{"action", "get", "actionName", "namespace", invalidArg},
-            Err: tooManyArgsMsg + invalidArg + ".",
-        },
-        common.InvalidArg {
-            Cmd: []string{"action", "list", "namespace", invalidArg},
-            Err: tooManyArgsMsg + invalidArg + ". " + optNamespaceMsg,
-        },
-        common.InvalidArg {
-            Cmd: []string{"action", "invoke"},
-            Err: tooFewArgsMsg + " " + actionNameReqMsg,
-        },
-        common.InvalidArg {
-            Cmd: []string{"action", "invoke", "actionName", invalidArg},
-            Err: tooManyArgsMsg + invalidArg + ".",
-        },
-        common.InvalidArg {
-            Cmd: []string{"activation", "list", "namespace", invalidArg},
-            Err: tooManyArgsMsg + invalidArg + ". " + optNamespaceMsg,
-        },
-        common.InvalidArg {
-            Cmd: []string{"activation", "get"},
-            Err: tooFewArgsMsg + " " + activationIdReq,
-        },
-        common.InvalidArg {
-            Cmd: []string{"activation", "get", "activationID", "namespace", invalidArg},
-            Err: tooManyArgsMsg + invalidArg + ".",
-        },
-        common.InvalidArg {
-            Cmd: []string{"activation", "logs"},
-            Err: tooFewArgsMsg + " " + activationIdReq,
-        },
-        common.InvalidArg {
-            Cmd: []string{"activation", "logs", "activationID", invalidArg},
-            Err: tooManyArgsMsg + invalidArg + ".",
-        },
+	invalidArgs = []common.InvalidArg{
+		{
+			Cmd: []string{"action", "create"},
+			Err: tooFewArgsMsg + " " + actionNameActionReqMsg,
+		},
+		{
+			Cmd: []string{"action", "create", "someAction"},
+			Err: tooFewArgsMsg + " " + actionNameActionReqMsg,
+		},
+		{
+			Cmd: []string{"action", "create", "actionName", "artifactName", invalidArg},
+			Err: tooManyArgsMsg + invalidArg + ".",
+		},
+		{
+			Cmd: []string{"action", "update"},
+			Err: tooFewArgsMsg + " " + actionNameReqMsg + " " + actionOptMsg,
+		},
+		{
+			Cmd: []string{"action", "update", "actionName", "artifactName", invalidArg},
+			Err: tooManyArgsMsg + invalidArg + ". " + actionNameReqMsg + " " + actionOptMsg,
+		},
+		{
+			Cmd: []string{"action", "delete"},
+			Err: tooFewArgsMsg + " " + actionNameReqMsg,
+		},
+		{
+			Cmd: []string{"action", "delete", "actionName", invalidArg},
+			Err: tooManyArgsMsg + invalidArg + ".",
+		},
+		{
+			Cmd: []string{"action", "get"},
+			Err: tooFewArgsMsg + " " + actionNameReqMsg,
+		},
+		{
+			Cmd: []string{"action", "get", "actionName", "namespace", invalidArg},
+			Err: tooManyArgsMsg + invalidArg + ".",
+		},
+		{
+			Cmd: []string{"action", "list", "namespace", invalidArg},
+			Err: tooManyArgsMsg + invalidArg + ". " + optNamespaceMsg,
+		},
+		{
+			Cmd: []string{"action", "invoke"},
+			Err: tooFewArgsMsg + " " + actionNameReqMsg,
+		},
+		{
+			Cmd: []string{"action", "invoke", "actionName", invalidArg},
+			Err: tooManyArgsMsg + invalidArg + ".",
+		},
+		{
+			Cmd: []string{"activation", "list", "namespace", invalidArg},
+			Err: tooManyArgsMsg + invalidArg + ". " + optNamespaceMsg,
+		},
+		{
+			Cmd: []string{"activation", "get"},
+			Err: tooFewArgsMsg + " " + activationIdReq,
+		},
+		{
+			Cmd: []string{"activation", "get", "activationID", "namespace", invalidArg},
+			Err: tooManyArgsMsg + invalidArg + ".",
+		},
+		{
+			Cmd: []string{"activation", "logs"},
+			Err: tooFewArgsMsg + " " + activationIdReq,
+		},
+		{
+			Cmd: []string{"activation", "logs", "activationID", invalidArg},
+			Err: tooManyArgsMsg + invalidArg + ".",
+		},
 
-        common.InvalidArg {
-            Cmd: []string{"activation", "result"},
-            Err: tooFewArgsMsg + " " + activationIdReq,
-        },
-        common.InvalidArg {
-            Cmd: []string{"activation", "result", "activationID", invalidArg},
-            Err: tooManyArgsMsg + invalidArg + ".",
-        },
-        common.InvalidArg {
-            Cmd: []string{"activation", "poll", "activationID", invalidArg},
-            Err: tooManyArgsMsg + invalidArg + ". " + optNamespaceMsg,
-        },
-        common.InvalidArg {
-            Cmd: []string{"namespace", "list", invalidArg},
-            Err: tooManyArgsMsg + invalidArg + ". " + noArgsReqMsg,
-        },
-        common.InvalidArg {
-            Cmd: []string{"namespace", "get", invalidArg},
-            Err: tooManyArgsMsg + invalidArg + ". " + noArgsReqMsg,
-        },
-        common.InvalidArg {
-            Cmd: []string{"package", "create"},
-            Err: tooFewArgsMsg + " " + packageNameReqMsg,
-        },
-        common.InvalidArg {
-            Cmd: []string{"package", "create", "packageName", invalidArg},
-            Err: tooManyArgsMsg + invalidArg + ".",
-        },
-        common.InvalidArg {
-            Cmd: []string{"package", "create", "packageName", "--shared", invalidArg},
-            Err: invalidShared,
-        },
-        common.InvalidArg {
-            Cmd: []string{"package", "update"},
-            Err: tooFewArgsMsg + " " + packageNameReqMsg,
-        },
-        common.InvalidArg {
-            Cmd: []string{"package", "update", "packageName", invalidArg},
-            Err: tooManyArgsMsg + invalidArg + ".",
-        },
-        common.InvalidArg {
-            Cmd: []string{"package", "update", "packageName", "--shared", invalidArg},
-            Err: invalidShared,
-        },
-        common.InvalidArg {
-            Cmd: []string{"package", "get"},
-            Err: tooFewArgsMsg + " " +packageNameReqMsg,
-        },
-        common.InvalidArg {
-            Cmd: []string{"package", "get", "packageName", "namespace", invalidArg},
-            Err: tooManyArgsMsg + invalidArg + ".",
-        },
-        common.InvalidArg {
-            Cmd: []string{"package", "bind"},
-            Err: tooFewArgsMsg + " " + packageNameBindingReqMsg,
-        },
-        common.InvalidArg {
-            Cmd: []string{"package", "bind", "packageName"},
-            Err: tooFewArgsMsg + " " +packageNameBindingReqMsg,
-        },
-        common.InvalidArg {
-            Cmd: []string{"package", "bind", "packageName", "bindingName", invalidArg},
-            Err: tooManyArgsMsg + invalidArg + ".",
-        },
-        common.InvalidArg {
-            Cmd: []string{"package", "list", "namespace", invalidArg},
-            Err: tooManyArgsMsg + invalidArg + ". " + optNamespaceMsg,
-        },
-        common.InvalidArg {
-            Cmd: []string{"package", "delete"},
-            Err: tooFewArgsMsg + " " + packageNameReqMsg,
-        },
-        common.InvalidArg {
-            Cmd: []string{"package", "delete", "namespace", invalidArg},
-            Err: tooManyArgsMsg + invalidArg + ".",
-        },
-        common.InvalidArg {
-            Cmd: []string{"package", "refresh", "namespace", invalidArg},
-            Err: tooManyArgsMsg + invalidArg + ". " + optNamespaceMsg,
-        },
-        common.InvalidArg {
-            Cmd: []string{"rule", "enable"},
-            Err: tooFewArgsMsg + " " + ruleNameReqMsg,
-        },
-        common.InvalidArg {
-            Cmd: []string{"rule", "enable", "ruleName", invalidArg},
-            Err: tooManyArgsMsg + invalidArg + ".",
-        },
-        common.InvalidArg {
-            Cmd: []string{"rule", "disable"},
-            Err: tooFewArgsMsg + " " + ruleNameReqMsg,
-        },
-        common.InvalidArg {
-            Cmd: []string{"rule", "disable", "ruleName", invalidArg},
-            Err: tooManyArgsMsg + invalidArg + ".",
-        },
-        common.InvalidArg {
-            Cmd: []string{"rule", "status"},
-            Err: tooFewArgsMsg + " " + ruleNameReqMsg,
-        },
-        common.InvalidArg {
-            Cmd: []string{"rule", "status", "ruleName", invalidArg},
-            Err: tooManyArgsMsg + invalidArg + ".",
-        },
-        common.InvalidArg {
-            Cmd: []string{"rule", "create"},
-            Err: tooFewArgsMsg + " " + ruleTriggerActionReqMsg,
-        },
-        common.InvalidArg {
-            Cmd: []string{"rule", "create", "ruleName"},
-            Err: tooFewArgsMsg + " " + ruleTriggerActionReqMsg,
-        },
-        common.InvalidArg {
-            Cmd: []string{"rule", "create", "ruleName", "triggerName"},
-            Err: tooFewArgsMsg + " " + ruleTriggerActionReqMsg,
-        },
-        common.InvalidArg {
-            Cmd: []string{"rule", "create", "ruleName", "triggerName", "actionName", invalidArg},
-            Err: tooManyArgsMsg + invalidArg + ".",
-        },
+		{
+			Cmd: []string{"activation", "result"},
+			Err: tooFewArgsMsg + " " + activationIdReq,
+		},
+		{
+			Cmd: []string{"activation", "result", "activationID", invalidArg},
+			Err: tooManyArgsMsg + invalidArg + ".",
+		},
+		{
+			Cmd: []string{"activation", "poll", "activationID", invalidArg},
+			Err: tooManyArgsMsg + invalidArg + ". " + optNamespaceMsg,
+		},
+		{
+			Cmd: []string{"namespace", "list", invalidArg},
+			Err: tooManyArgsMsg + invalidArg + ". " + noArgsReqMsg,
+		},
+		{
+			Cmd: []string{"namespace", "get", invalidArg},
+			Err: tooManyArgsMsg + invalidArg + ". " + noArgsReqMsg,
+		},
+		{
+			Cmd: []string{"package", "create"},
+			Err: tooFewArgsMsg + " " + packageNameReqMsg,
+		},
+		{
+			Cmd: []string{"package", "create", "packageName", invalidArg},
+			Err: tooManyArgsMsg + invalidArg + ".",
+		},
+		{
+			Cmd: []string{"package", "create", "packageName", "--shared", invalidArg},
+			Err: invalidShared,
+		},
+		{
+			Cmd: []string{"package", "update"},
+			Err: tooFewArgsMsg + " " + packageNameReqMsg,
+		},
+		{
+			Cmd: []string{"package", "update", "packageName", invalidArg},
+			Err: tooManyArgsMsg + invalidArg + ".",
+		},
+		{
+			Cmd: []string{"package", "update", "packageName", "--shared", invalidArg},
+			Err: invalidShared,
+		},
+		{
+			Cmd: []string{"package", "get"},
+			Err: tooFewArgsMsg + " " + packageNameReqMsg,
+		},
+		{
+			Cmd: []string{"package", "get", "packageName", "namespace", invalidArg},
+			Err: tooManyArgsMsg + invalidArg + ".",
+		},
+		{
+			Cmd: []string{"package", "bind"},
+			Err: tooFewArgsMsg + " " + packageNameBindingReqMsg,
+		},
+		{
+			Cmd: []string{"package", "bind", "packageName"},
+			Err: tooFewArgsMsg + " " + packageNameBindingReqMsg,
+		},
+		{
+			Cmd: []string{"package", "bind", "packageName", "bindingName", invalidArg},
+			Err: tooManyArgsMsg + invalidArg + ".",
+		},
+		{
+			Cmd: []string{"package", "list", "namespace", invalidArg},
+			Err: tooManyArgsMsg + invalidArg + ". " + optNamespaceMsg,
+		},
+		{
+			Cmd: []string{"package", "delete"},
+			Err: tooFewArgsMsg + " " + packageNameReqMsg,
+		},
+		{
+			Cmd: []string{"package", "delete", "namespace", invalidArg},
+			Err: tooManyArgsMsg + invalidArg + ".",
+		},
+		{
+			Cmd: []string{"package", "refresh", "namespace", invalidArg},
+			Err: tooManyArgsMsg + invalidArg + ". " + optNamespaceMsg,
+		},
+		{
+			Cmd: []string{"rule", "enable"},
+			Err: tooFewArgsMsg + " " + ruleNameReqMsg,
+		},
+		{
+			Cmd: []string{"rule", "enable", "ruleName", invalidArg},
+			Err: tooManyArgsMsg + invalidArg + ".",
+		},
+		{
+			Cmd: []string{"rule", "disable"},
+			Err: tooFewArgsMsg + " " + ruleNameReqMsg,
+		},
+		{
+			Cmd: []string{"rule", "disable", "ruleName", invalidArg},
+			Err: tooManyArgsMsg + invalidArg + ".",
+		},
+		{
+			Cmd: []string{"rule", "status"},
+			Err: tooFewArgsMsg + " " + ruleNameReqMsg,
+		},
+		{
+			Cmd: []string{"rule", "status", "ruleName", invalidArg},
+			Err: tooManyArgsMsg + invalidArg + ".",
+		},
+		{
+			Cmd: []string{"rule", "create"},
+			Err: tooFewArgsMsg + " " + ruleTriggerActionReqMsg,
+		},
+		{
+			Cmd: []string{"rule", "create", "ruleName"},
+			Err: tooFewArgsMsg + " " + ruleTriggerActionReqMsg,
+		},
+		{
+			Cmd: []string{"rule", "create", "ruleName", "triggerName"},
+			Err: tooFewArgsMsg + " " + ruleTriggerActionReqMsg,
+		},
+		{
+			Cmd: []string{"rule", "create", "ruleName", "triggerName", "actionName", invalidArg},
+			Err: tooManyArgsMsg + invalidArg + ".",
+		},
 
-        common.InvalidArg {
-            Cmd: []string{"rule", "update"},
-            Err: tooFewArgsMsg + " " + ruleTriggerActionReqMsg,
-        },
-        common.InvalidArg {
-            Cmd: []string{"rule", "update", "ruleName"},
-            Err: tooFewArgsMsg + " " + ruleTriggerActionReqMsg,
-        },
-        common.InvalidArg {
-            Cmd: []string{"rule", "update", "ruleName", "triggerName"},
-            Err: tooFewArgsMsg + " " + ruleTriggerActionReqMsg,
-        },
-        common.InvalidArg {
-            Cmd: []string{"rule", "update", "ruleName", "triggerName", "actionName", invalidArg},
-            Err: tooManyArgsMsg + invalidArg + ".",
-        },
-        common.InvalidArg {
-            Cmd: []string{"rule", "get"},
-            Err: tooFewArgsMsg + " " + ruleNameReqMsg,
-        },
-        common.InvalidArg {
-            Cmd: []string{"rule", "get", "ruleName", "namespace", invalidArg},
-            Err: tooManyArgsMsg + invalidArg + ".",
-        },
-        common.InvalidArg {
-            Cmd: []string{"rule", "delete"},
-            Err: tooFewArgsMsg + " " + ruleNameReqMsg,
-        },
-        common.InvalidArg {
-            Cmd: []string{"rule", "delete", "ruleName", invalidArg},
-            Err: tooManyArgsMsg + invalidArg + ".",
-        },
-        common.InvalidArg {
-            Cmd: []string{"rule", "list", "namespace", invalidArg},
-            Err: tooManyArgsMsg + invalidArg + ". " + optNamespaceMsg,
-        },
+		{
+			Cmd: []string{"rule", "update"},
+			Err: tooFewArgsMsg + " " + ruleTriggerActionReqMsg,
+		},
+		{
+			Cmd: []string{"rule", "update", "ruleName"},
+			Err: tooFewArgsMsg + " " + ruleTriggerActionReqMsg,
+		},
+		{
+			Cmd: []string{"rule", "update", "ruleName", "triggerName"},
+			Err: tooFewArgsMsg + " " + ruleTriggerActionReqMsg,
+		},
+		{
+			Cmd: []string{"rule", "update", "ruleName", "triggerName", "actionName", invalidArg},
+			Err: tooManyArgsMsg + invalidArg + ".",
+		},
+		{
+			Cmd: []string{"rule", "get"},
+			Err: tooFewArgsMsg + " " + ruleNameReqMsg,
+		},
+		{
+			Cmd: []string{"rule", "get", "ruleName", "namespace", invalidArg},
+			Err: tooManyArgsMsg + invalidArg + ".",
+		},
+		{
+			Cmd: []string{"rule", "delete"},
+			Err: tooFewArgsMsg + " " + ruleNameReqMsg,
+		},
+		{
+			Cmd: []string{"rule", "delete", "ruleName", invalidArg},
+			Err: tooManyArgsMsg + invalidArg + ".",
+		},
+		{
+			Cmd: []string{"rule", "list", "namespace", invalidArg},
+			Err: tooManyArgsMsg + invalidArg + ". " + optNamespaceMsg,
+		},
 
-        common.InvalidArg {
-            Cmd: []string{"trigger", "fire"},
-            Err: tooFewArgsMsg + " " + triggerNameReqMsg + " " + optPayloadMsg,
-        },
-        common.InvalidArg {
-            Cmd: []string{"trigger", "fire", "triggerName", "triggerPayload", invalidArg},
-            Err: tooManyArgsMsg + invalidArg + ". " + triggerNameReqMsg + " " +optPayloadMsg,
-        },
-        common.InvalidArg {
-            Cmd: []string{"trigger", "create"},
-            Err: tooFewArgsMsg + " " + triggerNameReqMsg,
-        },
-        common.InvalidArg {
-            Cmd: []string{"trigger", "create", "triggerName", invalidArg},
-            Err: tooManyArgsMsg + invalidArg + ".",
-        },
-        common.InvalidArg {
-            Cmd: []string{"trigger", "update"},
-            Err: tooFewArgsMsg + " " + triggerNameReqMsg,
-        },
-        common.InvalidArg {
-            Cmd: []string{"trigger", "update", "triggerName", invalidArg},
-            Err: tooManyArgsMsg + invalidArg + ".",
-        },
+		{
+			Cmd: []string{"trigger", "fire"},
+			Err: tooFewArgsMsg + " " + triggerNameReqMsg + " " + optPayloadMsg,
+		},
+		{
+			Cmd: []string{"trigger", "fire", "triggerName", "triggerPayload", invalidArg},
+			Err: tooManyArgsMsg + invalidArg + ". " + triggerNameReqMsg + " " + optPayloadMsg,
+		},
+		{
+			Cmd: []string{"trigger", "create"},
+			Err: tooFewArgsMsg + " " + triggerNameReqMsg,
+		},
+		{
+			Cmd: []string{"trigger", "create", "triggerName", invalidArg},
+			Err: tooManyArgsMsg + invalidArg + ".",
+		},
+		{
+			Cmd: []string{"trigger", "update"},
+			Err: tooFewArgsMsg + " " + triggerNameReqMsg,
+		},
+		{
+			Cmd: []string{"trigger", "update", "triggerName", invalidArg},
+			Err: tooManyArgsMsg + invalidArg + ".",
+		},
 
-        common.InvalidArg {
-            Cmd: []string{"trigger", "get"},
-            Err: tooFewArgsMsg + " " + triggerNameReqMsg,
-        },
-        common.InvalidArg {
-            Cmd: []string{"trigger", "get", "triggerName", "namespace", invalidArg},
-            Err: tooManyArgsMsg + invalidArg + ".",
-        },
-        common.InvalidArg {
-            Cmd: []string{"trigger", "delete"},
-            Err: tooFewArgsMsg + " " + triggerNameReqMsg,
-        },
-        common.InvalidArg {
-            Cmd: []string{"trigger", "delete", "triggerName", invalidArg},
-            Err: tooManyArgsMsg + invalidArg + ".",
-        },
-        common.InvalidArg {
-            Cmd: []string{"trigger", "list", "namespace", invalidArg},
-            Err: tooManyArgsMsg + invalidArg + ". " + optNamespaceMsg,
-        },
-    }
+		{
+			Cmd: []string{"trigger", "get"},
+			Err: tooFewArgsMsg + " " + triggerNameReqMsg,
+		},
+		{
+			Cmd: []string{"trigger", "get", "triggerName", "namespace", invalidArg},
+			Err: tooManyArgsMsg + invalidArg + ".",
+		},
+		{
+			Cmd: []string{"trigger", "delete"},
+			Err: tooFewArgsMsg + " " + triggerNameReqMsg,
+		},
+		{
+			Cmd: []string{"trigger", "delete", "triggerName", invalidArg},
+			Err: tooManyArgsMsg + invalidArg + ".",
+		},
+		{
+			Cmd: []string{"trigger", "list", "namespace", invalidArg},
+			Err: tooManyArgsMsg + invalidArg + ". " + optNamespaceMsg,
+		},
+	}
 }
 
 var wsk *common.Wsk = common.NewWsk()
@@ -333,262 +333,262 @@ var tmpProp = common.GetRepoPath() + "/wskprops.tmp"
 
 // Test case to set apihost, auth, and namespace.
 func TestSetAPIHostAuthNamespace(t *testing.T) {
-    common.CreateFile(tmpProp)
-    common.WriteFile(tmpProp, []string{})
+	common.CreateFile(tmpProp)
+	common.WriteFile(tmpProp, []string{})
 
-    os.Setenv("WSK_CONFIG_FILE", tmpProp)
-    assert.Equal(t, os.Getenv("WSK_CONFIG_FILE"), tmpProp, "The environment variable WSK_CONFIG_FILE has not been set.")
+	os.Setenv("WSK_CONFIG_FILE", tmpProp)
+	assert.Equal(t, os.Getenv("WSK_CONFIG_FILE"), tmpProp, "The environment variable WSK_CONFIG_FILE has not been set.")
 
-    namespace, _ := wsk.ListNamespaces()
-    namespaces := strings.Split(strings.TrimSpace(string(namespace)), "\n")
-    expectedNamespace := string(namespaces[len(namespaces) - 1])
-    fmt.Println(wsk.Wskprops.APIHost)
-    if (wsk.Wskprops.APIHost != "" && wsk.Wskprops.APIHost != "") {
-        stdout, err := wsk.RunCommand("property", "set", "--apihost", wsk.Wskprops.APIHost,
-            "--auth", wsk.Wskprops.AuthKey, "--namespace", expectedNamespace)
-        ouputString := string(stdout)
-        assert.Equal(t, nil, err, "The command property set --apihost --auth --namespace failed to run.")
-        assert.Contains(t, ouputString, "ok: whisk auth set. Run 'wsk property get --auth' to see the new value.",
-            "The output of the command property set --apihost --auth --namespace does not contain \"whisk auth set\".")
-        assert.Contains(t, ouputString, "ok: whisk API host set to " + wsk.Wskprops.APIHost,
-            "The output of the command property set --apihost --auth --namespace does not contain \"whisk API host set\".")
-        assert.Contains(t, ouputString, "ok: whisk namespace set to " + expectedNamespace,
-            "The output of the command property set --apihost --auth --namespace does not contain \"whisk namespace set\".")
-    }
-    common.DeleteFile(tmpProp)
+	namespace, _ := wsk.ListNamespaces()
+	namespaces := strings.Split(strings.TrimSpace(string(namespace)), "\n")
+	expectedNamespace := string(namespaces[len(namespaces)-1])
+	fmt.Println(wsk.Wskprops.APIHost)
+	if wsk.Wskprops.APIHost != "" && wsk.Wskprops.APIHost != "" {
+		stdout, err := wsk.RunCommand("property", "set", "--apihost", wsk.Wskprops.APIHost,
+			"--auth", wsk.Wskprops.AuthKey, "--namespace", expectedNamespace)
+		ouputString := string(stdout)
+		assert.Equal(t, nil, err, "The command property set --apihost --auth --namespace failed to run.")
+		assert.Contains(t, ouputString, "ok: whisk auth set. Run 'wsk property get --auth' to see the new value.",
+			"The output of the command property set --apihost --auth --namespace does not contain \"whisk auth set\".")
+		assert.Contains(t, ouputString, "ok: whisk API host set to "+wsk.Wskprops.APIHost,
+			"The output of the command property set --apihost --auth --namespace does not contain \"whisk API host set\".")
+		assert.Contains(t, ouputString, "ok: whisk namespace set to "+expectedNamespace,
+			"The output of the command property set --apihost --auth --namespace does not contain \"whisk namespace set\".")
+	}
+	common.DeleteFile(tmpProp)
 }
 
 // Test case to show api build version using property file.
 func TestShowAPIBuildVersion(t *testing.T) {
-    common.CreateFile(tmpProp)
+	common.CreateFile(tmpProp)
 
-    os.Setenv("WSK_CONFIG_FILE", tmpProp)
-    assert.Equal(t, os.Getenv("WSK_CONFIG_FILE"), tmpProp, "The environment variable WSK_CONFIG_FILE has not been set.")
+	os.Setenv("WSK_CONFIG_FILE", tmpProp)
+	assert.Equal(t, os.Getenv("WSK_CONFIG_FILE"), tmpProp, "The environment variable WSK_CONFIG_FILE has not been set.")
 
-    stdout, err := wsk.RunCommand("property", "set", "--apihost", wsk.Wskprops.APIHost,
-        "--apiversion", wsk.Wskprops.Apiversion)
-    assert.Equal(t, nil, err, "The command property set --apihost --apiversion failed to run.")
-    stdout, err = wsk.RunCommand("property", "get", "-i", "--apibuild")
-    assert.Equal(t, nil, err, "The command property get -i --apibuild failed to run.")
-    println(common.RemoveRedundentSpaces(string(stdout)))
-    assert.NotContains(t, common.RemoveRedundentSpaces(string(stdout)), "whisk API build Unknown",
-        "The output of the command property get --apibuild does not contain \"whisk API build Unknown\".")
-    assert.NotContains(t, common.RemoveRedundentSpaces(string(stdout)), "Unable to obtain API build information",
-        "The output of the command property get --apibuild does not contain \"Unable to obtain API build information\".")
-    assert.Contains(t, common.RemoveRedundentSpaces(string(stdout)), "whisk API build 20",
-        "The output of the command property get --apibuild does not contain \"whisk API build 20\".")
-    common.DeleteFile(tmpProp)
+	stdout, err := wsk.RunCommand("property", "set", "--apihost", wsk.Wskprops.APIHost,
+		"--apiversion", wsk.Wskprops.Apiversion)
+	assert.Equal(t, nil, err, "The command property set --apihost --apiversion failed to run.")
+	stdout, err = wsk.RunCommand("property", "get", "-i", "--apibuild")
+	assert.Equal(t, nil, err, "The command property get -i --apibuild failed to run.")
+	println(common.RemoveRedundentSpaces(string(stdout)))
+	assert.NotContains(t, common.RemoveRedundentSpaces(string(stdout)), "whisk API build Unknown",
+		"The output of the command property get --apibuild does not contain \"whisk API build Unknown\".")
+	assert.NotContains(t, common.RemoveRedundentSpaces(string(stdout)), "Unable to obtain API build information",
+		"The output of the command property get --apibuild does not contain \"Unable to obtain API build information\".")
+	assert.Contains(t, common.RemoveRedundentSpaces(string(stdout)), "whisk API build 20",
+		"The output of the command property get --apibuild does not contain \"whisk API build 20\".")
+	common.DeleteFile(tmpProp)
 }
 
 // Test case to fail to show api build when setting apihost to bogus value.
 func TestFailShowAPIBuildVersion(t *testing.T) {
-    common.CreateFile(tmpProp)
+	common.CreateFile(tmpProp)
 
-    os.Setenv("WSK_CONFIG_FILE", tmpProp)
-    assert.Equal(t, os.Getenv("WSK_CONFIG_FILE"), tmpProp, "The environment variable WSK_CONFIG_FILE has not been set.")
+	os.Setenv("WSK_CONFIG_FILE", tmpProp)
+	assert.Equal(t, os.Getenv("WSK_CONFIG_FILE"), tmpProp, "The environment variable WSK_CONFIG_FILE has not been set.")
 
-    _, err := wsk.RunCommand("property", "set", "--apihost", "xxxx.yyyy")
-    assert.Equal(t, nil, err, "The command property set --apihost failed to run.")
-    stdout, err := wsk.RunCommand("property", "get", "-i", "--apibuild")
-    assert.NotEqual(t, nil, err, "The command property get -i --apibuild does not raise any error.")
-    assert.Contains(t, common.RemoveRedundentSpaces(string(stdout)), "whisk API build Unknown",
-        "The output of the command property get --apibuild does not contain \"whisk API build Unknown\".")
-    assert.Contains(t, common.RemoveRedundentSpaces(string(stdout)), "Unable to obtain API build information",
-        "The output of the command property get --apibuild does not contain \"Unable to obtain API build information\".")
+	_, err := wsk.RunCommand("property", "set", "--apihost", "xxxx.yyyy")
+	assert.Equal(t, nil, err, "The command property set --apihost failed to run.")
+	stdout, err := wsk.RunCommand("property", "get", "-i", "--apibuild")
+	assert.NotEqual(t, nil, err, "The command property get -i --apibuild does not raise any error.")
+	assert.Contains(t, common.RemoveRedundentSpaces(string(stdout)), "whisk API build Unknown",
+		"The output of the command property get --apibuild does not contain \"whisk API build Unknown\".")
+	assert.Contains(t, common.RemoveRedundentSpaces(string(stdout)), "Unable to obtain API build information",
+		"The output of the command property get --apibuild does not contain \"Unable to obtain API build information\".")
 }
 
 // Test case to show api build using http apihost.
 func TestShowAPIBuildVersionHTTP(t *testing.T) {
-    common.CreateFile(tmpProp)
+	common.CreateFile(tmpProp)
 
-    os.Setenv("WSK_CONFIG_FILE", tmpProp)
-    assert.Equal(t, os.Getenv("WSK_CONFIG_FILE"), tmpProp, "The environment variable WSK_CONFIG_FILE has not been set.")
+	os.Setenv("WSK_CONFIG_FILE", tmpProp)
+	assert.Equal(t, os.Getenv("WSK_CONFIG_FILE"), tmpProp, "The environment variable WSK_CONFIG_FILE has not been set.")
 
-    apihost := wsk.Wskprops.APIHost
-    stdout, err := wsk.RunCommand("property", "set", "--apihost", apihost)
-    assert.Equal(t, nil, err, "The command property set --apihost failed to run.")
-    stdout, err = wsk.RunCommand("property", "get", "-i", "--apibuild")
-    println(common.RemoveRedundentSpaces(string(stdout)))
-    //assert.Equal(t, nil, err, "The command property get -i --apibuild failed to run.")
-    assert.NotContains(t, common.RemoveRedundentSpaces(string(stdout)), "whisk API build Unknown",
-        "The output of the command property get --apibuild does not contain \"whisk API build Unknown\".")
-    assert.NotContains(t, common.RemoveRedundentSpaces(string(stdout)), "Unable to obtain API build information",
-        "The output of the command property get --apibuild does not contain \"Unable to obtain API build information\".")
-    assert.Contains(t, common.RemoveRedundentSpaces(string(stdout)), "whisk API build 20",
-        "The output of the command property get --apibuild does not contain \"whisk API build 20\".")
-    common.DeleteFile(tmpProp)
+	apihost := wsk.Wskprops.APIHost
+	stdout, err := wsk.RunCommand("property", "set", "--apihost", apihost)
+	assert.Equal(t, nil, err, "The command property set --apihost failed to run.")
+	stdout, err = wsk.RunCommand("property", "get", "-i", "--apibuild")
+	println(common.RemoveRedundentSpaces(string(stdout)))
+	//assert.Equal(t, nil, err, "The command property get -i --apibuild failed to run.")
+	assert.NotContains(t, common.RemoveRedundentSpaces(string(stdout)), "whisk API build Unknown",
+		"The output of the command property get --apibuild does not contain \"whisk API build Unknown\".")
+	assert.NotContains(t, common.RemoveRedundentSpaces(string(stdout)), "Unable to obtain API build information",
+		"The output of the command property get --apibuild does not contain \"Unable to obtain API build information\".")
+	assert.Contains(t, common.RemoveRedundentSpaces(string(stdout)), "whisk API build 20",
+		"The output of the command property get --apibuild does not contain \"whisk API build 20\".")
+	common.DeleteFile(tmpProp)
 }
 
 // Test case to reject bad command.
 func TestRejectAuthCommNoKey(t *testing.T) {
-    common.CreateFile(tmpProp)
+	common.CreateFile(tmpProp)
 
-    os.Setenv("WSK_CONFIG_FILE", tmpProp)
-    assert.Equal(t, os.Getenv("WSK_CONFIG_FILE"), tmpProp, "The environment variable WSK_CONFIG_FILE has not been set.")
+	os.Setenv("WSK_CONFIG_FILE", tmpProp)
+	assert.Equal(t, os.Getenv("WSK_CONFIG_FILE"), tmpProp, "The environment variable WSK_CONFIG_FILE has not been set.")
 
-    stdout, err := wsk.RunCommand("list", "--apihost", wsk.Wskprops.APIHost,
-        "--apiversion", wsk.Wskprops.Apiversion)
-    assert.NotEqual(t, nil, err, "The command list should fail to run.")
-    assert.Contains(t, common.RemoveRedundentSpaces(string(stdout)), "usage.",
-        "The output of the command does not contain \"usage.\".")
-    assert.Contains(t, common.RemoveRedundentSpaces(string(stdout)), "--auth is required",
-        "The output of the command does not contain \"--auth is required\".")
-    common.DeleteFile(tmpProp)
+	stdout, err := wsk.RunCommand("list", "--apihost", wsk.Wskprops.APIHost,
+		"--apiversion", wsk.Wskprops.Apiversion)
+	assert.NotEqual(t, nil, err, "The command list should fail to run.")
+	assert.Contains(t, common.RemoveRedundentSpaces(string(stdout)), "usage.",
+		"The output of the command does not contain \"usage.\".")
+	assert.Contains(t, common.RemoveRedundentSpaces(string(stdout)), "--auth is required",
+		"The output of the command does not contain \"--auth is required\".")
+	common.DeleteFile(tmpProp)
 }
 
 // Test case to reject commands that are executed with invalid arguments.
 func TestRejectCommInvalidArgs(t *testing.T) {
-    initInvalidArgs()
-    for _, invalidArg := range invalidArgs {
-        cs := invalidArg.Cmd
-        cs = append(cs, "--apihost", wsk.Wskprops.APIHost)
-        stdout, err := wsk.RunCommand(cs...)
-        outputString := string(stdout)
-        assert.NotEqual(t, nil, err, "The command should fail to run.")
-        if (err.Error() == "exit status 1") {
-            assert.Equal(t, "exit status 1", err.Error(), "The error should be exit status 1 or 2.")
-        } else {
-            assert.Equal(t, "exit status 2", err.Error(), "The error should be exit status 1 or 2.")
-        }
-        assert.Contains(t, outputString, invalidArg.Err,
-            "The output of the command does not contain " + invalidArg.Err)
-        assert.Contains(t, outputString, "Run 'wsk --help' for usage",
-            "The output of the command does not contain \"Run 'wsk --help' for usage\".")
-    }
+	initInvalidArgs()
+	for _, invalidArg := range invalidArgs {
+		cs := invalidArg.Cmd
+		cs = append(cs, "--apihost", wsk.Wskprops.APIHost)
+		stdout, err := wsk.RunCommand(cs...)
+		outputString := string(stdout)
+		assert.NotEqual(t, nil, err, "The command should fail to run.")
+		if err.Error() == "exit status 1" {
+			assert.Equal(t, "exit status 1", err.Error(), "The error should be exit status 1 or 2.")
+		} else {
+			assert.Equal(t, "exit status 2", err.Error(), "The error should be exit status 1 or 2.")
+		}
+		assert.Contains(t, outputString, invalidArg.Err,
+			"The output of the command does not contain "+invalidArg.Err)
+		assert.Contains(t, outputString, "Run 'wsk --help' for usage",
+			"The output of the command does not contain \"Run 'wsk --help' for usage\".")
+	}
 }
 
 // Test case to reject commands that are executed with invalid JSON for annotations and parameters.
 func TestRejectCommInvalidJSON(t *testing.T) {
-    helloFile := common.GetTestActionFilename("hello.js")
-    var invalidJSONInputs = []string{
-        "{\"invalid1\": }",
-        "{\"invalid2\": bogus}",
-        "{\"invalid1\": \"aKey\"",
-        "invalid \"string\"",
-        "{\"invalid1\": [1, 2, \"invalid\"\"arr\"]}",
-    }
-    var invalidJSONFiles = []string{
-        common.GetTestActionFilename("malformed.js"),
-        common.GetTestActionFilename("invalidInput1.json"),
-        common.GetTestActionFilename("invalidInput2.json"),
-        common.GetTestActionFilename("invalidInput3.json"),
-        common.GetTestActionFilename("invalidInput4.json"),
-    }
-    var invalidParamArg = "Invalid parameter argument"
-    var invalidAnnoArg = "Invalid annotation argument"
-    var paramCmds = []common.InvalidArg{
-        common.InvalidArg{
-            Cmd: []string{"action", "create", "actionName", helloFile},
-            Err: invalidParamArg,
-        },
-        common.InvalidArg{
-            Cmd: []string{"action", "update", "actionName", helloFile},
-            Err: invalidParamArg,
-        },
-        common.InvalidArg{
-            Cmd: []string{"action", "invoke", "actionName"},
-            Err: invalidParamArg,
-        },
-        common.InvalidArg{
-            Cmd: []string{"package", "create", "packageName"},
-            Err: invalidParamArg,
-        },
-        common.InvalidArg{
-            Cmd: []string{"package", "update", "packageName"},
-            Err: invalidParamArg,
-        },
-        common.InvalidArg{
-            Cmd: []string{"package", "bind", "packageName", "boundPackageName"},
-            Err: invalidParamArg,
-        },
-        common.InvalidArg{
-            Cmd: []string{"trigger", "create", "triggerName"},
-            Err: invalidParamArg,
-        },
-        common.InvalidArg{
-            Cmd: []string{"trigger", "update", "triggerName"},
-            Err: invalidParamArg,
-        },
-        common.InvalidArg{
-            Cmd: []string{"trigger", "fire", "triggerName"},
-            Err: invalidParamArg,
-        },
-    }
+	helloFile := common.GetTestActionFilename("hello.js")
+	var invalidJSONInputs = []string{
+		"{\"invalid1\": }",
+		"{\"invalid2\": bogus}",
+		"{\"invalid1\": \"aKey\"",
+		"invalid \"string\"",
+		"{\"invalid1\": [1, 2, \"invalid\"\"arr\"]}",
+	}
+	var invalidJSONFiles = []string{
+		common.GetTestActionFilename("malformed.js"),
+		common.GetTestActionFilename("invalidInput1.json"),
+		common.GetTestActionFilename("invalidInput2.json"),
+		common.GetTestActionFilename("invalidInput3.json"),
+		common.GetTestActionFilename("invalidInput4.json"),
+	}
+	var invalidParamArg = "Invalid parameter argument"
+	var invalidAnnoArg = "Invalid annotation argument"
+	var paramCmds = []common.InvalidArg{
+		{
+			Cmd: []string{"action", "create", "actionName", helloFile},
+			Err: invalidParamArg,
+		},
+		{
+			Cmd: []string{"action", "update", "actionName", helloFile},
+			Err: invalidParamArg,
+		},
+		{
+			Cmd: []string{"action", "invoke", "actionName"},
+			Err: invalidParamArg,
+		},
+		{
+			Cmd: []string{"package", "create", "packageName"},
+			Err: invalidParamArg,
+		},
+		{
+			Cmd: []string{"package", "update", "packageName"},
+			Err: invalidParamArg,
+		},
+		{
+			Cmd: []string{"package", "bind", "packageName", "boundPackageName"},
+			Err: invalidParamArg,
+		},
+		{
+			Cmd: []string{"trigger", "create", "triggerName"},
+			Err: invalidParamArg,
+		},
+		{
+			Cmd: []string{"trigger", "update", "triggerName"},
+			Err: invalidParamArg,
+		},
+		{
+			Cmd: []string{"trigger", "fire", "triggerName"},
+			Err: invalidParamArg,
+		},
+	}
 
-    var annotCmds = []common.InvalidArg{
-        common.InvalidArg{
-            Cmd: []string{"action", "create", "actionName", helloFile},
-            Err: invalidAnnoArg,
-        },
-        common.InvalidArg{
-            Cmd: []string{"action", "update", "actionName", helloFile},
-            Err: invalidAnnoArg,
-        },
-        common.InvalidArg{
-            Cmd: []string{"package", "create", "packageName"},
-            Err: invalidAnnoArg,
-        },
-        common.InvalidArg{
-            Cmd: []string{"package", "update", "packageName"},
-            Err: invalidAnnoArg,
-        },
-        common.InvalidArg{
-            Cmd: []string{"package", "bind", "packageName", "boundPackageName"},
-            Err: invalidAnnoArg,
-        },
-        common.InvalidArg{
-            Cmd: []string{"trigger", "create", "triggerName"},
-            Err: invalidAnnoArg,
-        },
-        common.InvalidArg{
-            Cmd: []string{"trigger", "update", "triggerName"},
-            Err: invalidAnnoArg,
-        },
-    }
+	var annotCmds = []common.InvalidArg{
+		{
+			Cmd: []string{"action", "create", "actionName", helloFile},
+			Err: invalidAnnoArg,
+		},
+		{
+			Cmd: []string{"action", "update", "actionName", helloFile},
+			Err: invalidAnnoArg,
+		},
+		{
+			Cmd: []string{"package", "create", "packageName"},
+			Err: invalidAnnoArg,
+		},
+		{
+			Cmd: []string{"package", "update", "packageName"},
+			Err: invalidAnnoArg,
+		},
+		{
+			Cmd: []string{"package", "bind", "packageName", "boundPackageName"},
+			Err: invalidAnnoArg,
+		},
+		{
+			Cmd: []string{"trigger", "create", "triggerName"},
+			Err: invalidAnnoArg,
+		},
+		{
+			Cmd: []string{"trigger", "update", "triggerName"},
+			Err: invalidAnnoArg,
+		},
+	}
 
-    for _, cmd := range paramCmds {
-        for _, invalid := range invalidJSONInputs {
-            cs := cmd.Cmd
-            cs = append(cs, "-p", "key", invalid, "--apihost", wsk.Wskprops.APIHost)
-            stdout, err := wsk.RunCommand(cs...)
-            outputString := string(stdout)
-            assert.NotEqual(t, nil, err, "The command should fail to run.")
-            assert.Equal(t, "exit status 1", err.Error(), "The error should be exit status 1.")
-            assert.Contains(t, outputString, cmd.Err,
-                "The output of the command does not contain " + cmd.Err + " .")
-        }
-        for _, invalid := range invalidJSONFiles {
-            cs := cmd.Cmd
-            cs = append(cs, "-P", invalid, "--apihost", wsk.Wskprops.APIHost)
-            stdout, err := wsk.RunCommand(cs...)
-            outputString := string(stdout)
-            assert.NotEqual(t, nil, err, "The command should fail to run.")
-            assert.Equal(t, "exit status 1", err.Error(), "The error should be exit status 1.")
-            assert.Contains(t, outputString, cmd.Err,
-                "The output of the command does not contain " + cmd.Err + " .")
-        }
-    }
+	for _, cmd := range paramCmds {
+		for _, invalid := range invalidJSONInputs {
+			cs := cmd.Cmd
+			cs = append(cs, "-p", "key", invalid, "--apihost", wsk.Wskprops.APIHost)
+			stdout, err := wsk.RunCommand(cs...)
+			outputString := string(stdout)
+			assert.NotEqual(t, nil, err, "The command should fail to run.")
+			assert.Equal(t, "exit status 1", err.Error(), "The error should be exit status 1.")
+			assert.Contains(t, outputString, cmd.Err,
+				"The output of the command does not contain "+cmd.Err+" .")
+		}
+		for _, invalid := range invalidJSONFiles {
+			cs := cmd.Cmd
+			cs = append(cs, "-P", invalid, "--apihost", wsk.Wskprops.APIHost)
+			stdout, err := wsk.RunCommand(cs...)
+			outputString := string(stdout)
+			assert.NotEqual(t, nil, err, "The command should fail to run.")
+			assert.Equal(t, "exit status 1", err.Error(), "The error should be exit status 1.")
+			assert.Contains(t, outputString, cmd.Err,
+				"The output of the command does not contain "+cmd.Err+" .")
+		}
+	}
 
-    for _, cmd := range annotCmds {
-        for _, invalid := range invalidJSONInputs {
-            cs := cmd.Cmd
-            cs = append(cs, "-a", "key", invalid, "--apihost", wsk.Wskprops.APIHost)
-            stdout, err := wsk.RunCommand(cs...)
-            outputString := string(stdout)
-            assert.NotEqual(t, nil, err, "The command should fail to run.")
-            assert.Equal(t, "exit status 1", err.Error(), "The error should be exit status 1.")
-            assert.Contains(t, outputString, cmd.Err,
-                "The output of the command does not contain " + cmd.Err + " .")
-        }
-        for _, invalid := range invalidJSONFiles {
-            cs := cmd.Cmd
-            cs = append(cs, "-A", invalid, "--apihost", wsk.Wskprops.APIHost)
-            stdout, err := wsk.RunCommand(cs...)
-            outputString := string(stdout)
-            assert.NotEqual(t, nil, err, "The command should fail to run.")
-            assert.Equal(t, "exit status 1", err.Error(), "The error should be exit status 1.")
-            assert.Contains(t, outputString, cmd.Err,
-                "The output of the command does not contain " + cmd.Err + " .")
-        }
-    }
+	for _, cmd := range annotCmds {
+		for _, invalid := range invalidJSONInputs {
+			cs := cmd.Cmd
+			cs = append(cs, "-a", "key", invalid, "--apihost", wsk.Wskprops.APIHost)
+			stdout, err := wsk.RunCommand(cs...)
+			outputString := string(stdout)
+			assert.NotEqual(t, nil, err, "The command should fail to run.")
+			assert.Equal(t, "exit status 1", err.Error(), "The error should be exit status 1.")
+			assert.Contains(t, outputString, cmd.Err,
+				"The output of the command does not contain "+cmd.Err+" .")
+		}
+		for _, invalid := range invalidJSONFiles {
+			cs := cmd.Cmd
+			cs = append(cs, "-A", invalid, "--apihost", wsk.Wskprops.APIHost)
+			stdout, err := wsk.RunCommand(cs...)
+			outputString := string(stdout)
+			assert.NotEqual(t, nil, err, "The command should fail to run.")
+			assert.Equal(t, "exit status 1", err.Error(), "The error should be exit status 1.")
+			assert.Contains(t, outputString, cmd.Err,
+				"The output of the command does not contain "+cmd.Err+" .")
+		}
+	}
 }
diff --git a/wski18n/detection.go b/wski18n/detection.go
index b442cc4..c3866dd 100644
--- a/wski18n/detection.go
+++ b/wski18n/detection.go
@@ -20,24 +20,24 @@ package wski18n
 import "github.com/cloudfoundry/jibber_jabber"
 
 type Detector interface {
-    DetectLocale() string
-    DetectLanguage() string
+	DetectLocale() string
+	DetectLanguage() string
 }
 
 type JibberJabberDetector struct{}
 
 func (d *JibberJabberDetector) DetectLocale() string {
-    userLocale, err := jibber_jabber.DetectIETF()
-    if err != nil {
-        userLocale = ""
-    }
-    return userLocale
+	userLocale, err := jibber_jabber.DetectIETF()
+	if err != nil {
+		userLocale = ""
+	}
+	return userLocale
 }
 
 func (d *JibberJabberDetector) DetectLanguage() string {
-    lang, err := jibber_jabber.DetectLanguage()
-    if err != nil {
-        lang = ""
-    }
-    return lang
+	lang, err := jibber_jabber.DetectLanguage()
+	if err != nil {
+		lang = ""
+	}
+	return lang
 }
diff --git a/wski18n/i18n.go b/wski18n/i18n.go
index 9991ac8..02a25d3 100644
--- a/wski18n/i18n.go
+++ b/wski18n/i18n.go
@@ -18,131 +18,131 @@
 package wski18n
 
 import (
-    "path/filepath"
-    "strings"
+	"path/filepath"
+	"strings"
 
-    goi18n "github.com/nicksnyder/go-i18n/i18n"
+	goi18n "github.com/nicksnyder/go-i18n/i18n"
 )
 
 const (
-    DEFAULT_LOCALE = "en_US"
+	DEFAULT_LOCALE = "en_US"
 )
 
 var SUPPORTED_LOCALES = []string{
-    "de_DE",
-    "en_US",
-    "es_ES",
-    "fr_FR",
-    "it_IT",
-    "ja_JA",
-    "ko_KR",
-    "pt_BR",
-    "zh_Hans",
-    "zh_Hant",
+	"de_DE",
+	"en_US",
+	"es_ES",
+	"fr_FR",
+	"it_IT",
+	"ja_JA",
+	"ko_KR",
+	"pt_BR",
+	"zh_Hans",
+	"zh_Hant",
 }
 
 var resourcePath = filepath.Join("wski18n", "resources")
 
 func GetResourcePath() string {
-    return resourcePath
+	return resourcePath
 }
 
 func SetResourcePath(path string) {
-    resourcePath = path
+	resourcePath = path
 }
 
 var T goi18n.TranslateFunc
 var curLocale string
 
 func init() {
-    curLocale = Init(new(JibberJabberDetector))
+	curLocale = Init(new(JibberJabberDetector))
 }
 
 func CurLocale() string {
-    return curLocale
+	return curLocale
 }
 
 func Locale(detector Detector) string {
 
-    // Use default locale until strings are translated
-    /*sysLocale := normalize(detector.DetectLocale())
-    if isSupported(sysLocale) {
-        return sysLocale
-    }
+	// Use default locale until strings are translated
+	/*sysLocale := normalize(detector.DetectLocale())
+	  if isSupported(sysLocale) {
+	      return sysLocale
+	  }
 
-    locale := defaultLocaleForLang(detector.DetectLanguage())
-    if locale != "" {
-        return locale
-    }*/
+	  locale := defaultLocaleForLang(detector.DetectLanguage())
+	  if locale != "" {
+	      return locale
+	  }*/
 
-    return DEFAULT_LOCALE
+	return DEFAULT_LOCALE
 }
 
 func Init(detector Detector) string {
-    l := Locale(detector)
-    InitWithLocale(l)
-    return l
+	l := Locale(detector)
+	InitWithLocale(l)
+	return l
 }
 
 func InitWithLocale(locale string) {
-    err := loadFromAsset(locale)
-    if err != nil {
-        panic(err)
-    }
-    T = goi18n.MustTfunc(locale)
+	err := loadFromAsset(locale)
+	if err != nil {
+		panic(err)
+	}
+	T = goi18n.MustTfunc(locale)
 }
 
 func loadFromAsset(locale string) (err error) {
-    assetName := locale + ".all.json"
-    assetKey := filepath.Join(resourcePath, assetName)
-    bytes, err := Asset(assetKey)
-    if err != nil {
-        return
-    }
-    err = goi18n.ParseTranslationFileBytes(assetName, bytes)
-    return
+	assetName := locale + ".all.json"
+	assetKey := filepath.Join(resourcePath, assetName)
+	bytes, err := Asset(assetKey)
+	if err != nil {
+		return
+	}
+	err = goi18n.ParseTranslationFileBytes(assetName, bytes)
+	return
 }
 
 func normalize(locale string) string {
-    locale = strings.ToLower(strings.Replace(locale, "-", "_", 1))
-    for _, l := range SUPPORTED_LOCALES {
-        if strings.EqualFold(locale, l) {
-            return l
-        }
-    }
-    switch locale {
-    case "zh_cn", "zh_sg":
-        return "zh_Hans"
-    case "zh_hk", "zh_tw":
-        return "zh_Hant"
-    }
-    return locale
+	locale = strings.ToLower(strings.Replace(locale, "-", "_", 1))
+	for _, l := range SUPPORTED_LOCALES {
+		if strings.EqualFold(locale, l) {
+			return l
+		}
+	}
+	switch locale {
+	case "zh_cn", "zh_sg":
+		return "zh_Hans"
+	case "zh_hk", "zh_tw":
+		return "zh_Hant"
+	}
+	return locale
 }
 
 func isSupported(locale string) bool {
-    for _, l := range SUPPORTED_LOCALES {
-        if strings.EqualFold(locale, l) {
-            return true
-        }
-    }
-    return false
+	for _, l := range SUPPORTED_LOCALES {
+		if strings.EqualFold(locale, l) {
+			return true
+		}
+	}
+	return false
 }
 
 func defaultLocaleForLang(lang string) string {
-    if lang != "" {
-        lang = strings.ToLower(lang)
-        for _, l := range SUPPORTED_LOCALES {
-            if lang == LangOfLocale(l) {
-                return l
-            }
-        }
-    }
-    return ""
+	if lang != "" {
+		lang = strings.ToLower(lang)
+		for _, l := range SUPPORTED_LOCALES {
+			if lang == LangOfLocale(l) {
+				return l
+			}
+		}
+	}
+	return ""
 }
 
 func LangOfLocale(locale string) string {
-    if len(locale) < 2 {
-        return ""
-    }
-    return locale[0:2]
+	if len(locale) < 2 {
+		return ""
+	}
+	return locale[0:2]
 }
diff --git a/wski18n/i18n_resources.go b/wski18n/i18n_resources.go
index 6c0f431..bf3bbae 100644
--- a/wski18n/i18n_resources.go
+++ b/wski18n/i18n_resources.go
@@ -32,330 +32,330 @@
 package wski18n
 
 import (
-    "bytes"
-    "compress/gzip"
-    "fmt"
-    "io"
-    "io/ioutil"
-    "os"
-    "path/filepath"
-    "strings"
-    "time"
+	"bytes"
+	"compress/gzip"
+	"fmt"
+	"io"
+	"io/ioutil"
+	"os"
+	"path/filepath"
+	"strings"
+	"time"
 )
 
 func bindataRead(data []byte, name string) ([]byte, error) {
-    gz, err := gzip.NewReader(bytes.NewBuffer(data))
-    if err != nil {
-        return nil, fmt.Errorf("Read %q: %v", name, err)
-    }
+	gz, err := gzip.NewReader(bytes.NewBuffer(data))
+	if err != nil {
+		return nil, fmt.Errorf("Read %q: %v", name, err)
+	}
 
-    var buf bytes.Buffer
-    _, err = io.Copy(&buf, gz)
-    clErr := gz.Close()
+	var buf bytes.Buffer
+	_, err = io.Copy(&buf, gz)
+	clErr := gz.Close()
 
-    if err != nil {
-        return nil, fmt.Errorf("Read %q: %v", name, err)
-    }
-    if clErr != nil {
-        return nil, err
-    }
+	if err != nil {
+		return nil, fmt.Errorf("Read %q: %v", name, err)
+	}
+	if clErr != nil {
+		return nil, err
+	}
 
-    return buf.Bytes(), nil
+	return buf.Bytes(), nil
 }
 
 type asset struct {
-    bytes []byte
-    info  os.FileInfo
+	bytes []byte
+	info  os.FileInfo
 }
 
 type bindataFileInfo struct {
-    name    string
-    size    int64
-    mode    os.FileMode
-    modTime time.Time
+	name    string
+	size    int64
+	mode    os.FileMode
+	modTime time.Time
 }
 
 func (fi bindataFileInfo) Name() string {
-    return fi.name
+	return fi.name
 }
 func (fi bindataFileInfo) Size() int64 {
-    return fi.size
+	return fi.size
 }
 func (fi bindataFileInfo) Mode() os.FileMode {
-    return fi.mode
+	return fi.mode
 }
 func (fi bindataFileInfo) ModTime() time.Time {
-    return fi.modTime
+	return fi.modTime
 }
 func (fi bindataFileInfo) IsDir() bool {
-    return false
+	return false
 }
 func (fi bindataFileInfo) Sys() interface{} {
-    return nil
+	return nil
 }
 
 var _wski18nResourcesDe_deAllJson = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\x01\x00\x00\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00")
 
 func wski18nResourcesDe_deAllJsonBytes() ([]byte, error) {
-    return bindataRead(
-        _wski18nResourcesDe_deAllJson,
-        "wski18n/resources/de_DE.all.json",
-    )
+	return bindataRead(
+		_wski18nResourcesDe_deAllJson,
+		"wski18n/resources/de_DE.all.json",
+	)
 }
 
 func wski18nResourcesDe_deAllJson() (*asset, error) {
-    bytes, err := wski18nResourcesDe_deAllJsonBytes()
-    if err != nil {
-        return nil, err
-    }
+	bytes, err := wski18nResourcesDe_deAllJsonBytes()
+	if err != nil {
+		return nil, err
+	}
 
-    info := bindataFileInfo{name: "wski18n/resources/de_DE.all.json", size: 0, mode: os.FileMode(420), modTime: time.Unix(1510606284, 0)}
-    a := &asset{bytes: bytes, info: info}
-    return a, nil
+	info := bindataFileInfo{name: "wski18n/resources/de_DE.all.json", size: 0, mode: os.FileMode(420), modTime: time.Unix(1510606284, 0)}
+	a := &asset{bytes: bytes, info: info}
+	return a, nil
 }
 
 var _wski18nResourcesEn_usAllJson = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xcc\x5d\x4f\x73\xdb\x38\xb2\xbf\xcf\xa7\xe8\xca\xc5\xce\x2b\xd9\xd9\x3d\xbd\x7a\x49\xcd\x41\x13\x7b\x36\xde\x49\x6c\x57\xec\xcc\xee\xd4\x66\x6b\x04\x91\x90\x85\x35\x05\x70\x00\xd0\xb2\x92\xf1\x77\x7f\x05\x80\xa4\x48\x09\x7f\x49\x39\xd9\x53\x1c\xb1\xfb\xd7\x0d\xa0\x01\x34\x1a\x0d\xe0\x5f\x3f\x00\x7c\xfd\x01\x00\xe0\x05\xc9\x5f\xbc\x86\x17\xd3\xb2\x2c\x48\x86\x24\x61\x14\xf0\x23\x91\x38\x87\x8a\xe2\xc7\x12 [...]
 
 func wski18nResourcesEn_usAllJsonBytes() ([]byte, error) {
-    return bindataRead(
-        _wski18nResourcesEn_usAllJson,
-        "wski18n/resources/en_US.all.json",
-    )
+	return bindataRead(
+		_wski18nResourcesEn_usAllJson,
+		"wski18n/resources/en_US.all.json",
+	)
 }
 
 func wski18nResourcesEn_usAllJson() (*asset, error) {
-    bytes, err := wski18nResourcesEn_usAllJsonBytes()
-    if err != nil {
-        return nil, err
-    }
+	bytes, err := wski18nResourcesEn_usAllJsonBytes()
+	if err != nil {
+		return nil, err
+	}
 
-    info := bindataFileInfo{name: "wski18n/resources/en_US.all.json", size: 51835, mode: os.FileMode(420), modTime: time.Unix(1510606284, 0)}
-    a := &asset{bytes: bytes, info: info}
-    return a, nil
+	info := bindataFileInfo{name: "wski18n/resources/en_US.all.json", size: 51835, mode: os.FileMode(420), modTime: time.Unix(1510606284, 0)}
+	a := &asset{bytes: bytes, info: info}
+	return a, nil
 }
 
 var _wski18nResourcesEs_esAllJson = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\x01\x00\x00\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00")
 
 func wski18nResourcesEs_esAllJsonBytes() ([]byte, error) {
-    return bindataRead(
-        _wski18nResourcesEs_esAllJson,
-        "wski18n/resources/es_ES.all.json",
-    )
+	return bindataRead(
+		_wski18nResourcesEs_esAllJson,
+		"wski18n/resources/es_ES.all.json",
+	)
 }
 
 func wski18nResourcesEs_esAllJson() (*asset, error) {
-    bytes, err := wski18nResourcesEs_esAllJsonBytes()
-    if err != nil {
-        return nil, err
-    }
+	bytes, err := wski18nResourcesEs_esAllJsonBytes()
+	if err != nil {
+		return nil, err
+	}
 
-    info := bindataFileInfo{name: "wski18n/resources/es_ES.all.json", size: 0, mode: os.FileMode(420), modTime: time.Unix(1510606284, 0)}
-    a := &asset{bytes: bytes, info: info}
-    return a, nil
+	info := bindataFileInfo{name: "wski18n/resources/es_ES.all.json", size: 0, mode: os.FileMode(420), modTime: time.Unix(1510606284, 0)}
+	a := &asset{bytes: bytes, info: info}
+	return a, nil
 }
 
 var _wski18nResourcesFr_frAllJson = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\x8a\xe6\x52\x50\xa8\xe6\x52\x50\x50\x50\x50\xca\x4c\x51\xb2\x52\x50\x4a\xaa\x2c\x48\x2c\x2e\x56\x48\x4e\x2d\x2a\xc9\x4c\xcb\x4c\x4e\x2c\x49\x55\x48\xce\x48\x4d\xce\xce\xcc\x4b\x57\xd2\x81\x28\x2c\x29\x4a\xcc\x2b\xce\x49\x2c\xc9\xcc\xcf\x03\xe9\x08\xce\xcf\x4d\x55\x40\x12\x53\xc8\xcc\x53\x70\x2b\x4a\xcd\x4b\xce\x50\xe2\x52\x50\xa8\xe5\x8a\xe5\x02\x04\x00\x00\xff\xff\x45\xa4\xe9\x62\x65\x00\x00\x00")
 
 func wski18nResourcesFr_frAllJsonBytes() ([]byte, error) {
-    return bindataRead(
-        _wski18nResourcesFr_frAllJson,
-        "wski18n/resources/fr_FR.all.json",
-    )
+	return bindataRead(
+		_wski18nResourcesFr_frAllJson,
+		"wski18n/resources/fr_FR.all.json",
+	)
 }
 
 func wski18nResourcesFr_frAllJson() (*asset, error) {
-    bytes, err := wski18nResourcesFr_frAllJsonBytes()
-    if err != nil {
-        return nil, err
-    }
+	bytes, err := wski18nResourcesFr_frAllJsonBytes()
+	if err != nil {
+		return nil, err
+	}
 
-    info := bindataFileInfo{name: "wski18n/resources/fr_FR.all.json", size: 101, mode: os.FileMode(420), modTime: time.Unix(1510606284, 0)}
-    a := &asset{bytes: bytes, info: info}
-    return a, nil
+	info := bindataFileInfo{name: "wski18n/resources/fr_FR.all.json", size: 101, mode: os.FileMode(420), modTime: time.Unix(1510606284, 0)}
+	a := &asset{bytes: bytes, info: info}
+	return a, nil
 }
 
 var _wski18nResourcesIt_itAllJson = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\x01\x00\x00\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00")
 
 func wski18nResourcesIt_itAllJsonBytes() ([]byte, error) {
-    return bindataRead(
-        _wski18nResourcesIt_itAllJson,
-        "wski18n/resources/it_IT.all.json",
-    )
+	return bindataRead(
+		_wski18nResourcesIt_itAllJson,
+		"wski18n/resources/it_IT.all.json",
+	)
 }
 
 func wski18nResourcesIt_itAllJson() (*asset, error) {
-    bytes, err := wski18nResourcesIt_itAllJsonBytes()
-    if err != nil {
-        return nil, err
-    }
+	bytes, err := wski18nResourcesIt_itAllJsonBytes()
+	if err != nil {
+		return nil, err
+	}
 
-    info := bindataFileInfo{name: "wski18n/resources/it_IT.all.json", size: 0, mode: os.FileMode(420), modTime: time.Unix(1510606284, 0)}
-    a := &asset{bytes: bytes, info: info}
-    return a, nil
+	info := bindataFileInfo{name: "wski18n/resources/it_IT.all.json", size: 0, mode: os.FileMode(420), modTime: time.Unix(1510606284, 0)}
+	a := &asset{bytes: bytes, info: info}
+	return a, nil
 }
 
 var _wski18nResourcesJa_jaAllJson = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\x01\x00\x00\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00")
 
 func wski18nResourcesJa_jaAllJsonBytes() ([]byte, error) {
-    return bindataRead(
-        _wski18nResourcesJa_jaAllJson,
-        "wski18n/resources/ja_JA.all.json",
-    )
+	return bindataRead(
+		_wski18nResourcesJa_jaAllJson,
+		"wski18n/resources/ja_JA.all.json",
+	)
 }
 
 func wski18nResourcesJa_jaAllJson() (*asset, error) {
-    bytes, err := wski18nResourcesJa_jaAllJsonBytes()
-    if err != nil {
-        return nil, err
-    }
+	bytes, err := wski18nResourcesJa_jaAllJsonBytes()
+	if err != nil {
+		return nil, err
+	}
 
-    info := bindataFileInfo{name: "wski18n/resources/ja_JA.all.json", size: 0, mode: os.FileMode(420), modTime: time.Unix(1510606284, 0)}
-    a := &asset{bytes: bytes, info: info}
-    return a, nil
+	info := bindataFileInfo{name: "wski18n/resources/ja_JA.all.json", size: 0, mode: os.FileMode(420), modTime: time.Unix(1510606284, 0)}
+	a := &asset{bytes: bytes, info: info}
+	return a, nil
 }
 
 var _wski18nResourcesKo_krAllJson = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\x01\x00\x00\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00")
 
 func wski18nResourcesKo_krAllJsonBytes() ([]byte, error) {
-    return bindataRead(
-        _wski18nResourcesKo_krAllJson,
-        "wski18n/resources/ko_KR.all.json",
-    )
+	return bindataRead(
+		_wski18nResourcesKo_krAllJson,
+		"wski18n/resources/ko_KR.all.json",
+	)
 }
 
 func wski18nResourcesKo_krAllJson() (*asset, error) {
-    bytes, err := wski18nResourcesKo_krAllJsonBytes()
-    if err != nil {
-        return nil, err
-    }
+	bytes, err := wski18nResourcesKo_krAllJsonBytes()
+	if err != nil {
+		return nil, err
+	}
 
-    info := bindataFileInfo{name: "wski18n/resources/ko_KR.all.json", size: 0, mode: os.FileMode(420), modTime: time.Unix(1510606284, 0)}
-    a := &asset{bytes: bytes, info: info}
-    return a, nil
+	info := bindataFileInfo{name: "wski18n/resources/ko_KR.all.json", size: 0, mode: os.FileMode(420), modTime: time.Unix(1510606284, 0)}
+	a := &asset{bytes: bytes, info: info}
+	return a, nil
 }
 
 var _wski18nResourcesPt_brAllJson = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\x01\x00\x00\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00")
 
 func wski18nResourcesPt_brAllJsonBytes() ([]byte, error) {
-    return bindataRead(
-        _wski18nResourcesPt_brAllJson,
-        "wski18n/resources/pt_BR.all.json",
-    )
+	return bindataRead(
+		_wski18nResourcesPt_brAllJson,
+		"wski18n/resources/pt_BR.all.json",
+	)
 }
 
 func wski18nResourcesPt_brAllJson() (*asset, error) {
-    bytes, err := wski18nResourcesPt_brAllJsonBytes()
-    if err != nil {
-        return nil, err
-    }
+	bytes, err := wski18nResourcesPt_brAllJsonBytes()
+	if err != nil {
+		return nil, err
+	}
 
-    info := bindataFileInfo{name: "wski18n/resources/pt_BR.all.json", size: 0, mode: os.FileMode(420), modTime: time.Unix(1510606284, 0)}
-    a := &asset{bytes: bytes, info: info}
-    return a, nil
+	info := bindataFileInfo{name: "wski18n/resources/pt_BR.all.json", size: 0, mode: os.FileMode(420), modTime: time.Unix(1510606284, 0)}
+	a := &asset{bytes: bytes, info: info}
+	return a, nil
 }
 
 var _wski18nResourcesZh_hansAllJson = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\x01\x00\x00\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00")
 
 func wski18nResourcesZh_hansAllJsonBytes() ([]byte, error) {
-    return bindataRead(
-        _wski18nResourcesZh_hansAllJson,
-        "wski18n/resources/zh_Hans.all.json",
-    )
+	return bindataRead(
+		_wski18nResourcesZh_hansAllJson,
+		"wski18n/resources/zh_Hans.all.json",
+	)
 }
 
 func wski18nResourcesZh_hansAllJson() (*asset, error) {
-    bytes, err := wski18nResourcesZh_hansAllJsonBytes()
-    if err != nil {
-        return nil, err
-    }
+	bytes, err := wski18nResourcesZh_hansAllJsonBytes()
+	if err != nil {
+		return nil, err
+	}
 
-    info := bindataFileInfo{name: "wski18n/resources/zh_Hans.all.json", size: 0, mode: os.FileMode(420), modTime: time.Unix(1510606284, 0)}
-    a := &asset{bytes: bytes, info: info}
-    return a, nil
+	info := bindataFileInfo{name: "wski18n/resources/zh_Hans.all.json", size: 0, mode: os.FileMode(420), modTime: time.Unix(1510606284, 0)}
+	a := &asset{bytes: bytes, info: info}
+	return a, nil
 }
 
 var _wski18nResourcesZh_hantAllJson = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\x01\x00\x00\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00")
 
 func wski18nResourcesZh_hantAllJsonBytes() ([]byte, error) {
-    return bindataRead(
-        _wski18nResourcesZh_hantAllJson,
-        "wski18n/resources/zh_Hant.all.json",
-    )
+	return bindataRead(
+		_wski18nResourcesZh_hantAllJson,
+		"wski18n/resources/zh_Hant.all.json",
+	)
 }
 
 func wski18nResourcesZh_hantAllJson() (*asset, error) {
-    bytes, err := wski18nResourcesZh_hantAllJsonBytes()
-    if err != nil {
-        return nil, err
-    }
+	bytes, err := wski18nResourcesZh_hantAllJsonBytes()
+	if err != nil {
+		return nil, err
+	}
 
-    info := bindataFileInfo{name: "wski18n/resources/zh_Hant.all.json", size: 0, mode: os.FileMode(420), modTime: time.Unix(1510606284, 0)}
-    a := &asset{bytes: bytes, info: info}
-    return a, nil
+	info := bindataFileInfo{name: "wski18n/resources/zh_Hant.all.json", size: 0, mode: os.FileMode(420), modTime: time.Unix(1510606284, 0)}
+	a := &asset{bytes: bytes, info: info}
+	return a, nil
 }
 
 // Asset loads and returns the asset for the given name.
 // It returns an error if the asset could not be found or
 // could not be loaded.
 func Asset(name string) ([]byte, error) {
-    cannonicalName := strings.Replace(name, "\\", "/", -1)
-    if f, ok := _bindata[cannonicalName]; ok {
-        a, err := f()
-        if err != nil {
-            return nil, fmt.Errorf("Asset %s can't read by error: %v", name, err)
-        }
-        return a.bytes, nil
-    }
-    return nil, fmt.Errorf("Asset %s not found", name)
+	cannonicalName := strings.Replace(name, "\\", "/", -1)
+	if f, ok := _bindata[cannonicalName]; ok {
+		a, err := f()
+		if err != nil {
+			return nil, fmt.Errorf("Asset %s can't read by error: %v", name, err)
+		}
+		return a.bytes, nil
+	}
+	return nil, fmt.Errorf("Asset %s not found", name)
 }
 
 // MustAsset is like Asset but panics when Asset would return an error.
 // It simplifies safe initialization of global variables.
 func MustAsset(name string) []byte {
-    a, err := Asset(name)
-    if err != nil {
-        panic("asset: Asset(" + name + "): " + err.Error())
-    }
+	a, err := Asset(name)
+	if err != nil {
+		panic("asset: Asset(" + name + "): " + err.Error())
+	}
 
-    return a
+	return a
 }
 
 // AssetInfo loads and returns the asset info for the given name.
 // It returns an error if the asset could not be found or
 // could not be loaded.
 func AssetInfo(name string) (os.FileInfo, error) {
-    cannonicalName := strings.Replace(name, "\\", "/", -1)
-    if f, ok := _bindata[cannonicalName]; ok {
-        a, err := f()
-        if err != nil {
-            return nil, fmt.Errorf("AssetInfo %s can't read by error: %v", name, err)
-        }
-        return a.info, nil
-    }
-    return nil, fmt.Errorf("AssetInfo %s not found", name)
+	cannonicalName := strings.Replace(name, "\\", "/", -1)
+	if f, ok := _bindata[cannonicalName]; ok {
+		a, err := f()
+		if err != nil {
+			return nil, fmt.Errorf("AssetInfo %s can't read by error: %v", name, err)
+		}
+		return a.info, nil
+	}
+	return nil, fmt.Errorf("AssetInfo %s not found", name)
 }
 
 // AssetNames returns the names of the assets.
 func AssetNames() []string {
-    names := make([]string, 0, len(_bindata))
-    for name := range _bindata {
-        names = append(names, name)
-    }
-    return names
+	names := make([]string, 0, len(_bindata))
+	for name := range _bindata {
+		names = append(names, name)
+	}
+	return names
 }
 
 // _bindata is a table, holding each asset generator, mapped to its name.
 var _bindata = map[string]func() (*asset, error){
-    "wski18n/resources/de_DE.all.json": wski18nResourcesDe_deAllJson,
-    "wski18n/resources/en_US.all.json": wski18nResourcesEn_usAllJson,
-    "wski18n/resources/es_ES.all.json": wski18nResourcesEs_esAllJson,
-    "wski18n/resources/fr_FR.all.json": wski18nResourcesFr_frAllJson,
-    "wski18n/resources/it_IT.all.json": wski18nResourcesIt_itAllJson,
-    "wski18n/resources/ja_JA.all.json": wski18nResourcesJa_jaAllJson,
-    "wski18n/resources/ko_KR.all.json": wski18nResourcesKo_krAllJson,
-    "wski18n/resources/pt_BR.all.json": wski18nResourcesPt_brAllJson,
-    "wski18n/resources/zh_Hans.all.json": wski18nResourcesZh_hansAllJson,
-    "wski18n/resources/zh_Hant.all.json": wski18nResourcesZh_hantAllJson,
+	"wski18n/resources/de_DE.all.json":   wski18nResourcesDe_deAllJson,
+	"wski18n/resources/en_US.all.json":   wski18nResourcesEn_usAllJson,
+	"wski18n/resources/es_ES.all.json":   wski18nResourcesEs_esAllJson,
+	"wski18n/resources/fr_FR.all.json":   wski18nResourcesFr_frAllJson,
+	"wski18n/resources/it_IT.all.json":   wski18nResourcesIt_itAllJson,
+	"wski18n/resources/ja_JA.all.json":   wski18nResourcesJa_jaAllJson,
+	"wski18n/resources/ko_KR.all.json":   wski18nResourcesKo_krAllJson,
+	"wski18n/resources/pt_BR.all.json":   wski18nResourcesPt_brAllJson,
+	"wski18n/resources/zh_Hans.all.json": wski18nResourcesZh_hansAllJson,
+	"wski18n/resources/zh_Hant.all.json": wski18nResourcesZh_hantAllJson,
 }
 
 // AssetDir returns the file names below a certain
@@ -372,92 +372,92 @@ var _bindata = map[string]func() (*asset, error){
 // AssetDir("foo.txt") and AssetDir("notexist") would return an error
 // AssetDir("") will return []string{"data"}.
 func AssetDir(name string) ([]string, error) {
-    node := _bintree
-    if len(name) != 0 {
-        cannonicalName := strings.Replace(name, "\\", "/", -1)
-        pathList := strings.Split(cannonicalName, "/")
-        for _, p := range pathList {
-            node = node.Children[p]
-            if node == nil {
-                return nil, fmt.Errorf("Asset %s not found", name)
-            }
-        }
-    }
-    if node.Func != nil {
-        return nil, fmt.Errorf("Asset %s not found", name)
-    }
-    rv := make([]string, 0, len(node.Children))
-    for childName := range node.Children {
-        rv = append(rv, childName)
-    }
-    return rv, nil
+	node := _bintree
+	if len(name) != 0 {
+		cannonicalName := strings.Replace(name, "\\", "/", -1)
+		pathList := strings.Split(cannonicalName, "/")
+		for _, p := range pathList {
+			node = node.Children[p]
+			if node == nil {
+				return nil, fmt.Errorf("Asset %s not found", name)
+			}
+		}
+	}
+	if node.Func != nil {
+		return nil, fmt.Errorf("Asset %s not found", name)
+	}
+	rv := make([]string, 0, len(node.Children))
+	for childName := range node.Children {
+		rv = append(rv, childName)
+	}
+	return rv, nil
 }
 
 type bintree struct {
-    Func     func() (*asset, error)
-    Children map[string]*bintree
+	Func     func() (*asset, error)
+	Children map[string]*bintree
 }
+
 var _bintree = &bintree{nil, map[string]*bintree{
-    "wski18n": &bintree{nil, map[string]*bintree{
-        "resources": &bintree{nil, map[string]*bintree{
-            "de_DE.all.json": &bintree{wski18nResourcesDe_deAllJson, map[string]*bintree{}},
-            "en_US.all.json": &bintree{wski18nResourcesEn_usAllJson, map[string]*bintree{}},
-            "es_ES.all.json": &bintree{wski18nResourcesEs_esAllJson, map[string]*bintree{}},
-            "fr_FR.all.json": &bintree{wski18nResourcesFr_frAllJson, map[string]*bintree{}},
-            "it_IT.all.json": &bintree{wski18nResourcesIt_itAllJson, map[string]*bintree{}},
-            "ja_JA.all.json": &bintree{wski18nResourcesJa_jaAllJson, map[string]*bintree{}},
-            "ko_KR.all.json": &bintree{wski18nResourcesKo_krAllJson, map[string]*bintree{}},
-            "pt_BR.all.json": &bintree{wski18nResourcesPt_brAllJson, map[string]*bintree{}},
-            "zh_Hans.all.json": &bintree{wski18nResourcesZh_hansAllJson, map[string]*bintree{}},
-            "zh_Hant.all.json": &bintree{wski18nResourcesZh_hantAllJson, map[string]*bintree{}},
-        }},
-    }},
+	"wski18n": {nil, map[string]*bintree{
+		"resources": {nil, map[string]*bintree{
+			"de_DE.all.json":   {wski18nResourcesDe_deAllJson, map[string]*bintree{}},
+			"en_US.all.json":   {wski18nResourcesEn_usAllJson, map[string]*bintree{}},
+			"es_ES.all.json":   {wski18nResourcesEs_esAllJson, map[string]*bintree{}},
+			"fr_FR.all.json":   {wski18nResourcesFr_frAllJson, map[string]*bintree{}},
+			"it_IT.all.json":   {wski18nResourcesIt_itAllJson, map[string]*bintree{}},
+			"ja_JA.all.json":   {wski18nResourcesJa_jaAllJson, map[string]*bintree{}},
+			"ko_KR.all.json":   {wski18nResourcesKo_krAllJson, map[string]*bintree{}},
+			"pt_BR.all.json":   {wski18nResourcesPt_brAllJson, map[string]*bintree{}},
+			"zh_Hans.all.json": {wski18nResourcesZh_hansAllJson, map[string]*bintree{}},
+			"zh_Hant.all.json": {wski18nResourcesZh_hantAllJson, map[string]*bintree{}},
+		}},
+	}},
 }}
 
 // RestoreAsset restores an asset under the given directory
 func RestoreAsset(dir, name string) error {
-    data, err := Asset(name)
-    if err != nil {
-        return err
-    }
-    info, err := AssetInfo(name)
-    if err != nil {
-        return err
-    }
-    err = os.MkdirAll(_filePath(dir, filepath.Dir(name)), os.FileMode(0755))
-    if err != nil {
-        return err
-    }
-    err = ioutil.WriteFile(_filePath(dir, name), data, info.Mode())
-    if err != nil {
-        return err
-    }
-    err = os.Chtimes(_filePath(dir, name), info.ModTime(), info.ModTime())
-    if err != nil {
-        return err
-    }
-    return nil
+	data, err := Asset(name)
+	if err != nil {
+		return err
+	}
+	info, err := AssetInfo(name)
+	if err != nil {
+		return err
+	}
+	err = os.MkdirAll(_filePath(dir, filepath.Dir(name)), os.FileMode(0755))
+	if err != nil {
+		return err
+	}
+	err = ioutil.WriteFile(_filePath(dir, name), data, info.Mode())
+	if err != nil {
+		return err
+	}
+	err = os.Chtimes(_filePath(dir, name), info.ModTime(), info.ModTime())
+	if err != nil {
+		return err
+	}
+	return nil
 }
 
 // RestoreAssets restores an asset under the given directory recursively
 func RestoreAssets(dir, name string) error {
-    children, err := AssetDir(name)
-    // File
-    if err != nil {
-        return RestoreAsset(dir, name)
-    }
-    // Dir
-    for _, child := range children {
-        err = RestoreAssets(dir, filepath.Join(name, child))
-        if err != nil {
-            return err
-        }
-    }
-    return nil
+	children, err := AssetDir(name)
+	// File
+	if err != nil {
+		return RestoreAsset(dir, name)
+	}
+	// Dir
+	for _, child := range children {
+		err = RestoreAssets(dir, filepath.Join(name, child))
+		if err != nil {
+			return err
+		}
+	}
+	return nil
 }
 
 func _filePath(dir, name string) string {
-    cannonicalName := strings.Replace(name, "\\", "/", -1)
-    return filepath.Join(append([]string{dir}, strings.Split(cannonicalName, "/")...)...)
+	cannonicalName := strings.Replace(name, "\\", "/", -1)
+	return filepath.Join(append([]string{dir}, strings.Split(cannonicalName, "/")...)...)
 }
-

-- 
To stop receiving notification emails like this one, please contact
csantanapr@apache.org.

[incubator-openwhisk-cli] 03/03: Fix test breakage...

Posted by cs...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

csantanapr pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/incubator-openwhisk-cli.git

commit 44e3bfce770eb8f86fbf7449bd3752a0dbaa695e
Author: dubeejw <jw...@us.ibm.com>
AuthorDate: Sat Jan 27 12:24:41 2018 -0500

    Fix test breakage...
---
 tests/src/test/scala/whisk/core/cli/test/WskWebActionsTests.scala | 5 ++++-
 1 file changed, 4 insertions(+), 1 deletion(-)

diff --git a/tests/src/test/scala/whisk/core/cli/test/WskWebActionsTests.scala b/tests/src/test/scala/whisk/core/cli/test/WskWebActionsTests.scala
index 1a5976a..fc5daf0 100644
--- a/tests/src/test/scala/whisk/core/cli/test/WskWebActionsTests.scala
+++ b/tests/src/test/scala/whisk/core/cli/test/WskWebActionsTests.scala
@@ -36,11 +36,14 @@ import common.WhiskProperties
 import common.BaseWsk
 import common.WskProps
 import common.WskTestHelpers
+import common.SimpleExec
+
 import spray.json._
 import spray.json.DefaultJsonProtocol._
+
 import system.rest.RestUtil
+
 import whisk.common.PrintStreamLogging
-import whisk.common.SimpleExec
 import whisk.common.TransactionId
 import whisk.core.entity.Subject
 

-- 
To stop receiving notification emails like this one, please contact
csantanapr@apache.org.