You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@openwhisk.apache.org by GitBox <gi...@apache.org> on 2018/03/09 01:08:07 UTC
[GitHub] pritidesai closed pull request #785: Add trace support, include -trace flag and -v for go test.
pritidesai closed pull request #785: Add trace support, include -trace flag and -v for go test.
URL: https://github.com/apache/incubator-openwhisk-wskdeploy/pull/785
This is a PR merged from a forked repository.
As GitHub hides the original diff on merge, it is displayed below for
the sake of provenance:
As this is a foreign pull request (from a fork), the diff is supplied
below (as it won't show otherwise due to GitHub magic):
diff --git a/README.md b/README.md
index cd519baa..f4c81020 100644
--- a/README.md
+++ b/README.md
@@ -141,6 +141,22 @@ $ git branch --set-upstream-to origin/master # track master from origin now
You can now use `git push` to push changes to your repository and submit pull requests.
+### Developers should use "go deps" and "go build" not "go get"
+
+The Whisk deploy project is setup for development purposes and uses "go deps" for dependency management. We do NOT recommend using "go get" as this will use the latest dependencies for all imported GitHub repos. which is not supported.
+
+- See: [https://github.com/tools/godep](https://github.com/tools/godep)
+
+Specifically, for development please use:
+
+```
+$ git clone git@github.com:mrutkows/incubator-openwhisk-wskdeploy
+$ go build
+```
+
+for end-users, please use versioned releases of binaries.
+- [https://github.com/apache/incubator-openwhisk-wskdeploy/releases](https://github.com/apache/incubator-openwhisk-wskdeploy/releases)
+
### How to Cross Compile Binary with Gradle/Docker
If you don't want to bother with go installation, build, git clone etc, and you can do it with Gradle/Docker.
@@ -174,7 +190,7 @@ Then, you will find the binaries and their compressed packages generated under t
### Building for Internationalization
Please follow this process for building any changes to translatable strings:
-[How to generate the file i18n_resources.go for internationalization](https://github.com/apache/incubator-openwhisk-wskdeploy/blob/master/wski18n/README.md)
+- [How to generate the file i18n_resources.go for internationalization](https://github.com/apache/incubator-openwhisk-wskdeploy/blob/master/wski18n/README.md)
<!-- ----------------------------------------------------------------------------- -->
@@ -204,7 +220,11 @@ while there, you can verify that your upstream repository is set correctly:
#### Git clone RPC failed: HTTP 301
-This sometimes occurs using "go get" the wskdeploy code (which indirectly invokes "git clone"). You might get this error when downloading `incubator-openwhisk-wskdeploy`:
+This sometimes occurs using "go get" the wskdeploy code (which indirectly invokes "git clone").
+
+<b>Note: Using "go get" for development is unsupported; instead, please use "go deps" for dependency management.</b>
+
+You might get this error when downloading `incubator-openwhisk-wskdeploy`:
Cloning into ''$GOAPTH/src/gopkg.in/yaml.v2'...
error: RPC failed; HTTP 301 curl 22 The requested URL returned error: 301
diff --git a/cmd/root.go b/cmd/root.go
index 082515e7..c29eca12 100644
--- a/cmd/root.go
+++ b/cmd/root.go
@@ -111,6 +111,7 @@ func init() {
// with any other Whisk Deploy command e.g. undeploy, export, etc.
// TODO() Publish command, not completed
// TODO() Report command, not completed
+ // TODO() have a single function that conditionally (i.e., Trace=true) prints ALL Flags
RootCmd.PersistentFlags().StringVar(&utils.Flags.CfgFile, "config", "", wski18n.T(wski18n.ID_CMD_FLAG_CONFIG))
RootCmd.PersistentFlags().StringVarP(&utils.Flags.ProjectPath, "project", "p", ".", wski18n.T(wski18n.ID_CMD_FLAG_PROJECT))
RootCmd.PersistentFlags().StringVarP(&utils.Flags.ManifestPath, "manifest", "m", "", wski18n.T(wski18n.ID_CMD_FLAG_MANIFEST))
@@ -126,6 +127,8 @@ func init() {
RootCmd.PersistentFlags().StringVarP(&utils.Flags.Cert, "cert", "c", "", wski18n.T(wski18n.ID_CMD_FLAG_CERT_FILE))
RootCmd.PersistentFlags().BoolVarP(&utils.Flags.Managed, "managed", "", false, wski18n.T(wski18n.ID_CMD_FLAG_MANAGED))
RootCmd.PersistentFlags().StringVarP(&utils.Flags.ProjectName, "projectname", "", "", wski18n.T(wski18n.ID_CMD_FLAG_PROJECTNAME))
+ RootCmd.PersistentFlags().BoolVarP(&utils.Flags.Trace, "trace", "t", false, wski18n.T(wski18n.ID_CMD_FLAG_TRACE))
+ RootCmd.PersistentFlags().MarkHidden("trace")
}
// initConfig reads in config file and ENV variables if set.
@@ -149,6 +152,7 @@ func initConfig() {
}
}
+// TODO() add Trace of runtimes found at apihost
func setSupportedRuntimes(apiHost string) {
op, error := utils.ParseOpenWhisk(apiHost)
if error == nil {
@@ -159,12 +163,46 @@ func setSupportedRuntimes(apiHost string) {
}
}
+func displayCommandUsingFilenameMessage(command string, filetype string, path string) {
+ msg := wski18n.T(wski18n.ID_MSG_COMMAND_USING_X_cmd_X_filetype_X_path_X,
+ map[string]interface{}{
+ wski18n.KEY_CMD: command,
+ wski18n.KEY_FILE_TYPE: filetype,
+ wski18n.KEY_PATH: path})
+ wskprint.PrintlnOpenWhiskVerbose(utils.Flags.Verbose, msg)
+}
+
+func loadDefaultManifestFileFromProjectPath(command string, projectPath string) error {
+
+ if _, err := os.Stat(path.Join(projectPath, utils.ManifestFileNameYaml)); err == nil {
+ utils.Flags.ManifestPath = path.Join(projectPath, utils.ManifestFileNameYaml)
+ } else if _, err := os.Stat(path.Join(projectPath, utils.ManifestFileNameYml)); err == nil {
+ utils.Flags.ManifestPath = path.Join(projectPath, utils.ManifestFileNameYml)
+ } else {
+ stderr = wski18n.T(wski18n.ID_ERR_MANIFEST_FILE_NOT_FOUND_X_path_X,
+ map[string]interface{}{wski18n.KEY_PATH: projectPath})
+ return wskderrors.NewErrorManifestFileNotFound(projectPath, stderr)
+ }
+ displayCommandUsingFilenameMessage(command, wski18n.MANIFEST_FILE, utils.Flags.ManifestPath)
+ return nil
+}
+
+func loadDefaultDeploymentFileFromProjectPath(command string, projectPath string) error {
+
+ if _, err := os.Stat(path.Join(projectPath, utils.DeploymentFileNameYaml)); err == nil {
+ utils.Flags.DeploymentPath = path.Join(projectPath, utils.DeploymentFileNameYaml)
+ } else if _, err := os.Stat(path.Join(projectPath, utils.DeploymentFileNameYml)); err == nil {
+ utils.Flags.DeploymentPath = path.Join(projectPath, utils.DeploymentFileNameYml)
+ }
+ displayCommandUsingFilenameMessage(command, wski18n.DEPLOYMENT_FILE, utils.Flags.ManifestPath)
+ return nil
+}
+
func Deploy() error {
+ // Convey flags for verbose and trace to Go client
whisk.SetVerbose(utils.Flags.Verbose)
- // Verbose mode is the only mode for wskdeploy to turn on all the debug messages,
- // so set Verbose mode (and also debug mode) to true.
- whisk.SetDebug(utils.Flags.Verbose)
+ whisk.SetDebug(utils.Flags.Trace)
project_Path := strings.TrimSpace(utils.Flags.ProjectPath)
if len(project_Path) == 0 {
@@ -172,29 +210,17 @@ func Deploy() error {
}
projectPath, _ := filepath.Abs(project_Path)
- // TODO() identical code block below; please create function both can share
+ // If manifest filename is not provided, attempt to load default manifests from project path
if utils.Flags.ManifestPath == "" {
- if _, err := os.Stat(path.Join(projectPath, utils.ManifestFileNameYaml)); err == nil {
- utils.Flags.ManifestPath = path.Join(projectPath, utils.ManifestFileNameYaml)
- stdout = wski18n.T(wski18n.ID_MSG_MANIFEST_DEPLOY_X_path_X,
- map[string]interface{}{wski18n.KEY_PATH: utils.Flags.ManifestPath})
- } else if _, err := os.Stat(path.Join(projectPath, utils.ManifestFileNameYml)); err == nil {
- utils.Flags.ManifestPath = path.Join(projectPath, utils.ManifestFileNameYml)
- stdout = wski18n.T(wski18n.ID_MSG_MANIFEST_DEPLOY_X_path_X,
- map[string]interface{}{wski18n.KEY_PATH: utils.Flags.ManifestPath})
- } else {
- stderr = wski18n.T(wski18n.ID_ERR_MANIFEST_FILE_NOT_FOUND_X_path_X,
- map[string]interface{}{wski18n.KEY_PATH: projectPath})
- return wskderrors.NewErrorManifestFileNotFound(projectPath, stderr)
+ if err := loadDefaultManifestFileFromProjectPath(wski18n.CMD_DEPLOY, projectPath); err != nil {
+ return err
}
- whisk.Debug(whisk.DbgInfo, stdout)
}
if utils.Flags.DeploymentPath == "" {
- if _, err := os.Stat(path.Join(projectPath, utils.DeploymentFileNameYaml)); err == nil {
- utils.Flags.DeploymentPath = path.Join(projectPath, utils.DeploymentFileNameYaml)
- } else if _, err := os.Stat(path.Join(projectPath, utils.DeploymentFileNameYml)); err == nil {
- utils.Flags.DeploymentPath = path.Join(projectPath, utils.DeploymentFileNameYml)
+
+ if err := loadDefaultDeploymentFileFromProjectPath(wski18n.CMD_DEPLOY, projectPath); err != nil {
+ return err
}
}
@@ -209,7 +235,11 @@ func Deploy() error {
// master record of any dependency that has been downloaded
deployer.DependencyMaster = make(map[string]utils.DependencyRecord)
- clientConfig, error := deployers.NewWhiskConfig(utils.Flags.CfgFile, utils.Flags.DeploymentPath, utils.Flags.ManifestPath, deployer.IsInteractive)
+ clientConfig, error := deployers.NewWhiskConfig(
+ utils.Flags.CfgFile,
+ utils.Flags.DeploymentPath,
+ utils.Flags.ManifestPath,
+ deployer.IsInteractive)
if error != nil {
return error
}
@@ -250,10 +280,9 @@ func Deploy() error {
func Undeploy() error {
+ // Convey flags for verbose and trace to Go client
whisk.SetVerbose(utils.Flags.Verbose)
- // Verbose mode is the only mode for wskdeploy to turn on all the debug messages, so the currenty Verbose mode
- // also set debug mode to true.
- whisk.SetDebug(utils.Flags.Verbose)
+ whisk.SetDebug(utils.Flags.Trace)
project_Path := strings.TrimSpace(utils.Flags.ProjectPath)
if len(project_Path) == 0 {
@@ -261,41 +290,17 @@ func Undeploy() error {
}
projectPath, _ := filepath.Abs(project_Path)
+ // If manifest filename is not provided, attempt to load default manifests from project path
if utils.Flags.ManifestPath == "" {
- if _, err := os.Stat(path.Join(projectPath, utils.ManifestFileNameYaml)); err == nil {
- utils.Flags.ManifestPath = path.Join(projectPath, utils.ManifestFileNameYaml)
- stdout = wski18n.T(wski18n.ID_MSG_MANIFEST_UNDEPLOY_X_path_X,
- map[string]interface{}{wski18n.KEY_PATH: utils.Flags.ManifestPath})
- } else if _, err := os.Stat(path.Join(projectPath, utils.ManifestFileNameYml)); err == nil {
- utils.Flags.ManifestPath = path.Join(projectPath, utils.ManifestFileNameYml)
- stdout = wski18n.T(wski18n.ID_MSG_MANIFEST_UNDEPLOY_X_path_X,
- map[string]interface{}{wski18n.KEY_PATH: utils.Flags.ManifestPath})
- } else {
- stderr = wski18n.T(wski18n.ID_ERR_MANIFEST_FILE_NOT_FOUND_X_path_X,
- map[string]interface{}{wski18n.KEY_PATH: projectPath})
- return wskderrors.NewErrorManifestFileNotFound(projectPath, stderr)
+ if err := loadDefaultManifestFileFromProjectPath(wski18n.CMD_UNDEPLOY, projectPath); err != nil {
+ return err
}
- wskprint.PrintlnOpenWhiskVerbose(utils.Flags.Verbose, stdout)
}
if utils.Flags.DeploymentPath == "" {
- if _, err := os.Stat(path.Join(projectPath, utils.DeploymentFileNameYaml)); err == nil {
- utils.Flags.DeploymentPath = path.Join(projectPath, utils.DeploymentFileNameYaml)
- // TODO() have a single function that conditionally (verbose) prints ALL Flags
- dbgMsg := fmt.Sprintf("%s >> [%s]: [%s]",
- wski18n.T(wski18n.ID_DEBUG_UNDEPLOYING_USING),
- wski18n.DEPLOYMENT,
- utils.Flags.DeploymentPath)
- wskprint.PrintlnOpenWhiskVerbose(utils.Flags.Verbose, dbgMsg)
-
- } else if _, err := os.Stat(path.Join(projectPath, utils.DeploymentFileNameYml)); err == nil {
- utils.Flags.DeploymentPath = path.Join(projectPath, utils.DeploymentFileNameYml)
- // TODO() have a single function that conditionally (verbose) prints ALL Flags
- dbgMsg := fmt.Sprintf("%s >> [%s]: [%s]",
- wski18n.T(wski18n.ID_DEBUG_UNDEPLOYING_USING),
- wski18n.DEPLOYMENT,
- utils.Flags.DeploymentPath)
- wskprint.PrintlnOpenWhiskVerbose(utils.Flags.Verbose, dbgMsg)
+
+ if err := loadDefaultDeploymentFileFromProjectPath(wski18n.CMD_UNDEPLOY, projectPath); err != nil {
+ return err
}
}
diff --git a/deployers/deploymentreader.go b/deployers/deploymentreader.go
index a31addd5..ed31125b 100644
--- a/deployers/deploymentreader.go
+++ b/deployers/deploymentreader.go
@@ -20,6 +20,7 @@ package deployers
import (
"github.com/apache/incubator-openwhisk-client-go/whisk"
"github.com/apache/incubator-openwhisk-wskdeploy/parsers"
+ "github.com/apache/incubator-openwhisk-wskdeploy/utils"
"github.com/apache/incubator-openwhisk-wskdeploy/wskenv"
"github.com/apache/incubator-openwhisk-wskdeploy/wski18n"
"github.com/apache/incubator-openwhisk-wskdeploy/wskprint"
@@ -77,7 +78,7 @@ func (reader *DeploymentReader) getPackageMap() map[string]parsers.Package {
wski18n.ID_DEBUG_PACKAGES_FOUND_UNDER_ROOT_X_path_X,
map[string]interface{}{
wski18n.KEY_PATH: reader.DeploymentDescriptor.Filepath})
- wskprint.PrintlnOpenWhiskTrace(false, infoMsg)
+ wskprint.PrintlnOpenWhiskTrace(utils.Flags.Trace, infoMsg)
for packName, depPacks := range reader.DeploymentDescriptor.Packages {
depPacks.Packagename = packName
packMap[packName] = depPacks
@@ -90,7 +91,7 @@ func (reader *DeploymentReader) getPackageMap() map[string]parsers.Package {
map[string]interface{}{
wski18n.KEY_PATH: reader.DeploymentDescriptor.Filepath,
wski18n.KEY_NAME: reader.DeploymentDescriptor.GetProject().Name})
- wskprint.PrintlnOpenWhiskTrace(false, infoMsg)
+ wskprint.PrintlnOpenWhiskTrace(utils.Flags.Trace, infoMsg)
for packName, depPacks := range reader.DeploymentDescriptor.GetProject().Packages {
depPacks.Packagename = packName
@@ -349,5 +350,5 @@ func displayEntityFoundInDeploymentTrace(entityType string, entityName string) {
map[string]interface{}{
wski18n.KEY_KEY: entityType,
wski18n.KEY_NAME: entityName})
- wskprint.PrintlnOpenWhiskTrace(true, infoMsg)
+ wskprint.PrintlnOpenWhiskTrace(utils.Flags.Trace, infoMsg)
}
diff --git a/deployers/deploymentreader_test.go b/deployers/deploymentreader_test.go
index cc48f2ca..1c6e52c3 100644
--- a/deployers/deploymentreader_test.go
+++ b/deployers/deploymentreader_test.go
@@ -22,6 +22,8 @@ package deployers
import (
"fmt"
"github.com/apache/incubator-openwhisk-client-go/whisk"
+ "github.com/apache/incubator-openwhisk-wskdeploy/utils"
+ "github.com/apache/incubator-openwhisk-wskdeploy/wskprint"
"github.com/stretchr/testify/assert"
"reflect"
"testing"
@@ -48,7 +50,8 @@ var deployment_file = "../tests/usecases/github/deployment.yaml"
var manifest_file = "../tests/usecases/github/manifest.yaml"
func init() {
- // TODO(): setup "trace" flag here (and in all unit test files)
+ // Setup "trace" flag for unit tests based upon "go test" -v flag
+ utils.Flags.Trace = wskprint.DetectGoTestVerbose()
}
// Check DeploymentReader could handle deployment yaml successfully.
diff --git a/deployers/manifestreader_test.go b/deployers/manifestreader_test.go
index 39999d8a..7d5acbc5 100644
--- a/deployers/manifestreader_test.go
+++ b/deployers/manifestreader_test.go
@@ -22,6 +22,8 @@ package deployers
import (
"github.com/apache/incubator-openwhisk-client-go/whisk"
"github.com/apache/incubator-openwhisk-wskdeploy/parsers"
+ "github.com/apache/incubator-openwhisk-wskdeploy/utils"
+ "github.com/apache/incubator-openwhisk-wskdeploy/wskprint"
"github.com/stretchr/testify/assert"
"testing"
)
@@ -32,6 +34,9 @@ var ms *parsers.YAML
func init() {
+ // Setup "trace" flag for unit tests based upon "go test" -v flag
+ utils.Flags.Trace = wskprint.DetectGoTestVerbose()
+
sd = NewServiceDeployer()
sd.ManifestPath = manifest_file
mr = NewManifestReader(sd)
diff --git a/parsers/manifest_parser.go b/parsers/manifest_parser.go
index f654cfa4..63a55c19 100644
--- a/parsers/manifest_parser.go
+++ b/parsers/manifest_parser.go
@@ -809,7 +809,7 @@ func (dm *YAMLParser) ComposeTriggers(filePath string, pkg Package, ma whisk.Key
map[string]interface{}{
wski18n.KEY_OLD: YAML_KEY_SOURCE,
wski18n.KEY_NEW: YAML_KEY_FEED,
- wski18n.KEY_FILE_TYPE: wski18n.MANIFEST})
+ wski18n.KEY_FILE_TYPE: wski18n.MANIFEST_FILE})
wskprint.PrintOpenWhiskWarning(warningString)
}
if trigger.Feed == "" {
diff --git a/utils/flags.go b/utils/flags.go
index 89550b42..9232fc03 100644
--- a/utils/flags.go
+++ b/utils/flags.go
@@ -31,7 +31,6 @@ type WskDeployFlags struct {
CfgFile string
CliVersion string
CliBuild string
- Verbose bool
ProjectPath string
DeploymentPath string
ManifestPath string
@@ -42,6 +41,8 @@ type WskDeployFlags struct {
Managed bool // OpenWhisk Managed Deployments
ProjectName string // Project name
ApigwAccessToken string
+ Verbose bool
+ Trace bool
}
func (flags *WskDeployFlags) Format() string {
diff --git a/wski18n/i18n_ids.go b/wski18n/i18n_ids.go
index bdde74b3..ac088254 100644
--- a/wski18n/i18n_ids.go
+++ b/wski18n/i18n_ids.go
@@ -17,18 +17,18 @@
package wski18n
-// descriptive key names
// DO NOT TRANSLATE
+// descriptive key names
const (
- ACTION_CODE = "Action source"
ACTIONS = "Actions"
ACTIVATIONS = "Activations"
API_HOST = "API host"
+ APIGW_ACCESS_TOKEN = "API Gateway Access Token"
AUTH_KEY = "authentication key"
COMMAND_LINE = "wskdeploy command line"
- DEPLOYMENT = "deployment"
CONFIGURATION = "Configuration"
- MANIFEST = "manifest"
+ DEPLOYMENT_FILE = "deployment file"
+ MANIFEST_FILE = "manifest file"
NAME_PROJECT = "project name"
NAMESPACES = "Namespaces"
PACKAGE_BINDING = "package binding"
@@ -37,11 +37,44 @@ const (
PACKAGES = "Packages"
RULES = "Rules"
TRIGGER_FEED = "trigger feed"
- APIGW_ACCESS_TOKEN = "API Gateway Access Token"
+ CMD_DEPLOY = "deploy"
+ CMD_UNDEPLOY = "undeploy"
+ CMD_SYNC = "sync"
+)
+
+// DO NOT TRANSLATE
+// Known keys used for text replacement in i18n translated strings
+const (
+ KEY_ACTION = "action"
+ KEY_CMD = "cmd"
+ KEY_CODE = "code"
+ KEY_DEPLOYMENT_NAME = "dname"
+ KEY_DEPLOYMENT_PATH = "dpath"
+ KEY_ERR = "err"
+ KEY_EXTENSION = "ext"
+ KEY_FILE_TYPE = "filetype"
+ KEY_HOST = "host"
+ KEY_KEY = "key"
+ KEY_LIMIT = "limit"
+ KEY_MANIFEST_NAME = "mname"
+ KEY_MANIFEST_PATH = "mpath"
+ KEY_NAME = "name"
+ KEY_NAMESPACE = "namespace"
+ KEY_NEW = "newkey"
+ KEY_OLD = "oldkey"
+ KEY_PATH = "path"
+ KEY_PROJECT = "project"
+ KEY_RUNTIME = "runtime"
+ KEY_SOURCE = "source"
+ KEY_VALUE = "value"
+ KEY_VALUE_MIN = "min" // TODO() attempt to use this for Limit value range errors
+ KEY_VALUE_MAX = "max" // TODO() attempt to use this for Limit value range errors
+ KEY_API = "api"
+ KEY_URL = "url"
)
-// i18n Identifiers
// DO NOT TRANSLATE
+// i18n Identifiers
const (
// Debug / trace message prefixes
ID_MSG_PREFIX_ERROR = "msg_prefix_error" // "Error"
@@ -72,9 +105,12 @@ const (
ID_CMD_FLAG_NAMESPACE = "msg_cmd_flag_namespace"
ID_CMD_FLAG_PROJECT = "msg_cmd_flag_project"
ID_CMD_FLAG_STRICT = "msg_cmd_flag_strict"
- ID_CMD_FLAG_TOGGLE_HELP = "msg_cmd_flag_toggle_help"
+ ID_CMD_FLAG_TRACE = "msg_cmd_flag_trace"
ID_CMD_FLAG_VERBOSE = "msg_cmd_flag_allow_verbose"
+ // Root <command> using <manifest | deployment> file
+ ID_MSG_COMMAND_USING_X_cmd_X_filetype_X_path_X = "msg_command_using_filename_at_path"
+
// Configuration messages
ID_MSG_CONFIG_MISSING_AUTHKEY = "msg_config_missing_authkey"
ID_MSG_CONFIG_MISSING_APIHOST = "msg_config_missing_apihost"
@@ -99,9 +135,6 @@ const (
ID_MSG_UNDEPLOYMENT_FAILED = "msg_undeployment_failed"
ID_MSG_UNDEPLOYMENT_SUCCEEDED = "msg_undeployment_succeeded"
- ID_MSG_MANIFEST_DEPLOY_X_path_X = "msg_manifest_using_deployment"
- ID_MSG_MANIFEST_UNDEPLOY_X_path_X = "msg_manifest_using_undeployment"
-
ID_MSG_ENTITY_DEPLOYED_SUCCESS_X_key_X_name_X = "msg_entity_deployed_success"
ID_MSG_ENTITY_DEPLOYING_X_key_X_name_X = "msg_entity_deploying"
ID_MSG_ENTITY_UNDEPLOYED_SUCCESS_X_key_X_name_X = "msg_entity_undeployed_success"
@@ -171,44 +204,13 @@ const (
ID_WARN_PROJECT_NAME_OVERRIDDEN = "msg_warn_project_name_overridden"
// Verbose (Debug/Trace) messages
- ID_DEBUG_DEPLOYING_USING = "msg_dbg_deploying_using"
- ID_DEBUG_UNDEPLOYING_USING = "msg_dbg_undeploying_using"
ID_DEBUG_PROJECT_SEARCH_X_path_X_key_X = "msg_dbg_searching_project_directory"
ID_DEBUG_DEPLOYMENT_NAME_FOUND_X_key_X_name_X = "msg_dbg_deployment_name_found"
ID_DEBUG_PACKAGES_FOUND_UNDER_ROOT_X_path_X = "msg_dbg_packages_found_root"
ID_DEBUG_PACKAGES_FOUND_UNDER_PROJECT_X_path_X_name_X = "msg_dbg_packages_found_project"
)
-// Known keys used for text replacement in i18n translated strings
-const (
- KEY_ACTION = "action"
- KEY_CMD = "cmd"
- KEY_CODE = "code"
- KEY_DEPLOYMENT_NAME = "dname"
- KEY_DEPLOYMENT_PATH = "dpath"
- KEY_ERR = "err"
- KEY_EXTENSION = "ext"
- KEY_FILE_TYPE = "filetype"
- KEY_HOST = "host"
- KEY_KEY = "key"
- KEY_LIMIT = "limit"
- KEY_MANIFEST_NAME = "mname"
- KEY_MANIFEST_PATH = "mpath"
- KEY_NAME = "name"
- KEY_NAMESPACE = "namespace"
- KEY_NEW = "newkey"
- KEY_OLD = "oldkey"
- KEY_PATH = "path"
- KEY_PROJECT = "project"
- KEY_RUNTIME = "runtime"
- KEY_SOURCE = "source"
- KEY_VALUE = "value"
- KEY_VALUE_MIN = "min" // TODO() attempt to use this for Limit value range errors
- KEY_VALUE_MAX = "max" // TODO() attempt to use this for Limit value range errors
- KEY_API = "api"
- KEY_URL = "url"
-)
-
+// DO NOT TRANSLATE
// Used to unit test that translations exist with these IDs
var I18N_ID_SET = [](string){
ID_CMD_DESC_LONG_REPORT,
@@ -226,19 +228,17 @@ var I18N_ID_SET = [](string){
ID_CMD_FLAG_INTERACTIVE,
ID_CMD_FLAG_KEY_FILE,
ID_CMD_FLAG_MANAGED,
- ID_CMD_FLAG_PROJECTNAME,
ID_CMD_FLAG_MANIFEST,
ID_CMD_FLAG_NAMESPACE,
ID_CMD_FLAG_PROJECT,
+ ID_CMD_FLAG_PROJECTNAME,
ID_CMD_FLAG_STRICT,
- ID_CMD_FLAG_TOGGLE_HELP,
+ ID_CMD_FLAG_TRACE,
ID_CMD_FLAG_VERBOSE,
- ID_DEBUG_DEPLOYING_USING,
ID_DEBUG_DEPLOYMENT_NAME_FOUND_X_key_X_name_X,
ID_DEBUG_PACKAGES_FOUND_UNDER_PROJECT_X_path_X_name_X,
ID_DEBUG_PACKAGES_FOUND_UNDER_ROOT_X_path_X,
ID_DEBUG_PROJECT_SEARCH_X_path_X_key_X,
- ID_DEBUG_UNDEPLOYING_USING,
ID_ERR_DEPENDENCY_UNKNOWN_TYPE,
ID_ERR_ENTITY_CREATE_X_key_X_err_X_code_X,
ID_ERR_ENTITY_DELETE_X_key_X_err_X_code_X,
@@ -252,6 +252,7 @@ var I18N_ID_SET = [](string){
ID_ERR_RUNTIMES_GET_X_err_X,
ID_ERR_URL_INVALID_X_urltype_X_url_X_filetype_X,
ID_ERR_URL_MALFORMED_X_urltype_X_url_X,
+ ID_MSG_COMMAND_USING_X_cmd_X_filetype_X_path_X,
ID_MSG_CONFIG_INFO_APIHOST_X_host_X_source_X,
ID_MSG_CONFIG_INFO_AUTHKEY_X_source_X,
ID_MSG_CONFIG_INFO_NAMESPACE_X_namespace_X_source_X,
@@ -274,8 +275,6 @@ var I18N_ID_SET = [](string){
ID_MSG_ENTITY_UNDEPLOYING_X_key_X_name_X,
ID_MSG_MANAGED_FOUND_DELETED_X_key_X_name_X_project_X,
ID_MSG_MANAGED_UNDEPLOYMENT_FAILED,
- ID_MSG_MANIFEST_DEPLOY_X_path_X,
- ID_MSG_MANIFEST_UNDEPLOY_X_path_X,
ID_MSG_PREFIX_ERROR,
ID_MSG_PREFIX_INFO,
ID_MSG_PREFIX_SUCCESS,
diff --git a/wski18n/i18n_resources.go b/wski18n/i18n_resources.go
index e7f32424..f8a38356 100644
--- a/wski18n/i18n_resources.go
+++ b/wski18n/i18n_resources.go
@@ -92,12 +92,12 @@ func wski18nResourcesDe_deAllJson() (*asset, error) {
return nil, err
}
- info := bindataFileInfo{name: "wski18n/resources/de_DE.all.json", size: 0, mode: os.FileMode(420), modTime: time.Unix(1520374115, 0)}
+ info := bindataFileInfo{name: "wski18n/resources/de_DE.all.json", size: 0, mode: os.FileMode(420), modTime: time.Unix(1515697090, 0)}
a := &asset{bytes: bytes, info: info}
return a, nil
}
-var _wski18nResourcesEn_usAllJson = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xc4\x5b\x6d\x6f\xdc\x36\xf2\x7f\x9f\x4f\x31\x08\xfe\x40\x5a\x60\xa3\xa4\xfd\xe3\x80\x43\x00\xe3\x90\xbb\xa4\xad\xaf\x4d\x1c\xd8\xc9\x05\x45\x6a\x28\x5c\x71\x76\x97\xb5\x44\x0a\x24\xe5\xcd\xd6\xf0\x77\x3f\x0c\x1f\x24\xed\xda\x94\xe8\x4d\x8b\xeb\x9b\x6e\xc2\xe1\xcc\x6f\x86\xe4\x3c\x2a\x9f\x1e\x01\xdc\x3c\x02\x00\x78\x2c\xf8\xe3\x17\xf0\xb8\x31\xeb\xb2\xd5\xb8\x12\x5f\x4a\xd4\x5a\xe9\xc7\x0b\xbf\x6a\x35\x93\xa6\x66\x56\x28\x49\x64\xaf\xdd\xda\x23\x80\xdb\xc5\x04\x07\x21\x57\x2a\xc1\xe0\x94\x96\xe6\xf6\x9b\xae\xaa\xd0\x98\x04\x8b\x8b\xb0\x3a\xc7\x65\xcb\xb4\x14\x72\x9d\xe0\xf2\x31\xac\x26\xb9\x54\x0d\x2f\x39\x9a\xaa\xac\x95\x5c\x97\x1a\x5b\xa5\x6d\x82\xd7\xb9\x5b\x34\xa0\x24\x70\x6c\x6b\xb5\x43\x0e\x28\xad\xb0\x02\x0d\x7c\x23\x0a\x2c\x16\xf0\x8e\x55\x57\x6c\x8d\x66\x01\x2f\x2b\xda\x67\x16\xf0\x5e\x8b\xf5\x1a\xb5\x59\xc0\x79\x57\xd3\x0a\xda\xaa\xf8\x16\x98\x81\x2d\xd6\x35\xfd\x5f\x63\x85\xd2\xba\x1d\xd7\x4e\x9a\x01\x21\xc1\x6e\x10\x4c\x8b\x95\x58\x09\xe4\x20\x59\x83\xa6\x65\x15\x16\xd9\xba\x28\x95\xd2\xe4\x25\x58\xa5\x6a\xb0\x2a\x28\xb2\x80\x4e\xfa\x5f\xc0\x24\x07\xb3\x93\x15\xa8\x16\xe5\x76\x23\xcc\x15\xb4\x41\x27\xe8\x8c\x90\x6b\x60\xd0\x30\x29\x56\x68\xac\x23\x56\x2d\x71\x65\x75\x60\xd5\x90\x26\x2b\x51\xf7\xe4\xbf\xbe\x7c\xf3\x4b\x0e\x66\xb3\x51\xda\x4e\x1f\xc0\x3b\xad\xae\x05\x47\x03\x0c\x4c\xd7\x34\x4c\xef\xc0\xd3\x83\x5a\xc1\x76\xc3\xec\x13\x03\x4b\xc4\xd1\xf1\x7c\x9d\x19\x03\xa4\x59\x3b\x1a\xb4\x64\xcb\x0d\xd6\x6d\x10\x0d\x3b\xd5\xe9\x2c\x13\x92\xa9\xf2\xb1\x5c\xa3\x36\x24\x3b\x65\x1f\x21\xad\x53\x38\xd0\x81\xec\x9a\x25\x6a\x67\x1e\x73\xe5\xa1\x4d\xcb\x5a\xd5\x6c\x5d\xb2\x56\x94\x1b\x65\x52\x5a\x7b\x95\x5e\xbe\x3b\x85\xcf\x3f\x9d\x5d\xbc\xff\x9c\xc9\x71\x1a\xfb\x88\xe9\x7f\x5e\x9f\x5f\x9c\x9e\xbd\xcd\xe2\xdb\xd9\x4d\x79\x85\xbb\x04\x53\x5a\x56\x5a\xfc\xe1\xfe\x02\x3e\xff\xfc\xfa\xd7\x1c\xa6\x15\x6a\x5b\xd2\xb9\x24\xb8\xb6\xcc\x6e\xc8\xa4\x64\xe8\x82\x88\xdd\x21\xe6\x30\x56\x72\x25\x52\x9e\xca\x2f\x3a\x56\xf0\x0d\xc7\x15\xeb\x6a\x0b\xc2\xc0\xff\xfd\x74\xf6\xe6\xf5\xb3\x62\x6b\xae\x5a\xad\x5a\xf3\x6d\x8e\x55\xea\x5a\x6d\xcb\xc0\x23\xe5\x5f\x1d\x11\xf4\x44\xf3\x5c\x87\xf7\x3d\x65\x97\xde\xa7\xf4\x8e\x20\x83\xb5\x90\x16\x35\x23\xf7\x97\xb2\xb9\x47\x3b\xa2\x83\x56\xab\xa6\xcd\x02\x7e\x85\xbb\xec\xe3\xbc\xc2\x5d\x2e\x68\x6f\xe5\x86\x49\xb6\x46\x3e\x09\xbb\xd5\xea\x77\xac\xec\x10\x2c\xac\x82\x25\x42\xc3\xf4\x15\x72\x88\x1c\xe6\x25\x06\x3e\x25\x39\xb1\x94\x32\x41\x94\x23\x99\xe7\x18\xdd\xd0\xcc\x89\xee\x79\xab\x0c\xb6\xbd\x97\x4d\xf0\x1d\xd6\xb3\x95\x9e\x41\x68\x50\x5f\xa3\xae\xd1\x98\x68\xed\x0c\xd6\xc6\x6a\x91\xe4\xec\x8f\xae\x33\xa8\xe9\x91\x08\x89\x1c\x74\x27\xad\x68\x7a\xef\x9a\x21\xc1\xaa\xf5\xba\xc6\x92\x22\x43\x42\xcc\x7b\x47\x01\x3f\x51\xec\x68\xd0\x18\xb6\xce\xbf\x7b\xd7\xa8\x97\xca\xa4\x8c\x1c\x56\x41\x75\xb6\xed\xa6\xcc\xe1\x1c\x4f\xd9\x08\x43\xb1\xc9\xb9\xd4\xb4\x47\x7d\xbf\x41\x20\x0a\xba\xca\x95\x77\xab\xf4\x64\x84\x01\xa9\x2c\x78\x56\x9d\x46\x5e\xfc\x36\x65\x9e\x03\x89\xad\x98\x88\x36\x24\x91\xc2\x02\x91\x7c\x9d\x9c\xb9\x5b\x49\x92\x7a\x9a\xe3\x44\x05\x55\xa6\x52\xe3\x43\x7d\x3e\xdd\xdc\x14\xf4\xfb\xf6\xf6\x72\x01\x2b\xad\x1a\xb8\xb9\x29\x8c\xea\x74\x85\xb7\xb7\x59\x32\xfd\x81\xcd\xc9\x24\xb2\x78\x56\x06\xed\x71\xb2\x7a\xf3\xcc\x49\xdb\xb3\x23\xa9\xd8\xff\xc5\xf1\x7a\xb6\x62\xbd\x2d\x99\xab\x0a\x4a\xab\xae\x50\xce\xaa\x4c\x3b\xc0\xef\x00\xb7\xe3\x38\xe5\x3b\xd9\x30\x6d\x36\xac\x2e\x6b\x55\xb1\x3a\x21\xf1\x43\xa4\x82\xb3\x16\xe5\x47\x97\xcf\x04\x8f\x61\xbc\x3c\xb7\x1b\xae\x59\xdd\xa1\xc9\x14\x28\xd1\x6e\x95\xbe\x3a\x5a\xa4\x8b\x98\x12\x2d\x30\x4b\xea\x76\xba\x9e\xd1\x75\x08\xde\x65\xc5\x64\x85\x75\x9d\x0c\x6e\x67\x3f\x17\xf0\x2f\x4f\x43\x49\xed\xb0\x33\x57\xc0\x8a\x89\x34\xf7\x57\x43\x16\xc1\x05\x0f\x6f\xb1\x69\x6b\xb4\x08\xa6\xa3\x23\x5d\x75\x75\xbd\x2b\xe0\xbc\x93\xf0\xb9\x4f\x6f\xfb\x4a\xe6\x33\x85\x05\x8d\x8d\xa2\x5c\x81\x69\x2b\x58\x5d\xef\x86\xca\x80\x19\x83\x76\xfa\x14\x46\x48\x7d\x99\x51\x1a\xcb\x6c\x97\x4a\xa8\x9e\x3e\x7d\xfa\xf4\xe4\xe4\xe4\x64\x74\x16\x23\x1d\x2e\xdc\x56\x20\x02\x22\xcc\x92\xea\x0a\x64\xe4\x39\x26\x8a\xa6\xe1\x10\xaa\x6a\x6f\x9c\xe9\x4b\x76\xfc\x59\x8f\xf7\xe6\x0b\x99\x3c\xef\x0f\x23\xca\xe9\x13\xcf\x96\x37\x67\xbf\x3d\x91\x47\x58\x30\xa6\x45\xa5\xab\xea\xe6\x13\xe4\x0f\xae\xf8\x23\x6f\x48\x69\xcb\xed\xed\x25\xac\x94\xce\x7d\x37\x07\xc2\xc6\x8a\x3e\x48\x5c\xf6\xd1\xb9\x6c\x75\x57\xc6\x17\x33\xd3\xae\xb9\xb9\xa1\xdc\xf9\xf6\xb6\x77\xf6\x24\x6f\xc3\x42\x41\x3e\x36\x69\xff\x06\xf3\xa5\xa7\xfb\x3b\xaf\xe2\x3a\xdc\x0b\xa0\x28\x26\x6a\xeb\x20\x22\x1a\xe4\xcf\x54\x71\xe0\x99\xa3\x64\xa4\x4e\xab\xf9\x61\xa0\x38\x42\x51\x8e\x2d\x4a\x8e\xb2\x7a\x88\x3d\x87\x4d\x63\x41\x0f\x93\x33\xbc\xc2\xa4\x51\x5f\xdd\x2b\xe6\x6b\x6e\xce\xfd\x28\xc8\xf7\x74\x3a\x95\xfa\x8d\x3c\xa9\x5a\x25\x54\xff\x1f\x86\xa1\xa8\xcf\xc3\x2e\xca\xd7\x9d\xe0\x5d\x4f\xfa\xe7\x9c\x61\xe6\xd3\x48\x21\x99\x3e\xc7\x3d\x8f\x7e\xe4\x49\xce\x38\x61\xaa\xd5\x8f\x0d\x6b\x0e\x91\x0f\x32\x7d\x2f\x60\x0a\x0b\xf0\x4e\xd3\x49\x06\xb1\xe3\x50\xf1\xd7\xdd\xb7\xa8\xe3\x4a\x75\x92\x97\x01\x6f\x70\x55\xc9\x0b\x50\xa3\x4d\xfa\xa6\xed\x46\x54\x1b\xd8\xba\x46\x37\xe1\xe2\x3e\x35\xb5\x1b\x84\xaa\xd3\x9a\x0c\x13\x15\x8c\xed\x0b\x17\xb4\xfc\x6f\xe2\xc0\x8c\xd3\x85\xec\x97\x1d\xbe\x7c\x7f\x68\xa6\xb8\xfc\x4d\xbe\xab\x91\x19\xd7\x4d\xba\x16\x1c\x1d\x28\xa2\x27\xec\x2e\x5c\xf6\xc9\xdc\x0b\x98\x97\x35\x59\x3a\xdf\x91\xc5\xe4\x61\x29\xed\x6a\x94\x0c\x41\xa1\x93\x9b\x38\x0c\x05\x3b\xd5\x81\x46\x77\xf2\x5b\x26\xed\xd0\x94\x03\xbb\x11\xe6\x1f\xf0\xcd\xee\xd9\xdb\x6f\x33\xe4\xcc\x55\xcc\x77\x55\x1a\x15\x7e\x9f\x62\x13\xd3\x15\x3c\x54\x79\xad\x3b\x34\xf6\x32\x43\x6e\x3c\xe4\x07\x69\xd8\x8f\x30\x32\x75\x0c\xf0\xca\xd0\x9b\x4f\xf5\xd4\xfd\xaa\xd3\x0b\x46\x6d\x59\x8d\xae\xe5\xc4\x17\xc0\xea\x71\xf9\xd5\xbf\x6b\x82\xa3\xfb\x1d\x41\x08\x30\x8d\xfd\x63\x7c\x36\xb8\x42\xe0\x42\x63\x65\x83\x7b\xd4\x7e\x7c\x30\x37\xab\x78\x7d\x7e\x7e\x76\x7e\x91\xc0\x7d\x72\xf8\x1f\x78\x72\xb8\xb3\x70\x72\x32\x91\xa0\x68\xbd\xef\x89\xaf\xa4\xda\xca\xd2\xee\xda\x89\x48\x1a\x3d\x2e\x51\x91\xa9\xc2\xae\x02\x86\x21\x04\x28\x59\xef\xc0\x74\xad\x9f\xa8\x3d\x73\xdd\xff\xc2\xec\x8c\xc5\x06\x96\x42\x72\x21\xd7\x06\x94\x86\xb5\xb0\x9b\x6e\x59\x54\xaa\xe9\x67\x28\xd3\x19\x95\xd6\x31\xab\xaa\x34\x32\x9b\x82\xe9\x26\x9c\xe0\x48\xf6\xfc\xd6\x56\xd8\x0d\xb8\xd1\x68\xec\xc6\xbd\xa0\x45\xd4\xfa\xf6\xd6\x8d\xbb\xfc\x5a\xa5\xb8\x5f\xa0\x1f\x33\x15\xf5\x08\x92\x77\xa6\x93\x90\xf8\x1d\x57\xfa\x17\x41\x5a\x21\xf2\x52\xc8\x6b\x75\x95\x02\xf4\x83\x8b\x6b\xf4\xb4\x3c\x99\x73\x8e\xb4\x0d\xb6\x1b\x37\x64\x0b\x48\xad\x1f\x70\x86\xa5\xbf\x06\xed\x15\xee\xfa\x3e\x5e\xc3\x24\x67\x56\xe9\xa9\x1e\x65\x4f\xe3\x5a\x5e\x9f\xa2\x31\x2f\xe9\x3e\x06\x3e\xb3\x32\xfb\x8a\x4b\x2a\xeb\xa3\x61\x42\xe0\x9b\x71\x7b\xdc\x05\x73\x47\x0d\x8c\xde\xbd\xdd\x8c\x4b\xb0\x59\xa1\xf4\xe8\x49\xd3\x86\xd9\x6a\x33\xa1\x60\x7f\x3d\x68\x03\x77\x22\x78\x0c\xb8\x42\x1e\xce\x60\xfc\x7a\x2c\x03\xb9\x42\xdf\xdc\x74\x42\xdc\xb1\x3a\xf7\x46\x44\xcd\x88\xc9\x5e\xdb\xdf\xaf\x46\x35\xa6\x95\x08\x3d\x28\xba\x5e\xac\x16\x29\xb3\x9d\xfa\x55\x7a\xe6\xe1\x48\xfa\x0e\x3b\xc9\x0a\xbf\x09\xcb\x30\xbf\xdd\x43\xa5\xb4\xc3\xce\xdc\xa4\xdd\xed\xf1\x3f\x73\xec\x1c\x21\xce\x98\xfa\xfc\x21\x80\x0e\xec\xea\x9e\x82\x47\xf4\xc4\x80\xef\x34\x7a\x53\xe2\x17\x8b\xd2\x44\xd0\xf8\xc5\xc6\xe2\xfc\x6b\x54\x31\xe5\x1a\x53\x79\xce\xf0\x94\xd7\xe8\x27\xc4\xc1\xf7\x0e\x53\x8d\xd0\x30\x1c\x22\x19\xc5\x37\x51\x8d\x9e\x6f\xb6\x4d\x3d\xf4\xd2\x6b\xec\x5e\x4f\x2f\x2d\x81\x6f\x4f\x61\x57\x38\x90\x19\x07\x2b\x33\xb9\xeb\xef\x06\x39\x91\xd1\xb1\xcf\xda\x35\x34\xf2\x7b\x08\xb3\x6a\x74\xba\x7e\xf8\xcd\xf5\xcd\x55\x0a\x79\xb7\xb7\xf0\xe1\xfc\x17\x87\xc0\xb5\x5b\xdd\x53\xa2\x3f\x11\x44\x4f\x70\xe9\xc7\xfe\x39\x40\x1a\x56\xaf\x94\x6e\x92\x96\x7b\x13\xd7\xa7\x10\x14\xf0\x5e\xef\x80\xad\x99\x90\x45\x31\x2b\xf6\x77\xa3\x64\xef\x6c\xab\x86\x4f\x0c\xd8\xff\x7d\x71\xf6\x16\x84\x6c\x3b\x0b\x9c\x59\x06\x6f\x82\x35\x9e\x54\x0d\x7f\x42\xae\x77\x5a\x12\x6b\x45\x2f\x68\x8b\xcb\x70\x71\x52\x1f\x5b\xdc\xf3\x36\xe2\xe1\x32\xd8\xe2\x32\xdc\x88\x85\x1b\xaf\x38\xb2\x56\x10\x4d\xc5\xa4\xcf\x37\x96\xe8\x23\x3e\xf2\xf0\x1d\xc6\xb0\xa9\x80\x90\xc9\x76\x2d\x67\x16\x0f\x5c\x9f\x55\x50\x29\x79\x8d\xda\x1e\x88\xb7\x6a\xcc\x63\xce\xb0\x63\x75\x8f\x52\x35\x5e\x36\xf7\x52\xf7\x20\x66\x29\xbd\x64\x06\x39\x28\x39\x7e\x3e\x77\x59\xcd\x9a\x42\xc8\xaa\xee\x38\x1e\xc0\x63\x66\xef\x14\xe6\x8d\xe1\x9d\xc4\xf4\x43\x4b\x19\x22\xec\x2a\xe0\xd4\xfa\x36\x83\xb2\x1b\x97\x53\x38\xef\xb0\xea\x64\xf0\x0d\xd1\x81\x2c\xbc\x2d\x94\xc4\x30\xe9\x6f\x88\x0b\x7e\x69\xb1\xca\xf1\x08\x01\x6b\x3c\xbb\xe8\xe7\xc8\xc1\x97\x24\xf5\x2b\xd1\x3b\xe0\x83\xb3\x23\xb6\xaa\xb3\x63\xa7\x57\xc0\xc7\x21\x98\x44\x97\x47\xdb\x16\xbd\x5b\xa4\xeb\x11\x93\x9e\x99\xf0\x1c\xd4\x89\x66\x2a\xa9\x2c\xb7\x58\x72\xa1\xb3\x9c\xf5\xbd\x6a\x91\x1e\xbd\xdd\x5b\x25\xa4\x4f\x0d\x7d\x2f\xc2\x62\x28\x70\x28\x21\x1b\xdc\xd2\x02\x4c\x57\x45\xad\x8c\xab\x8d\xf6\x3d\xf5\xfd\x6a\x7c\x7c\x79\xfe\xf6\xf4\xed\x8f\xf9\x95\x4f\xdc\xf0\xb0\xda\x67\xcb\xb4\x2c\x2b\xd5\x90\x55\x4b\x8d\x36\x99\x6f\x9e\xd3\x5a\x6c\xb5\x57\x0d\x77\xaf\x61\x65\x51\xfb\x5c\xf7\x85\x0f\x46\x14\x41\x2f\xa7\x2e\x5a\x90\xe7\x66\x9d\x0f\x0e\x3f\xe3\xaf\x87\xc6\x1d\x7f\x8e\x76\xfe\x8a\x3b\xc9\x94\x61\x73\x6c\x35\x56\xe4\x2b\x4a\x8d\x6d\xcd\xaa\xe4\x1d\xa0\x14\x94\xe4\xa8\x9a\x87\xc4\xda\x8d\x96\xbd\x6b\xd9\x8b\x75\x1e\xd3\x56\xd4\x35\x18\xa5\x24\xf9\xa3\x41\xcc\x02\xda\xe0\x6b\x8c\x2f\x2f\x5c\xdf\x08\xb7\x7b\x3c\x8d\x45\x96\xa9\x40\x30\xc7\x31\x85\x81\xd9\xa8\xae\xe6\x04\xcf\xa0\x2d\xc0\x0f\x4f\xf6\x5b\x18\x44\xed\x7e\xf9\x36\x6a\x16\x22\x47\x3f\x73\x9e\x84\xcb\x4b\xa0\x1c\xf0\x6e\xc1\x42\x8f\xc2\x7b\x8c\x07\x88\x74\x2f\x99\x5d\x4f\x9e\xe0\x9c\x50\xb7\x3f\x9e\x6a\xec\xd5\xc5\x6f\x0b\xc7\x1f\x15\xce\x03\xab\x45\x23\x6c\x29\xd6\x52\xe9\x24\xa4\x78\xaf\x83\x9b\x73\x5b\x1c\x2a\xf7\xeb\xb0\x28\x21\x47\xea\xd9\xe5\x4a\xaf\x36\x4c\xae\x91\x2d\x93\x9f\x82\xfd\xd2\x4b\xec\xab\x20\x13\xf5\xae\x77\xbe\x4d\xdb\xf3\x28\xe0\x94\xc4\x53\x25\x99\x71\x17\x1c\x02\x53\xd6\x6a\x5d\x1a\xf1\x47\x0a\x40\xad\xd6\x17\xe2\x0f\x17\xa4\xfc\x86\x3d\x8d\x87\x2b\xca\xa4\x9b\xec\x53\xd5\xbd\x44\xbb\x45\x94\xf0\xdc\x85\xbe\xef\x9e\x67\x43\x69\xb0\x51\x7a\x37\x85\xc6\x53\x1c\x0b\xe8\xbb\xef\xff\xee\x20\xfd\xed\xbb\xef\xb3\x31\x51\x24\x53\x5d\xaa\x8a\x09\xab\x47\x81\x79\xee\xed\xf3\xff\xcf\xe9\xbf\x79\x3c\xae\x21\x55\xb6\x5a\xb5\xa8\xad\xc0\xd4\xe4\x23\xba\xc1\x91\xbf\xf2\x7d\x6e\xab\x05\xf6\x9d\x6e\xdf\xdd\x1a\x98\xc5\x8e\xf8\xfd\x3e\x31\xba\x44\xae\xdc\x85\x23\xcf\x28\x2c\xa8\xce\x1a\xc1\xdd\x41\xbc\xd7\xec\x5a\x18\x58\x76\xa2\xe6\xd3\xdd\x30\xa7\x8a\x77\x07\x9a\xae\x6d\x96\x2b\xe8\x6f\xff\x9e\x43\x90\x07\x5e\x3d\x58\xdb\xf5\xf8\x6e\x6e\x8a\xf0\xb7\xd1\xdc\x37\x37\x45\x23\x64\xe8\xf8\xd0\x1f\x58\x35\x53\x3f\x3a\xa8\x31\xb1\xf2\x8f\x2c\xe5\x26\x62\x4d\x1e\xa8\x28\xc9\x38\x28\xcf\xef\x49\x74\x93\x15\xf8\x51\x65\xb7\x43\x1b\x9a\x7a\xae\x63\x83\x5f\x84\x49\x7e\x6a\x7b\xa7\x5f\xb3\xe7\x62\x58\xad\x91\xf1\x1d\x78\x16\x7d\xf6\x6d\xb0\xc6\x8a\x92\x40\x65\x37\xe8\x9b\xc1\xf3\x90\x62\x8f\x74\xb6\x65\x15\x42\xe1\x41\x7b\x27\x66\x0d\x95\x92\x96\xb9\x4f\x1e\xa5\xca\xeb\xbb\x3a\xe9\xa3\x99\x98\x33\x4a\x0e\x88\x7b\x27\x46\x21\xe2\x1c\x36\xb1\xb6\xa1\x2f\xe0\xbb\x6b\x81\x68\xbf\x76\x99\xb7\xd0\xe8\x1b\xda\x52\x5d\xa3\xd6\x82\x73\x4c\x15\x62\x84\x70\xfc\x49\xed\x30\xd3\x1c\xb6\xc6\x5c\x61\x3c\xb2\x4a\xc1\x78\xf5\xfa\x9f\x1f\x7e\xcc\xce\x5b\x1d\xf5\xc3\x92\x56\xbe\x5c\x0f\x33\x7e\xff\xa9\xc8\xec\xa4\xdf\x51\xbd\x98\x1c\xc6\x2e\xd7\xe3\xd9\xf3\x24\xdf\xf1\x04\x3a\x8f\xb3\x41\xa6\xab\x0d\xf1\x8d\x87\xd3\x17\x0b\xa9\x7f\x1b\x14\x77\xf4\x87\xb3\x5f\x5e\x8c\xbf\x77\x19\x9c\xd8\x4c\x98\x1e\x4c\x37\xdc\xe0\x3f\xfb\xf6\x1e\x79\x73\x09\x5a\xff\xb4\xfd\x5c\x76\xe2\x5f\xa5\xbc\xba\xa7\xf7\x1b\x2c\xf2\x02\x7e\x70\x08\x86\x7f\x8f\xe2\xc6\x4d\xc4\xec\xa1\x00\xa6\xbf\xcb\x7e\x38\x86\xf1\xe8\x37\x7e\xaa\x10\x20\x3d\xba\x7c\xf4\xdf\x00\x00\x00\xff\xff\xa1\x35\x13\x17\xca\x36\x00\x00")
+var _wski18nResourcesEn_usAllJson = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xc4\x5b\x6f\x8f\xdb\x36\xd2\x7f\x9f\x4f\x31\x08\x1e\x20\x2d\xe0\x28\x69\x1f\x1c\x70\x08\xb0\x38\xe4\x2e\x69\xbb\xd7\x26\x1b\xec\x26\x17\x14\xe9\x42\xa1\xc5\xb1\xcd\x5a\x22\x05\x92\xb2\xe3\x1a\xfe\xee\x87\xe1\x1f\x49\xf6\x2e\x25\xad\xd3\xe2\xf2\xa6\x6e\x38\x9c\xf9\xcd\x90\xfc\x71\x66\xa8\x7c\x7a\x04\xb0\x7f\x04\x00\xf0\x58\xf0\xc7\x2f\xe0\x71\x65\x96\x79\xad\x71\x21\xbe\xe4\xa8\xb5\xd2\x8f\x67\x7e\xd4\x6a\x26\x4d\xc9\xac\x50\x92\xc4\x5e\xbb\xb1\x47\x00\x87\xd9\x80\x06\x21\x17\x2a\xa1\xe0\x92\x86\xc6\xe6\x9b\xa6\x28\xd0\x98\x84\x8a\x9b\x30\x3a\xa6\x65\xcb\xb4\x14\x72\x99\xd0\xf2\x31\x8c\x26\xb5\x14\x15\xcf\x39\x9a\x22\x2f\x95\x5c\xe6\x1a\x6b\xa5\x6d\x42\xd7\xb5\x1b\x34\xa0\x24\x70\xac\x4b\xb5\x43\x0e\x28\xad\xb0\x02\x0d\x7c\x23\x32\xcc\x66\xf0\x8e\x15\x6b\xb6\x44\x33\x83\x97\x05\xcd\x33\x33\x78\xaf\xc5\x72\x89\xda\xcc\xe0\xba\x29\x69\x04\x6d\x91\x7d\x0b\xcc\xc0\x16\xcb\x92\xfe\xab\xb1\x40\x69\xdd\x8c\x8d\xb3\x66\x40\x48\xb0\x2b\x04\x53\x63\x21\x16\x02\x39\x48\x56\xa1\xa9\x59\x81\xd9\x64\x5f\x94\x4a\x79\xf2\x12\xac\x52\x25\x58\x15\x1c\x99\x41\x23\xfd\x2f\x60\x92\x83\xd9\xc9\x02\x54\x8d\x72\xbb\x12\x66\x0d\x75\xf0\x09\x1a\x23\xe4\x12\x18\x54\x4c\x8a\x05\x1a\xeb\x84\x55\x4d\x5a\x59\x19\x54\x55\xe4\xc9\x42\x94\xad\xf8\xaf\x2f\xdf\xfc\x32\x05\xb3\x59\x29\x6d\x87\x17\xe0\x9d\x56\x1b\xc1\xd1\x00\x03\xd3\x54\x15\xd3\x3b\xf0\xf2\xa0\x16\xb0\x5d\x31\xfb\xc4\xc0\x1c\xb1\xb7\x3c\x5f\x17\xc6\x00\x69\x34\x8e\x06\x2d\xc5\x72\x85\x65\x1d\x4c\xc3\x4e\x35\x7a\x52\x08\x29\x54\xd3\xb1\x6c\x50\x1b\xb2\x9d\x8a\x8f\x90\xd6\x39\x1c\xe4\x40\x36\xd5\x1c\xb5\x0b\x8f\x59\x7b\x68\xc3\xb6\x16\x25\x5b\xe6\xac\x16\xf9\x4a\x99\x94\xd7\xde\xa5\x97\xef\x2e\xe1\xf3\x4f\x57\x37\xef\x3f\x4f\xd4\x38\x8c\xbd\xa7\xf4\x3f\xaf\xaf\x6f\x2e\xaf\xde\x4e\xd2\xdb\xd8\x55\xbe\xc6\x5d\x42\x29\x0d\x2b\x2d\xfe\x70\x7f\x01\x9f\x7f\x7e\xfd\xeb\x14\xa5\x05\x6a\x9b\xd3\xba\x24\xb4\xd6\xcc\xae\x28\xa4\x14\xe8\x8c\x84\xdd\x22\x4e\x51\xac\xe4\x42\xa4\x98\xca\x0f\x3a\x55\xf0\x0d\xc7\x05\x6b\x4a\x0b\xc2\xc0\xff\xfd\x74\xf5\xe6\xf5\xb3\x6c\x6b\xd6\xb5\x56\xb5\xf9\x76\x4a\x54\xca\x52\x6d\xf3\xa0\x23\xc5\xaf\x4e\x08\x5a\xa1\x71\xad\xdd\xf9\x1e\x8a\x4b\xcb\x29\x2d\x11\x4c\x50\x2d\xa4\x45\xcd\x88\xfe\x52\x31\xf7\x68\x7b\x72\x50\x6b\x55\xd5\x93\x80\xaf\x71\x37\x79\x39\xd7\xb8\x9b\x0a\xda\x47\xb9\x62\x92\x2d\x91\x0f\xc2\xae\xb5\xfa\x1d\x0b\xdb\x5d\x16\x56\xc1\x1c\xa1\x62\x7a\x8d\x1c\xa2\x86\x71\x8b\x41\x4f\x4e\x24\x96\x72\x26\x98\x72\x22\xe3\x1a\x23\x0d\x8d\xac\xe8\x11\x5b\x4d\x50\xdb\xb2\x6c\x42\x6f\x37\x3e\xd9\xe9\x11\x84\x06\xf5\x06\x75\x89\xc6\xc4\x68\x4f\x50\x6d\xac\x16\x49\xcd\x7e\xe9\x1a\x83\x9a\x0e\x89\x90\xc8\x41\x37\xd2\x8a\xaa\x65\xd7\x09\x16\xac\x4e\x07\xc1\x8d\x81\x6a\x6c\xdd\x4c\x01\xeb\xb7\xdb\x06\xf5\x5c\x99\x94\xca\x30\x3a\xae\xd4\x71\x4d\x5e\x09\x43\xd7\x91\x63\xd1\x34\x89\xbe\x5f\x21\x90\x04\xed\xde\xc2\x33\x29\x9d\x12\x61\x40\x2a\x0b\x5e\x55\xa3\x91\x67\xbf\x0d\x45\xe4\xc4\x62\x2d\x06\x2e\x18\xb2\x48\x37\x01\x89\x7c\x9d\x9d\xb1\x8d\x48\x96\x5a\x99\xf3\x4c\x05\x57\x86\xb2\xe1\x53\x7f\x3e\xed\xf7\x19\xfd\x3e\x1c\x6e\x67\xb0\xd0\xaa\x82\xfd\x3e\x33\xaa\xd1\x05\x1e\x0e\x93\x6c\xfa\x05\x1b\xb3\x49\x62\x71\xad\x0c\xda\xf3\x6c\xb5\xe1\x19\xb3\x76\x14\x47\x72\xb1\xfd\x8b\xf3\xfd\xac\xc5\x72\x9b\x33\x57\x08\xe4\x56\xad\x51\x8e\xba\x4c\x33\xc0\xcf\x00\x37\xe3\x3c\xe7\x1b\x59\x31\x6d\x56\xac\xcc\x4b\x55\xb0\x32\x61\xf1\x43\x94\x82\xab\x1a\xe5\x47\x97\xc2\x04\x92\x30\xde\x9e\x9b\x0d\x1b\x56\x36\x68\x26\x1a\x94\x68\xb7\x4a\xaf\xcf\x36\xe9\x2e\x49\x89\x16\x98\x25\x77\x1b\x5d\x8e\xf8\xda\xdd\xd7\x79\xc1\x64\x81\x65\x99\xbc\xcf\xae\x7e\xce\xe0\x5f\x5e\x86\xf2\xd8\x6e\xe6\x54\x03\x0b\x26\xd2\xda\x5f\x75\x89\x03\x17\x3c\x9c\xc5\xaa\x2e\xd1\x22\x98\x86\x96\x74\xd1\x94\xe5\x2e\x83\xeb\x46\xc2\xe7\x36\xa3\x6d\x8b\x97\xcf\x74\x13\x68\xac\x14\xa5\x07\x4c\x5b\xc1\xca\x72\xd7\x15\x03\xcc\x18\xb4\xc3\xab\xd0\x43\xea\x2b\x8b\xdc\x58\x66\x9b\x54\x0e\xf5\xf4\xe9\xd3\xa7\x17\x17\x17\x17\xbd\xb5\xe8\xf9\x70\xe3\xa6\x02\x09\x90\xe0\x24\xab\xae\x26\x46\x3e\x25\x44\x31\x34\x1c\x42\x21\xed\x83\x33\xbc\xc9\xce\x5f\xeb\xfe\xdc\xe9\x46\x06\xd7\xfb\x43\x4f\x72\x78\xc5\x27\xdb\x1b\x8b\xdf\x91\xc9\x33\x22\x58\xa8\xaa\x62\x92\xe7\xae\x8e\x73\x59\x25\xb1\x5c\xce\x6c\x4e\x99\x48\xc2\xe8\x7e\x9f\x15\x15\x3f\x1c\x42\xf5\xb7\xdf\x67\x34\xd1\xee\x6a\x3c\x1c\x1c\x53\xd2\xdc\xc3\xe1\x36\xcb\x06\x6d\xbb\xf4\x71\x97\xc7\xfd\x3c\xd2\x3f\xd9\xef\x29\x99\x0d\x06\x08\xe4\xe1\x70\x0b\x2b\x16\x2a\xe4\xbe\xc3\xed\x09\x99\x6e\x3d\xdd\x70\x79\x15\xc7\xe1\x5e\x00\x59\x36\x50\xec\x06\x13\x71\x41\xff\x4c\x17\x3b\x9d\x53\x9c\x8c\xd2\x69\x37\x3f\x74\x12\xf7\x3a\x3a\xe8\x27\xc7\x1a\x25\x47\x59\x3c\x24\x9c\xdd\xa4\xf3\xed\x74\x47\x24\x19\xd3\x57\xf7\x9a\xf9\x9a\x8d\x73\x3f\x0a\x22\x86\x46\xa7\xf2\xb2\x1e\xcd\xa9\x45\xc2\xf5\xff\xe1\x1d\x11\xfd\x79\xd8\x3e\xf9\xba\x15\xbc\x4b\x73\x7f\xce\x1a\x4e\x3c\x19\x29\x24\xc3\xeb\x78\x44\xb7\x67\xae\xe4\x10\xaa\x50\x3b\x9f\x7b\xe7\x38\x44\xfe\x06\x68\x6b\xf3\x21\x2c\xc0\x1b\x4d\x2b\x19\xcc\xf6\xf3\x9f\xbf\x6e\xbf\x45\x1f\x17\xaa\x91\x3c\x0f\x78\x03\x53\x25\x37\x40\x89\x36\xc9\xc1\xdb\x95\x28\x56\xb0\x75\x8d\x67\xc2\xc5\x7d\xde\x68\x57\x08\x45\xa3\x35\x05\x26\x3a\x18\xdb\x09\xee\x92\xf2\xbf\x49\x03\x33\xce\x17\x8a\xdf\xe4\xb4\xc0\xf7\x6b\x46\x2a\xbf\xdf\xe4\xbb\x12\x99\x71\xdd\x9d\x8d\xe0\xe8\x40\x91\x3c\x61\x87\x85\xd2\x5d\xa6\xf5\x02\xc6\x6d\x0d\xd6\xb5\x77\x6c\x31\x79\x5a\xe7\xba\x02\x62\x82\xa1\xd0\x59\x4d\x2c\x86\x82\x9d\x6a\x40\xa3\x5b\xf9\x2d\x93\xb6\x6b\x92\x81\x5d\x09\xf3\x0f\xf8\x66\xf7\xec\xed\xb7\x13\xec\x8c\x95\xb3\x77\x5d\xea\x55\x65\x9f\x62\x53\xd1\x55\x23\x54\x16\x2d\x1b\x34\xf6\x76\x82\xdd\xb8\xc8\x0f\xf2\xb0\x7d\x52\x98\xe8\x63\x80\x97\x87\x5e\x79\xaa\xc7\xed\x47\x9d\x5f\xd0\x6b\x93\x6a\x74\x2d\x20\x3e\x03\x56\xf6\x6b\xa3\xf6\x5c\x13\x1c\xdd\xce\x08\x46\x80\x69\x6c\x0f\xe3\xb3\x8e\x0a\x81\x0b\x8d\x85\x0d\xf4\xa8\x7d\x3b\x7f\xec\xed\xe0\xf5\xf5\xf5\xd5\xf5\x4d\x02\xf7\xc5\xe9\x1f\xf0\xe2\x70\x67\xe0\xe2\x62\x20\x3f\xd1\xfa\x98\x89\xd7\x52\x6d\x65\x4e\xa9\xe4\xf8\x5d\x40\x52\x14\xaa\x30\x2b\x83\xee\x51\x00\x94\x2c\x77\x60\x9a\xda\xbf\x70\x3d\x73\xdd\xf8\xcc\xec\x8c\xc5\x0a\xe6\x42\x72\x21\x97\x06\x94\x86\xa5\xb0\xab\x66\x9e\x15\xaa\x6a\xdf\x34\x86\x13\x2a\xad\x63\x52\x55\x68\x64\x36\x05\xd3\xbd\x38\x82\x13\x39\xe2\xad\xad\xb0\x2b\x70\x4f\x95\x50\xa1\x31\x6c\x89\x2f\x68\x10\xb5\x3e\x1c\xdc\xf3\x93\x1f\x2b\x14\xf7\x03\xf4\x63\xa4\xdc\xed\x41\xf2\x64\x3a\x08\x89\xdf\xa1\xd2\xbf\x08\xd2\x02\x91\xe7\x42\x6e\xd4\x3a\x05\xe8\x07\x77\xaf\xd1\xd1\xf2\x62\x8e\x1c\x69\x1a\x6c\x57\xee\xd1\x2b\x20\xb5\xfe\xc1\x31\x0c\xfd\x35\x68\xd7\xb8\x6b\x9b\x6c\x54\x10\x31\xab\xf4\x50\x03\xb1\x95\x71\xfd\xa8\x4f\x31\x98\xb7\xb4\x1f\x83\x9e\x51\x9b\xb1\x0b\x9d\x4b\x65\xfd\x6d\x98\x30\xf8\xa6\xdf\xae\x76\x97\xb9\x93\x06\x46\xe7\xde\xae\x8e\x4a\xae\x31\xa3\xae\xbc\xab\x84\xa9\x98\x2d\x52\xf5\x1d\x39\xd8\x6e\x0f\x9a\xc0\x9d\x09\x1e\x2f\x5c\x21\x4f\xdf\x44\xfc\x78\xc0\x00\x5c\xa1\xef\x3c\x3a\x23\x6e\x59\x1d\xbd\x91\x50\xd5\x53\x72\xd4\x86\xf7\xa3\xd1\x8d\x61\x27\x42\x83\x88\xb6\x17\x2b\x45\x2a\x6c\x97\x7e\x94\x8e\x79\x58\x92\xb6\xe3\x4d\xb6\xc2\x6f\xc2\xd2\xbd\xa7\x1e\xa1\x52\xda\x61\x67\xee\xe5\xdb\xcd\xf1\x3f\xa7\xc4\x39\x42\x1c\x09\xf5\xf5\x43\x00\x9d\xc4\xd5\x1d\x05\x8f\xe8\x89\x01\xdf\x06\xf4\xa1\xc4\x2f\x16\xa5\x89\xa0\xf1\x8b\x4b\x72\xc8\x9d\xaf\x71\xc5\xe4\x4b\x4c\xe5\x39\xdd\x51\x5e\xa2\x7f\xb1\x0d\xdc\xdb\xbd\x32\x84\x6e\x5e\x77\x93\xd1\xfd\x26\x8a\xde\xf1\x9d\x1c\x53\x0f\x3d\xf7\x1e\xbb\xd3\xd3\x5a\x4b\xe0\x3b\x72\xd8\x15\x0e\x14\xc6\x2e\xca\x4c\xee\xda\xbd\x41\x24\xd2\x5b\xf6\xd1\xb8\x86\x2e\x7b\x0b\x61\xd4\x8d\x46\x97\x0f\xdf\xb9\xbe\xf3\x19\x7a\x2c\x1f\xae\x7f\x71\x08\x5c\x2f\xd4\x1d\xa5\x4f\x47\x4d\x98\x5b\xff\x0c\x3f\x05\x48\xc5\xca\x85\xd2\x55\x32\x72\x6f\xe2\xf8\x10\x82\x0c\xde\xeb\x1d\xb0\x25\x13\x72\xac\xe7\xa3\x75\xfe\xbb\x51\xb2\x25\xdb\xa2\xe2\x03\x0f\xde\xff\xbe\xb9\x7a\x0b\x42\xd6\x8d\x05\xce\x2c\x83\x37\x21\x1a\x4f\x8a\x8a\x3f\x21\xea\x1d\xb6\xc4\x6a\xd1\x1a\xda\xe2\x3c\x6c\x9c\xd4\xc7\x0f\xf7\x9c\x8d\xb8\xb8\x0c\xb6\x38\x0f\x3b\x62\xe6\xde\x3e\x9c\x58\x2d\x48\xa6\x60\xd2\xe7\x1b\x73\xf4\x37\x3e\xf2\xd0\x19\xeb\x26\x65\x10\x32\xd9\xa6\xe6\xcc\xe2\x09\xf5\x59\x05\x85\x92\x1b\xd4\xf6\xc4\xbc\x55\x7d\x1d\x63\x81\xed\xbb\x7b\x96\xab\x71\xb3\xb9\x93\x7a\x04\x71\x92\xd3\x73\x66\x90\x83\x92\xfd\xe3\x73\x57\xd5\x68\x28\x84\x2c\xca\x86\xe3\x09\x3c\x66\x8e\x56\x61\x3c\x18\x9e\x24\x86\x0f\x5a\x2a\x10\x61\x56\x06\x97\xd6\xb7\x19\x94\x5d\xb9\x9c\xc2\xb1\xc3\xa2\x91\x81\x1b\x22\x81\xcc\x7c\x2c\x94\xc4\xf0\xf2\x5e\x91\x16\xfc\x52\x63\x31\x85\x11\x02\xd6\xb8\x76\x91\xe7\x88\xe0\x73\xb2\xfa\x95\xe8\x1d\xf0\x8e\xec\x48\xad\x6a\x6c\x9f\xf4\x32\xf8\xd8\x5d\x26\x91\xf2\x68\xda\xac\xa5\x45\xda\x1e\x31\xe9\x19\xb9\x9e\x83\x3b\x31\x4c\x39\x95\xe5\x16\x73\x2e\xf4\x24\xb2\xbe\xd7\x2d\xf2\xa3\x8d\x7b\xad\x84\xf4\xa9\xa1\xef\x45\x58\x0c\x05\x0e\x25\x64\x1d\x2d\xcd\xc0\x34\x45\xf4\xca\xb8\xda\xe8\x98\xa9\xef\x77\xe3\xe3\xcb\xeb\xb7\x97\x6f\x7f\x9c\x5e\xf9\xc4\x09\x0f\xab\x7d\xb6\x4c\xcb\xb6\xff\xae\xd1\x26\xf3\xcd\x6b\x1a\x23\x6f\x3f\xc5\xc6\xfb\x2d\xb0\x85\x45\xed\x73\xdd\x17\xfe\x32\xa2\x1b\xf4\x76\x68\xa3\x05\x7b\xee\x21\xf2\xc1\xd7\x4f\xff\x6b\x9e\x5e\xba\x09\x1c\xed\xf8\x16\x77\x96\x29\xc3\xe6\x58\x6b\x2c\x88\x2b\x72\x8d\x75\xc9\x8a\xe4\x1e\xa0\x14\x94\xec\xa8\x92\x87\xc4\xda\xbd\xfb\x7a\x6a\x39\x7e\x70\xd8\x8a\xb2\x04\xa3\x94\x24\x2a\xea\x2c\xcc\xa0\x0e\x34\x63\x7c\x65\xe1\x5a\x46\xb8\x3d\x52\x67\x2c\xb2\x89\xd8\x43\x24\xce\xa9\x09\xcc\x4a\x35\x25\x27\x78\x06\x6d\x06\x1f\x8c\xef\x9e\xf6\xbb\x17\x24\xed\x7e\x8d\x3f\x9b\xb4\x88\x9c\xfc\xc8\x52\x12\x2e\x6f\x81\xd2\xbf\xbb\xb5\x0a\x9d\x07\x4f\x16\x0f\x30\xe9\x0e\x31\xdb\x0c\x2e\xde\x98\x51\x37\x3f\x2e\x68\x6c\xd3\xc5\xcf\xfc\xfa\xdf\xf7\x8d\x03\x2b\x45\x25\x6c\x2e\x96\x52\xe9\x24\xa4\xb8\xa5\x03\xc3\xb9\x29\x0e\x95\xfb\x75\x5a\x8f\x10\x87\x7a\x75\x53\xad\x17\x2b\x26\x97\xc8\xe6\xc9\xaf\xb2\x7e\x69\x2d\xb6\x05\x90\x89\x7e\x97\x3b\xdf\xa1\x6d\x75\x64\x70\x49\xe6\xa9\x88\x9c\xb0\x17\x1c\x02\x93\x97\x6a\x99\x1b\xf1\x47\x0a\x40\xa9\x96\x37\xe2\x0f\x77\x3f\xf9\x09\x47\x1e\x77\x5b\x94\x49\xf7\xe2\x4e\x05\xf7\x1c\xed\x16\x51\xc2\x73\x77\xeb\x7d\xf7\x7c\x32\x94\x0a\x2b\xa5\x77\x43\x68\xbc\xc4\xb9\x80\xbe\xfb\xfe\xef\x0e\xd2\xdf\xbe\xfb\x7e\x32\x26\xba\xc4\x54\x93\x2a\x60\xc2\xe8\x59\x60\x9e\xfb\xf8\xfc\xff\x73\xfa\x33\x8e\xc7\xf5\xa2\xf2\x5a\xab\x1a\xb5\x15\x98\x7a\xf4\x88\x0c\xd8\xe3\x2b\xdf\xe2\xb6\x5a\x60\xdb\xe4\xf6\x8d\xad\x4e\x59\x6c\x86\xdf\xcf\x89\x91\x12\xb9\x72\x1b\x8e\x98\x51\x58\x50\x8d\x35\x82\xbb\x85\x78\xaf\xd9\x46\x18\x98\x37\xa2\xe4\xc3\x8d\x30\xe7\x8a\xa7\x03\x4d\xdb\x76\x12\x15\xb4\xbb\xff\x88\x10\xe4\x09\xa1\x87\x68\xbb\xf6\xde\x7e\x9f\x85\xbf\x8d\xe1\xde\xef\xb3\x4a\xc8\xd0\xec\xa1\xff\x61\xc5\x48\xe9\xe8\xa0\xc6\x9c\xca\x1f\xb2\x14\x4d\xc4\x72\x3c\x48\x51\x7e\x71\x52\x99\xdf\x93\xe3\x26\x8b\xef\xb3\x2a\x6e\x87\x36\xf4\xf3\x5c\xb3\x06\xbf\x08\x93\xfc\xea\xf5\x4e\xab\xe6\x88\x62\x58\xa9\x91\xf1\x1d\x78\x15\x6d\xe2\x6d\xb0\xc4\x82\xf2\x3f\x65\x57\xe8\xfb\xc0\xe3\x90\x62\x7b\x74\xb4\x5b\x15\xae\xc2\x93\xce\x4e\x4c\x18\x0a\x25\x2d\x73\x5f\x1f\x4a\x35\xad\xe5\xea\xac\xf7\x9e\xc3\x5c\x50\xa6\x80\xb8\xf7\xb1\x28\xdc\x38\xa7\xfd\xab\x6d\x68\x09\xf8\xc6\x5a\x10\x3a\x2e\x5b\xc6\x23\xd4\xfb\x9c\x35\x57\x1b\xd4\x5a\x70\x8e\xa9\x1a\x8c\x10\xf6\xbf\x6e\xed\x9e\x33\xbb\xa9\x31\x57\xe8\xbf\x56\xa5\x60\xbc\x7a\xfd\xcf\x0f\x3f\x4e\x4e\x59\x9d\xf4\xc3\xf2\x55\x3e\x5f\xe6\x06\x99\x2e\x56\x54\xa3\x44\x67\xdb\xbc\x3b\xf5\xcf\x5e\xe2\x8c\xd6\xd9\xe3\x4c\x3d\xee\x0b\x3a\x2b\x1d\x29\x8c\x5c\x7b\x04\xe5\x74\x47\xfc\xd9\xbb\xe1\xcc\x9d\x40\xd0\xda\xa3\xe2\x9f\x38\x07\xfe\xc1\xc5\xab\x7b\xda\xa8\x21\x22\x2f\xe0\x07\x87\xa0\xfb\xa7\x16\xee\xe5\x86\x94\x3d\x14\xc0\xf0\x27\xc7\x0f\xc7\xd0\x7f\x45\x8d\xaf\xfe\x01\xd2\xa3\xdb\x47\xff\x0d\x00\x00\xff\xff\x2f\x60\x92\x0a\xa5\x35\x00\x00")
func wski18nResourcesEn_usAllJsonBytes() ([]byte, error) {
return bindataRead(
@@ -112,7 +112,7 @@ func wski18nResourcesEn_usAllJson() (*asset, error) {
return nil, err
}
- info := bindataFileInfo{name: "wski18n/resources/en_US.all.json", size: 14026, mode: os.FileMode(420), modTime: time.Unix(1520537404, 0)}
+ info := bindataFileInfo{name: "wski18n/resources/en_US.all.json", size: 13733, mode: os.FileMode(420), modTime: time.Unix(1520546400, 0)}
a := &asset{bytes: bytes, info: info}
return a, nil
}
@@ -132,7 +132,7 @@ func wski18nResourcesEs_esAllJson() (*asset, error) {
return nil, err
}
- info := bindataFileInfo{name: "wski18n/resources/es_ES.all.json", size: 0, mode: os.FileMode(420), modTime: time.Unix(1520374115, 0)}
+ info := bindataFileInfo{name: "wski18n/resources/es_ES.all.json", size: 0, mode: os.FileMode(420), modTime: time.Unix(1515697090, 0)}
a := &asset{bytes: bytes, info: info}
return a, nil
}
@@ -152,7 +152,7 @@ func wski18nResourcesFr_frAllJson() (*asset, error) {
return nil, err
}
- info := bindataFileInfo{name: "wski18n/resources/fr_FR.all.json", size: 101, mode: os.FileMode(420), modTime: time.Unix(1520374115, 0)}
+ info := bindataFileInfo{name: "wski18n/resources/fr_FR.all.json", size: 101, mode: os.FileMode(420), modTime: time.Unix(1515697090, 0)}
a := &asset{bytes: bytes, info: info}
return a, nil
}
@@ -172,7 +172,7 @@ func wski18nResourcesIt_itAllJson() (*asset, error) {
return nil, err
}
- info := bindataFileInfo{name: "wski18n/resources/it_IT.all.json", size: 0, mode: os.FileMode(420), modTime: time.Unix(1520374115, 0)}
+ info := bindataFileInfo{name: "wski18n/resources/it_IT.all.json", size: 0, mode: os.FileMode(420), modTime: time.Unix(1515697090, 0)}
a := &asset{bytes: bytes, info: info}
return a, nil
}
@@ -192,7 +192,7 @@ func wski18nResourcesJa_jaAllJson() (*asset, error) {
return nil, err
}
- info := bindataFileInfo{name: "wski18n/resources/ja_JA.all.json", size: 0, mode: os.FileMode(420), modTime: time.Unix(1520374115, 0)}
+ info := bindataFileInfo{name: "wski18n/resources/ja_JA.all.json", size: 0, mode: os.FileMode(420), modTime: time.Unix(1515697090, 0)}
a := &asset{bytes: bytes, info: info}
return a, nil
}
@@ -212,7 +212,7 @@ func wski18nResourcesKo_krAllJson() (*asset, error) {
return nil, err
}
- info := bindataFileInfo{name: "wski18n/resources/ko_KR.all.json", size: 0, mode: os.FileMode(420), modTime: time.Unix(1520374115, 0)}
+ info := bindataFileInfo{name: "wski18n/resources/ko_KR.all.json", size: 0, mode: os.FileMode(420), modTime: time.Unix(1515697090, 0)}
a := &asset{bytes: bytes, info: info}
return a, nil
}
@@ -232,7 +232,7 @@ func wski18nResourcesPt_brAllJson() (*asset, error) {
return nil, err
}
- info := bindataFileInfo{name: "wski18n/resources/pt_BR.all.json", size: 0, mode: os.FileMode(420), modTime: time.Unix(1520374115, 0)}
+ info := bindataFileInfo{name: "wski18n/resources/pt_BR.all.json", size: 0, mode: os.FileMode(420), modTime: time.Unix(1515697090, 0)}
a := &asset{bytes: bytes, info: info}
return a, nil
}
@@ -252,7 +252,7 @@ func wski18nResourcesZh_hansAllJson() (*asset, error) {
return nil, err
}
- info := bindataFileInfo{name: "wski18n/resources/zh_Hans.all.json", size: 0, mode: os.FileMode(420), modTime: time.Unix(1520374115, 0)}
+ info := bindataFileInfo{name: "wski18n/resources/zh_Hans.all.json", size: 0, mode: os.FileMode(420), modTime: time.Unix(1515697090, 0)}
a := &asset{bytes: bytes, info: info}
return a, nil
}
@@ -272,7 +272,7 @@ func wski18nResourcesZh_hantAllJson() (*asset, error) {
return nil, err
}
- info := bindataFileInfo{name: "wski18n/resources/zh_Hant.all.json", size: 0, mode: os.FileMode(420), modTime: time.Unix(1520374115, 0)}
+ info := bindataFileInfo{name: "wski18n/resources/zh_Hant.all.json", size: 0, mode: os.FileMode(420), modTime: time.Unix(1515697090, 0)}
a := &asset{bytes: bytes, info: info}
return a, nil
}
diff --git a/wski18n/resources/en_US.all.json b/wski18n/resources/en_US.all.json
index 94482f50..6370f942 100644
--- a/wski18n/resources/en_US.all.json
+++ b/wski18n/resources/en_US.all.json
@@ -96,8 +96,8 @@
"translation": "allow user defined runtime version"
},
{
- "id": "msg_cmd_flag_toggle_help",
- "translation": "Toggle Help message"
+ "id": "msg_cmd_flag_trace",
+ "translation": "trace output"
},
{
"id": "msg_cmd_flag_allow_verbose",
@@ -168,12 +168,8 @@
"translation": "Undeployment completed successfully.\n"
},
{
- "id": "msg_manifest_using_deployment",
- "translation": "Using [{{.path}}] for deployment.\n"
- },
- {
- "id": "msg_manifest_using_undeployment",
- "translation": "Using [{{.path}}] for undeployment.\n"
+ "id": "msg_command_using_filename_at_path",
+ "translation": "{{.cmd}} using {{.filetype}} [{{.path}}]...\n"
},
{
"id": "msg_entity_deployed_success",
@@ -189,7 +185,7 @@
},
{
"id": "msg_entity_undeploying",
- "translation": "Undeploying {{.key}} [{{.name}}] ..."
+ "translation": "Undeploying {{.key}} [{{.name}}]..."
},
{
"id": "msg_dependency_deploying",
@@ -341,7 +337,7 @@
},
{
"id": "msg_warn_key_deprecated_replaced",
- "translation": "The [{{.oldkey}}] key in the {{.filetype}} file will soon be deprecated, please use the [{{.newkey}}] key instead.\n"
+ "translation": "The [{{.oldkey}}] key in the {{.filetype}} will soon be deprecated, please use the [{{.newkey}}] key instead.\n"
},
{
"id": "msg_warn_key_missing",
@@ -407,14 +403,6 @@
"id": "DEBUG",
"translation": "================= DEBUG ==================="
},
- {
- "id": "msg_dbg_deploying_using",
- "translation": "Deploying using:\n"
- },
- {
- "id": "msg_dbg_undeploying_using",
- "translation": "Undeploying using:\n"
- },
{
"id": "msg_dbg_searching_project_directory",
"translation": "Searching project directory [{{.path}}] for [{{.key}}]...\n"
diff --git a/wskprint/console.go b/wskprint/console.go
index 6e745650..62228bc0 100644
--- a/wskprint/console.go
+++ b/wskprint/console.go
@@ -23,6 +23,8 @@ import (
"github.com/fatih/color"
"github.com/mattn/go-colorable"
"os"
+ "path/filepath"
+ "runtime"
"strings"
)
@@ -104,16 +106,26 @@ func PrintlnOpenWhiskVerbose(verbose bool, message string) {
PrintOpenWhiskVerbose(verbose, message+"\n")
}
+func PrintlnOpenWhiskTrace(trace bool, message string) {
+
+ if trace {
+ _, fname, lineNum, _ := runtime.Caller(2)
+ out := fmt.Sprintf("%s [%v]: %s\n", filepath.Base(fname), lineNum, message)
+ PrintOpenWhiskVerbose(trace, out)
+ }
+}
+
// Display "trace" output if either param is true OR we are running Go test verbose (i.e., "go test -v")
-// arg[0] = [/var/folders/nj/2blqqtm500l5ch2d5k0hvqvm0000gn/T/go-build041478919/github.com/apache/incubator-openwhisk-wskdeploy/deployers/_test/deployers.test
+// Typical Args for "go test" looks as follows:
+// arg[0] = [/var/folders/nj/<uuid>/T/<build-id>/github.com/apache/incubator-openwhisk-wskdeploy/deployers/_test/deployers.test
// arg[1] = -test.v=true
// arg[2] = -test.run=TestDeploymentReader_PackagesBindTrigger]
-// TODO() introduce "trace" as an optional flag (perhaps hidden or picked up from environment)
-func PrintlnOpenWhiskTrace(trace bool, message string) {
- GO_TEST_VERBOSE := false
- if len(os.Args) >= 2 {
- // TODO() move this to an init() routine
- GO_TEST_VERBOSE = strings.Contains(os.Args[1], "-test.v=true")
+func DetectGoTestVerbose() bool {
+ arguments := os.Args
+ for i := range arguments {
+ if strings.HasPrefix(arguments[i], "-test.v=true") {
+ return true
+ }
}
- PrintOpenWhiskVerbose(GO_TEST_VERBOSE || trace, message+"\n")
+ return false
}
----------------------------------------------------------------
This is an automated message from the Apache Git Service.
To respond to the message, please log on GitHub and use the
URL above to go to the specific comment.
For queries about this service, please contact Infrastructure at:
users@infra.apache.org
With regards,
Apache Git Services