You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@openwhisk.apache.org by mr...@apache.org on 2020/08/18 17:46:28 UTC

[openwhisk-wskdeploy] branch master updated: Migrate to using Go Module to manage dependencies (#1101)

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

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


The following commit(s) were added to refs/heads/master by this push:
     new 507665d  Migrate to using Go Module to manage dependencies (#1101)
507665d is described below

commit 507665dcdc83fca178ff23551a814bf93f356ef8
Author: huydoan2 <do...@gmail.com>
AuthorDate: Tue Aug 18 12:46:18 2020 -0500

    Migrate to using Go Module to manage dependencies (#1101)
    
    * Migrate to using Go Module. Upgraded Go version to 1.14 alongside with other packages. Modified unit tests to accomodate changes.
    
    * Upgraded Travis Go version to 1.14
    
    * Added End-of-Line to a test data file
    
    * Fixed test manifest.yml for integration test. Applied golint and sanitized code
    
    Co-authored-by: Huy Doan <hu...@ibm.com>
---
 .travis.yml                                        |   2 +-
 go.mod                                             |  31 ++++++
 go.sum                                             | 115 +++++++++++++++++++++
 parsers/deploy_parser_test.go                      |   7 +-
 parsers/manifest_parser.go                         |   4 +-
 parsers/manifest_parser_test.go                    |  18 ++--
 .../manifest_data_compose_actions_for_limits.yaml  |   1 -
 tests/src/integration/webaction/manifest.yml       |   6 +-
 utils/misc.go                                      |   2 +-
 webaction/webaction.go                             |  84 +++++++--------
 wskderrors/wskdeployerror.go                       |   3 +-
 wski18n/i18n_ids.go                                |   6 +-
 wski18n/i18n_resources.go                          |  34 +++---
 13 files changed, 227 insertions(+), 86 deletions(-)

diff --git a/.travis.yml b/.travis.yml
index 593c0f9..032e715 100644
--- a/.travis.yml
+++ b/.travis.yml
@@ -22,7 +22,7 @@ matrix:
   include:
     - os: linux
       sudo: required
-      go: "1.9.3"
+      go: "1.14"
       services: docker
       dist: xenial
 
diff --git a/go.mod b/go.mod
new file mode 100644
index 0000000..9b497f5
--- /dev/null
+++ b/go.mod
@@ -0,0 +1,31 @@
+module github.com/apache/openwhisk-wskdeploy
+
+go 1.14
+
+require (
+	github.com/apache/openwhisk-client-go v0.0.0-20191018191012-ee5b8709787c
+	github.com/cloudfoundry/jibber_jabber v0.0.0-20151120183258-bcc4c8345a21
+	github.com/fatih/color v1.5.0
+	github.com/ghodss/yaml v1.0.1-0.20190212211648-25d852aebe32
+	github.com/google/go-querystring v0.0.0-20160401233042-9235644dd9e5 // indirect
+	github.com/hashicorp/hcl v0.0.0-20161109000027-973f376f0e7c // indirect
+	github.com/hokaccha/go-prettyjson v0.0.0-20141201065330-f75235bd99da
+	github.com/inconshreveable/mousetrap v1.0.0 // indirect
+	github.com/magiconair/properties v1.7.1-0.20160908093658-0723e352fa35 // indirect
+	github.com/mattn/go-colorable v0.0.7
+	github.com/mattn/go-isatty v0.0.12 // indirect
+	github.com/mitchellh/mapstructure v0.0.0-20161020161836-f3009df150da // indirect
+	github.com/nicksnyder/go-i18n v1.6.1-0.20161107021609-991e81cc94f6
+	github.com/onsi/ginkgo v1.14.0 // indirect
+	github.com/pelletier/go-buffruneio v0.1.0 // indirect
+	github.com/pelletier/go-toml v0.3.6-0.20160920070715-45932ad32dfd // indirect
+	github.com/spf13/afero v0.0.0-20161109000953-06b7e5f50606 // indirect
+	github.com/spf13/cast v0.0.0-20160926084249-2580bc98dc0e // indirect
+	github.com/spf13/cobra v0.0.0-20161026012826-6e91dded25d7
+	github.com/spf13/jwalterweatherman v0.0.0-20160311093646-33c24e77fb80 // indirect
+	github.com/spf13/pflag v0.0.0-20161024131444-5ccb023bc27d // indirect
+	github.com/spf13/viper v0.0.0-20161029213352-651d9d916abc
+	github.com/stretchr/testify v1.6.1
+	golang.org/x/sys v0.0.0-20200810151505-1b9f1253b3ed // indirect
+	gopkg.in/yaml.v2 v2.3.0
+)
diff --git a/go.sum b/go.sum
new file mode 100644
index 0000000..6dcd296
--- /dev/null
+++ b/go.sum
@@ -0,0 +1,115 @@
+github.com/apache/openwhisk-client-go v0.0.0-20191018191012-ee5b8709787c h1:HJim5LeEgcbd4ONmGTwX+ocW0iHK0ohGT3dz3tA0k9o=
+github.com/apache/openwhisk-client-go v0.0.0-20191018191012-ee5b8709787c/go.mod h1:jLLKYP7+1+LFlIJW1n9U1gqeveLM1HIwa4ZHNOFxjPw=
+github.com/cloudfoundry/jibber_jabber v0.0.0-20151120183258-bcc4c8345a21 h1:tuijfIjZyjZaHq9xDUh0tNitwXshJpbLkqMOJv4H3do=
+github.com/cloudfoundry/jibber_jabber v0.0.0-20151120183258-bcc4c8345a21/go.mod h1:po7NpZ/QiTKzBKyrsEAxwnTamCoh8uDk/egRpQ7siIc=
+github.com/davecgh/go-spew v1.1.0 h1:ZDRjVQ15GmhC3fiQ8ni8+OwkZQO4DARzQgrnXU1Liz8=
+github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
+github.com/fatih/color v1.5.0 h1:vBh+kQp8lg9XPr56u1CPrWjFXtdphMoGWVHr9/1c+A0=
+github.com/fatih/color v1.5.0/go.mod h1:Zm6kSWBoL9eyXnKyktHP6abPY2pDugNf5KwzbycvMj4=
+github.com/fsnotify/fsnotify v1.4.7/go.mod h1:jwhsz4b93w/PPRr/qN1Yymfu8t87LnFCMoQvtojpjFo=
+github.com/fsnotify/fsnotify v1.4.9 h1:hsms1Qyu0jgnwNXIxa+/V/PDsU6CfLf6CNO8H7IWoS4=
+github.com/fsnotify/fsnotify v1.4.9/go.mod h1:znqG4EE+3YCdAaPaxE2ZRY/06pZUdp0tY4IgpuI1SZQ=
+github.com/ghodss/yaml v1.0.1-0.20190212211648-25d852aebe32 h1:Mn26/9ZMNWSw9C9ERFA1PUxfmGpolnw2v0bKOREu5ew=
+github.com/ghodss/yaml v1.0.1-0.20190212211648-25d852aebe32/go.mod h1:GIjDIg/heH5DOkXY3YJ/wNhfHsQHoXGjl8G8amsYQ1I=
+github.com/golang/protobuf v1.2.0/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U=
+github.com/golang/protobuf v1.4.0-rc.1/go.mod h1:ceaxUfeHdC40wWswd/P6IGgMaK3YpKi5j83Wpe3EHw8=
+github.com/golang/protobuf v1.4.0-rc.1.0.20200221234624-67d41d38c208/go.mod h1:xKAWHe0F5eneWXFV3EuXVDTCmh+JuBKY0li0aMyXATA=
+github.com/golang/protobuf v1.4.0-rc.2/go.mod h1:LlEzMj4AhA7rCAGe4KMBDvJI+AwstrUpVNzEA03Pprs=
+github.com/golang/protobuf v1.4.0-rc.4.0.20200313231945-b860323f09d0/go.mod h1:WU3c8KckQ9AFe+yFwt9sWVRKCVIyN9cPHBJSNnbL67w=
+github.com/golang/protobuf v1.4.0/go.mod h1:jodUvKwWbYaEsadDk5Fwe5c77LiNKVO9IDvqG2KuDX0=
+github.com/golang/protobuf v1.4.2 h1:+Z5KGCizgyZCbGh1KZqA0fcLLkwbsjIzS4aV2v7wJX0=
+github.com/golang/protobuf v1.4.2/go.mod h1:oDoupMAO8OvCJWAcko0GGGIgR6R6ocIYbsSw735rRwI=
+github.com/google/go-cmp v0.3.0/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU=
+github.com/google/go-cmp v0.3.1/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU=
+github.com/google/go-cmp v0.4.0 h1:xsAVV57WRhGj6kEIi8ReJzQlHHqcBYCElAvkovg3B/4=
+github.com/google/go-cmp v0.4.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
+github.com/google/go-querystring v0.0.0-20160401233042-9235644dd9e5 h1:oERTZ1buOUYlpmKaqlO5fYmz8cZ1rYu5DieJzF4ZVmU=
+github.com/google/go-querystring v0.0.0-20160401233042-9235644dd9e5/go.mod h1:odCYkC5MyYFN7vkCjXpyrEuKhc/BUO6wN/zVPAxq5ck=
+github.com/hashicorp/hcl v0.0.0-20161109000027-973f376f0e7c h1:2MeVe5pyNWMy3QG6+xZfqjrer3Ae9fWKdnwFWL2ciRE=
+github.com/hashicorp/hcl v0.0.0-20161109000027-973f376f0e7c/go.mod h1:oZtUIOe8dh44I2q6ScRibXws4Ajl+d+nod3AaR9vL5w=
+github.com/hokaccha/go-prettyjson v0.0.0-20141201065330-f75235bd99da h1:oAWnYJWp6dui/q7a6g4bpLtxl2X3QTErdognIu1a/yM=
+github.com/hokaccha/go-prettyjson v0.0.0-20141201065330-f75235bd99da/go.mod h1:pFlLw2CfqZiIBOx6BuCeRLCrfxBJipTY0nIOF/VbGcI=
+github.com/hpcloud/tail v1.0.0/go.mod h1:ab1qPbhIpdTxEkNHXyeSf5vhxWSCs/tWer42PpOxQnU=
+github.com/inconshreveable/mousetrap v1.0.0 h1:Z8tu5sraLXCXIcARxBp/8cbvlwVa7Z1NHg9XEKhtSvM=
+github.com/inconshreveable/mousetrap v1.0.0/go.mod h1:PxqpIevigyE2G7u3NXJIT2ANytuPF1OarO4DADm73n8=
+github.com/magiconair/properties v1.7.1-0.20160908093658-0723e352fa35 h1:WtkHGe1cgg+lvDj9p5CvjXrfopsIss0vIAz+/zeYZyQ=
+github.com/magiconair/properties v1.7.1-0.20160908093658-0723e352fa35/go.mod h1:PppfXfuXeibc/6YijjN8zIbojt8czPbwD3XqdrwzmxQ=
+github.com/mattn/go-colorable v0.0.7 h1:zh4kz16dcPG+l666m12h0+dO2HGnQ1ngy7crMErE2UU=
+github.com/mattn/go-colorable v0.0.7/go.mod h1:9vuHe8Xs5qXnSaW/c/ABM9alt+Vo+STaOChaDxuIBZU=
+github.com/mattn/go-isatty v0.0.12 h1:wuysRhFDzyxgEmMf5xjvJ2M9dZoWAXNNr5LSBS7uHXY=
+github.com/mattn/go-isatty v0.0.12/go.mod h1:cbi8OIDigv2wuxKPP5vlRcQ1OAZbq2CE4Kysco4FUpU=
+github.com/mitchellh/mapstructure v0.0.0-20161020161836-f3009df150da h1:z1HPq7I0Eajh3On8i7MEfqOurIg+aCllNR3omoF2UNY=
+github.com/mitchellh/mapstructure v0.0.0-20161020161836-f3009df150da/go.mod h1:FVVH3fgwuzCH5S8UJGiWEs2h04kUh9fWfEaFds41c1Y=
+github.com/nicksnyder/go-i18n v1.6.1-0.20161107021609-991e81cc94f6 h1:SuzoZ++gyy8VwR6DXSTwAIwTMdF0HFOkCHBATG46YPY=
+github.com/nicksnyder/go-i18n v1.6.1-0.20161107021609-991e81cc94f6/go.mod h1:HrK7VCrbOvQoUAQ7Vpy7i87N7JZZZ7R2xBGjv0j365Q=
+github.com/nxadm/tail v1.4.4 h1:DQuhQpB1tVlglWS2hLQ5OV6B5r8aGxSrPc5Qo6uTN78=
+github.com/nxadm/tail v1.4.4/go.mod h1:kenIhsEOeOJmVchQTgglprH7qJGnHDVpk1VPCcaMI8A=
+github.com/onsi/ginkgo v1.6.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE=
+github.com/onsi/ginkgo v1.12.1/go.mod h1:zj2OWP4+oCPe1qIXoGWkgMRwljMUYCdkwsT2108oapk=
+github.com/onsi/ginkgo v1.14.0 h1:2mOpI4JVVPBN+WQRa0WKH2eXR+Ey+uK4n7Zj0aYpIQA=
+github.com/onsi/ginkgo v1.14.0/go.mod h1:iSB4RoI2tjJc9BBv4NKIKWKya62Rps+oPG/Lv9klQyY=
+github.com/onsi/gomega v1.7.1/go.mod h1:XdKZgCCFLUoM/7CFJVPcG8C1xQ1AJ0vpAezJrB7JYyY=
+github.com/onsi/gomega v1.10.1 h1:o0+MgICZLuZ7xjH7Vx6zS/zcu93/BEp1VwkIW1mEXCE=
+github.com/onsi/gomega v1.10.1/go.mod h1:iN09h71vgCQne3DLsj+A5owkum+a2tYe+TOCB1ybHNo=
+github.com/pelletier/go-buffruneio v0.1.0 h1:ig6N9Cg71k/P+UUbhwdOFtJWz+qa8/3by7AzMprMWBM=
+github.com/pelletier/go-buffruneio v0.1.0/go.mod h1:JkE26KsDizTr40EUHkXVtNPvgGtbSNq5BcowyYOWdKo=
+github.com/pelletier/go-toml v0.3.6-0.20160920070715-45932ad32dfd h1:LFdCPBzgbbt6CoebmOy/ePk3eeHgoJRh9RhQVGe2itk=
+github.com/pelletier/go-toml v0.3.6-0.20160920070715-45932ad32dfd/go.mod h1:5z9KED0ma1S8pY6P1sdut58dfprrGBbd/94hg7ilaic=
+github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM=
+github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
+github.com/spf13/afero v0.0.0-20161109000953-06b7e5f50606 h1:tgeCxbZvM5RCofQ9wbgUa6MVFjmw6kUNyTkQlJUCMOk=
+github.com/spf13/afero v0.0.0-20161109000953-06b7e5f50606/go.mod h1:j4pytiNVoe2o6bmDsKpLACNPDBIoEAkihy7loJ1B0CQ=
+github.com/spf13/cast v0.0.0-20160926084249-2580bc98dc0e h1:+axhEi83O3FFcwP/e9t09UHRmV1zZFl8RsgtO0zuZhY=
+github.com/spf13/cast v0.0.0-20160926084249-2580bc98dc0e/go.mod h1:r2rcYCSwa1IExKTDiTfzaxqT2FNHs8hODu4LnUfgKEg=
+github.com/spf13/cobra v0.0.0-20161026012826-6e91dded25d7 h1:faD2f+W+M1cBr+yy71bsFt78g18TUksAf0SRdPP2O7c=
+github.com/spf13/cobra v0.0.0-20161026012826-6e91dded25d7/go.mod h1:1l0Ry5zgKvJasoi3XT1TypsSe7PqH0Sj9dhYf7v3XqQ=
+github.com/spf13/jwalterweatherman v0.0.0-20160311093646-33c24e77fb80 h1:evyGXhHMrxKBDkdlSPv9HMWV2o53o+Ibhm28BGc0450=
+github.com/spf13/jwalterweatherman v0.0.0-20160311093646-33c24e77fb80/go.mod h1:cQK4TGJAtQXfYWX+Ddv3mKDzgVb68N+wFjFa4jdeBTo=
+github.com/spf13/pflag v0.0.0-20161024131444-5ccb023bc27d h1:cpV+7T5E6SXMwGmiItJzTK/37mX2aQj1uWCYWtO3q9U=
+github.com/spf13/pflag v0.0.0-20161024131444-5ccb023bc27d/go.mod h1:DYY7MBk1bdzusC3SYhjObp+wFpr4gzcvqqNjLnInEg4=
+github.com/spf13/viper v0.0.0-20161029213352-651d9d916abc h1:84Cie1cj6yClr0k7fBI4UIGpvOuwa4THRsQ9BwhMaO4=
+github.com/spf13/viper v0.0.0-20161029213352-651d9d916abc/go.mod h1:A8kyI5cUJhb8N+3pkfONlcEcZbueH6nhAm0Fq7SrnBM=
+github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME=
+github.com/stretchr/testify v1.6.1 h1:hDPOHmpOpP40lSULcqw7IrRb/u7w6RpDC9399XyoNd0=
+github.com/stretchr/testify v1.6.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg=
+golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w=
+golang.org/x/net v0.0.0-20180906233101-161cd47e91fd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
+golang.org/x/net v0.0.0-20200520004742-59133d7f0dd7 h1:AeiKBIuRw3UomYXSbLy0Mc2dDLfdtbT/IVn4keq83P0=
+golang.org/x/net v0.0.0-20200520004742-59133d7f0dd7/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A=
+golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
+golang.org/x/sys v0.0.0-20180909124046-d0be0721c37e/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
+golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
+golang.org/x/sys v0.0.0-20190904154756-749cb33beabd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
+golang.org/x/sys v0.0.0-20191005200804-aed5e4c7ecf9/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
+golang.org/x/sys v0.0.0-20191120155948-bd437916bb0e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
+golang.org/x/sys v0.0.0-20200116001909-b77594299b42 h1:vEOn+mP2zCOVzKckCZy6YsCtDblrpj/w7B9nxGNELpg=
+golang.org/x/sys v0.0.0-20200116001909-b77594299b42/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
+golang.org/x/sys v0.0.0-20200323222414-85ca7c5b95cd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
+golang.org/x/sys v0.0.0-20200519105757-fe76b779f299/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
+golang.org/x/sys v0.0.0-20200810151505-1b9f1253b3ed h1:WBkVNH1zd9jg/dK4HCM4lNANnmd12EHC9z+LmcCG4ns=
+golang.org/x/sys v0.0.0-20200810151505-1b9f1253b3ed/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
+golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
+golang.org/x/text v0.3.2 h1:tW2bmiBqwgJj/UpqtC8EpXEZVYOwU0yG4iWbprSVAcs=
+golang.org/x/text v0.3.2/go.mod h1:bEr9sfX3Q8Zfm5fL9x+3itogRgK3+ptLWKqgva+5dAk=
+golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=
+golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543 h1:E7g+9GITq07hpfrRu66IVDexMakfv52eLZ2CXBWiKr4=
+golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
+google.golang.org/protobuf v0.0.0-20200109180630-ec00e32a8dfd/go.mod h1:DFci5gLYBciE7Vtevhsrf46CRTquxDuWsQurQQe4oz8=
+google.golang.org/protobuf v0.0.0-20200221191635-4d8936d0db64/go.mod h1:kwYJMbMJ01Woi6D6+Kah6886xMZcty6N08ah7+eCXa0=
+google.golang.org/protobuf v0.0.0-20200228230310-ab0ca4ff8a60/go.mod h1:cfTl7dwQJ+fmap5saPgwCLgHXTUD7jkjRqWcaiX5VyM=
+google.golang.org/protobuf v1.20.1-0.20200309200217-e05f789c0967/go.mod h1:A+miEFZTKqfCUM6K7xSMQL9OKL/b6hQv+e19PK+JZNE=
+google.golang.org/protobuf v1.21.0/go.mod h1:47Nbq4nVaFHyn7ilMalzfO3qCViNmqZ2kzikPIcrTAo=
+google.golang.org/protobuf v1.23.0 h1:4MY060fB1DLGMB/7MBTLnwQUY6+F09GEiz6SsrNqyzM=
+google.golang.org/protobuf v1.23.0/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU=
+gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405 h1:yhCVgyC4o1eVCa2tZl7eS0r+SDo693bJlVdllGtEeKM=
+gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
+gopkg.in/fsnotify.v1 v1.4.7/go.mod h1:Tz8NjZHkW78fSQdbUxIjBTcgA1z1m8ZHf0WmKUhAMys=
+gopkg.in/tomb.v1 v1.0.0-20141024135613-dd632973f1e7 h1:uRGJdciOHaEIrze2W8Q3AKkepLTh2hOroT7a+7czfdQ=
+gopkg.in/tomb.v1 v1.0.0-20141024135613-dd632973f1e7/go.mod h1:dt/ZhP58zS4L8KSrWDmTeBkI65Dw0HsyUHuEVlX15mw=
+gopkg.in/yaml.v2 v2.2.2 h1:ZCJp+EgiOT7lHqUV2J862kp8Qj64Jo6az82+3Td9dZw=
+gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
+gopkg.in/yaml.v2 v2.2.4/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
+gopkg.in/yaml.v2 v2.3.0 h1:clyUAQHOM3G0M3f5vQj7LuJrETvjVot3Z5el9nffUtU=
+gopkg.in/yaml.v2 v2.3.0/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
+gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c h1:dUUwHk2QECo/6vqA44rthZ8ie2QXMNeKRTHCNY2nXvo=
+gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
diff --git a/parsers/deploy_parser_test.go b/parsers/deploy_parser_test.go
index 02efd9a..7ae0da9 100644
--- a/parsers/deploy_parser_test.go
+++ b/parsers/deploy_parser_test.go
@@ -55,7 +55,7 @@ func TestInvalidKeyDeploymentYaml(t *testing.T) {
 	_, err = p.ParseDeployment(tmpfile.Name())
 	assert.NotNil(t, err)
 	// NOTE: go-yaml/yaml gets the line # wrong; testing only for the invalid key message
-	assert.Contains(t, err.Error(), "field invalidKey not found in struct parsers.Project")
+	assert.Contains(t, err.Error(), "field invalidKey not found in type parsers.Project")
 }
 
 func TestMappingValueDeploymentYaml(t *testing.T) {
@@ -73,8 +73,7 @@ func TestMappingValueDeploymentYaml(t *testing.T) {
 	p := NewYAMLParser()
 	_, err = p.ParseDeployment(tmpfile.Name())
 	assert.NotNil(t, err)
-	// go-yaml/yaml prints the wrong line number for mapping values. It should be 3.
-	assert.Contains(t, err.Error(), "line 2: mapping values are not allowed in this context")
+	assert.Contains(t, err.Error(), "line 3: mapping values are not allowed in this context")
 }
 
 func TestMissingRootNodeDeploymentYaml(t *testing.T) {
@@ -91,7 +90,7 @@ func TestMissingRootNodeDeploymentYaml(t *testing.T) {
 	_, err = p.ParseDeployment(tmpfile.Name())
 	assert.NotNil(t, err)
 	// go-yaml/yaml prints the wrong line number for mapping values. It should be 3.
-	assert.Contains(t, err.Error(), "line 1: field name not found in struct parsers.YAML")
+	assert.Contains(t, err.Error(), "line 1: field name not found in type parsers.YAML")
 }
 
 func TestParseDeploymentYAML_Project(t *testing.T) {
diff --git a/parsers/manifest_parser.go b/parsers/manifest_parser.go
index d29e496..beff9cc 100644
--- a/parsers/manifest_parser.go
+++ b/parsers/manifest_parser.go
@@ -1227,7 +1227,7 @@ func (dm *YAMLParser) ComposeApiRecords(client *whisk.Config, packageName string
 						// web or web-export set to any of [true, yes, raw]; if not,
 						// we will try to add it (if no strict" flag) and warn user that we did so
 						if err := webaction.TryUpdateAPIsActionToWebAction(actionrecords, packageName,
-							apiName, actionName, false); err!=nil {
+							apiName, actionName, false); err != nil {
 							return requests, requestOptions, err
 						}
 						// verify that the sequence action is defined under sequence records
@@ -1236,7 +1236,7 @@ func (dm *YAMLParser) ComposeApiRecords(client *whisk.Config, packageName string
 						// web or web-export set to any of [true, yes, raw]; if not,
 						// we will try to add it (if no strict" flag) and warn user that we did so
 						if err := webaction.TryUpdateAPIsActionToWebAction(sequencerecords, packageName,
-							apiName, actionName, true); err!=nil {
+							apiName, actionName, true); err != nil {
 							return requests, requestOptions, err
 						}
 					} else {
diff --git a/parsers/manifest_parser_test.go b/parsers/manifest_parser_test.go
index ea5ef55..3782360 100644
--- a/parsers/manifest_parser_test.go
+++ b/parsers/manifest_parser_test.go
@@ -190,12 +190,12 @@ func testUnmarshalTemporaryFile(data []byte, filename string) (p *YAMLParser, m
 func TestUnmarshalForHelloNodeJS(t *testing.T) {
 	testUnmarshalManifestPackageAndActionBasic(t,
 		"../tests/dat/manifest_hello_nodejs.yaml", // Manifest path
-		"helloworld",                              // Package name
-		1,                                         // # of Actions
-		"helloNodejs",                             // Action name
-		"actions/hello.js",                        // Function path
-		"nodejs:default",                                // "Runtime
-		"")                                        // "Main" function name
+		"helloworld",       // Package name
+		1,                  // # of Actions
+		"helloNodejs",      // Action name
+		"actions/hello.js", // Function path
+		"nodejs:default",   // "Runtime
+		"")                 // "Main" function name
 }
 
 // Test 2: validate manifest_parser:Unmarshal() method with a sample manifest in Java
@@ -254,7 +254,7 @@ func TestUnmarshalForHelloWithParams(t *testing.T) {
 		1,                              // # of Actions
 		TEST_ACTION_NAME,               // Action name
 		"actions/hello-with-params.js", // Function path
-		"nodejs:default",                     // "Runtime
+		"nodejs:default",               // "Runtime
 		"")                             // "Main" function name
 
 	if pkg != nil {
@@ -1691,7 +1691,7 @@ func TestBadYAMLInvalidPackageKeyInManifest(t *testing.T) {
 
 	assert.NotNil(t, err)
 	// NOTE: go-yaml/yaml gets the line # wrong; testing only for the invalid key message
-	assert.Contains(t, err.Error(), "field invalidKey not found in struct parsers.Package")
+	assert.Contains(t, err.Error(), "field invalidKey not found in type parsers.Package")
 }
 
 func TestBadYAMLInvalidKeyMappingValueInManifest(t *testing.T) {
@@ -1710,7 +1710,7 @@ func TestBadYAMLMissingRootKeyInManifest(t *testing.T) {
 	_, err := p.ParseManifest("../tests/dat/manifest_bad_yaml_missing_root_key.yaml")
 
 	assert.NotNil(t, err)
-	assert.Contains(t, err.Error(), "field actions not found in struct parsers.YAML")
+	assert.Contains(t, err.Error(), "field actions not found in type parsers.YAML")
 }
 
 func TestBadYAMLInvalidCommentInManifest(t *testing.T) {
diff --git a/tests/dat/manifest_data_compose_actions_for_limits.yaml b/tests/dat/manifest_data_compose_actions_for_limits.yaml
index 7408149..574f3d5 100644
--- a/tests/dat/manifest_data_compose_actions_for_limits.yaml
+++ b/tests/dat/manifest_data_compose_actions_for_limits.yaml
@@ -21,7 +21,6 @@ packages:
       hello1:
         function: ../src/integration/helloworld/actions/hello.js
         limits:
-          timeout: 1
           timeout: 600000
       hello2:
         function: ../src/integration/helloworld/actions/hello.js
diff --git a/tests/src/integration/webaction/manifest.yml b/tests/src/integration/webaction/manifest.yml
index 7c6c550..27902b2 100644
--- a/tests/src/integration/webaction/manifest.yml
+++ b/tests/src/integration/webaction/manifest.yml
@@ -50,19 +50,17 @@ packages:
             greeting-web-action-final:
                 annotations:
                     web-export: true
+                    final: true
                 version: 1.0
                 function: src/greeting.js
                 runtime: nodejs:default
-                annotations:
-                    final: true
             greeting-web-action-with-custom-options:
                 annotations:
                     web-export: true
+                    web-custom-options: true
                 version: 1.0
                 function: src/greeting.js
                 runtime: nodejs:default
-                annotations:
-                    web-custom-options: true
         triggers:
             webActionTrigger:
         rules:
diff --git a/utils/misc.go b/utils/misc.go
index 30fb601..ea2b414 100644
--- a/utils/misc.go
+++ b/utils/misc.go
@@ -188,7 +188,7 @@ func getKeyValueFormattedJSON(data map[string]interface{}) whisk.KeyValueArr {
 	return keyValueArr
 }
 
-func GetActionFromActionRecords( records []ActionRecord, packageName string, actionName string ) *whisk.Action {
+func GetActionFromActionRecords(records []ActionRecord, packageName string, actionName string) *whisk.Action {
 	for _, record := range records {
 		if record.Packagename == packageName {
 			if record.Action.Name == actionName {
diff --git a/webaction/webaction.go b/webaction/webaction.go
index b4f2f9f..949f6a9 100644
--- a/webaction/webaction.go
+++ b/webaction/webaction.go
@@ -82,11 +82,11 @@ func SetWebActionAnnotations(filePath string, action string, webMode string, ann
 
 type WebActionAnnotationMethod func(annotations whisk.KeyValueArr) whisk.KeyValueArr
 
-func webActionAnnotations( fetchAnnotations bool, annotations whisk.KeyValueArr,
+func webActionAnnotations(fetchAnnotations bool, annotations whisk.KeyValueArr,
 	webActionAnnotationMethod WebActionAnnotationMethod) (whisk.KeyValueArr, error) {
 
-		if annotations != nil || !fetchAnnotations {
-			annotations = webActionAnnotationMethod(annotations)
+	if annotations != nil || !fetchAnnotations {
+		annotations = webActionAnnotationMethod(annotations)
 	}
 
 	return annotations, nil
@@ -149,7 +149,7 @@ func HasAnnotation(annotations *whisk.KeyValueArr, key string) bool {
 	return (annotations.FindKeyValue(key) >= 0)
 }
 
-func warnWebAnnotationMissingFromActionOrSequence(apiName string, actionName string, isSequence bool){
+func warnWebAnnotationMissingFromActionOrSequence(apiName string, actionName string, isSequence bool) {
 	nameKey := wski18n.KEY_ACTION
 	i18nWarningID := wski18n.ID_WARN_API_MISSING_WEB_ACTION_X_action_X_api_X
 
@@ -160,8 +160,8 @@ func warnWebAnnotationMissingFromActionOrSequence(apiName string, actionName str
 
 	warningString := wski18n.T(i18nWarningID,
 		map[string]interface{}{
-			nameKey: actionName,
-			wski18n.KEY_API:      apiName})
+			nameKey:         actionName,
+			wski18n.KEY_API: apiName})
 	wskprint.PrintOpenWhiskWarning(warningString)
 }
 
@@ -170,22 +170,22 @@ func TryUpdateAPIsActionToWebAction(records []utils.ActionRecord, pkgName string
 	// if records are nil; it may be that the Action already exists at target provider OR
 	// this is a unit test.  If the former case, we pass through and allow provider to validate
 	// and return an error.
-	if records!=nil {
-		action := utils.GetActionFromActionRecords(records,pkgName,actionName)
+	if records != nil {
+		action := utils.GetActionFromActionRecords(records, pkgName, actionName)
 
-		if !HasAnnotation(&action.Annotations,WEB_EXPORT_ANNOT) {
+		if !HasAnnotation(&action.Annotations, WEB_EXPORT_ANNOT) {
 			if !utils.Flags.Strict {
-				warnWebAnnotationMissingFromActionOrSequence(apiName,actionName,isSequence)
+				warnWebAnnotationMissingFromActionOrSequence(apiName, actionName, isSequence)
 				action.Annotations = addWebAnnotations(action.Annotations)
 				wskprint.PrintOpenWhiskVerbose(utils.Flags.Verbose,
-					fmt.Sprintf("Web Annotations to Action; result: %v\n",action.Annotations))
+					fmt.Sprintf("Web Annotations to Action; result: %v\n", action.Annotations))
 			} else {
-				return wskderrors.NewInvalidWebActionError(apiName,actionName,isSequence)
+				return wskderrors.NewInvalidWebActionError(apiName, actionName, isSequence)
 			}
 		} else {
 			// verify its web-export annotation value is "true", else error
 			if !action.WebAction() {
-				return wskderrors.NewInvalidWebActionError(apiName,actionName,isSequence)
+				return wskderrors.NewInvalidWebActionError(apiName, actionName, isSequence)
 			}
 		}
 	}
@@ -198,42 +198,42 @@ func ValidateRequireWhiskAuthAnnotationValue(actionName string, value interface{
 	var enabled = wski18n.FEATURE_DISABLED
 
 	switch value.(type) {
-		case string:
-			secureValue := value.(string)
-			// assure the user-supplied token is valid (i.e., for now a non-empty string)
-			if len(secureValue) != 0 && secureValue!="<nil>" {
-				isValid = true
-				enabled = wski18n.FEATURE_ENABLED
-			}
-		case int:
-			secureValue := value.(int)
-			// FYI, the CLI defines MAX_JS_INT = 1<<53 - 1 (i.e.,  9007199254740991)
-			// NOTE: For JS, the largest exact integral value is 253-1, or 9007199254740991.
-			// In ES6, this is defined as Number MAX_SAFE_INTEGER.
-			// However, in JS, the bitwise operators and shift operators operate on 32-bit ints,
-			// so in that case, the max safe integer is 231-1, or 2147483647
-			// We also disallow negative integers
-			// NOTE: when building for 386 archs. we need to assure comparison with MAX_JS_INT does not
-			// "blow up" and must allow the compiler to compare an untyped int (secureValue) to effectively
-			// an int64... so for the comparison we MUST force a type conversion to avoid "int" size mismatch
-			if int64(secureValue) < MAX_JS_INT && secureValue > 0 {
-				isValid = true
-				enabled = wski18n.FEATURE_ENABLED
-			}
-		case bool:
-			secureValue := value.(bool)
+	case string:
+		secureValue := value.(string)
+		// assure the user-supplied token is valid (i.e., for now a non-empty string)
+		if len(secureValue) != 0 && secureValue != "<nil>" {
 			isValid = true
-			if secureValue {
-				enabled = wski18n.FEATURE_ENABLED
-			}
+			enabled = wski18n.FEATURE_ENABLED
+		}
+	case int:
+		secureValue := value.(int)
+		// FYI, the CLI defines MAX_JS_INT = 1<<53 - 1 (i.e.,  9007199254740991)
+		// NOTE: For JS, the largest exact integral value is 253-1, or 9007199254740991.
+		// In ES6, this is defined as Number MAX_SAFE_INTEGER.
+		// However, in JS, the bitwise operators and shift operators operate on 32-bit ints,
+		// so in that case, the max safe integer is 231-1, or 2147483647
+		// We also disallow negative integers
+		// NOTE: when building for 386 archs. we need to assure comparison with MAX_JS_INT does not
+		// "blow up" and must allow the compiler to compare an untyped int (secureValue) to effectively
+		// an int64... so for the comparison we MUST force a type conversion to avoid "int" size mismatch
+		if int64(secureValue) < MAX_JS_INT && secureValue > 0 {
+			isValid = true
+			enabled = wski18n.FEATURE_ENABLED
+		}
+	case bool:
+		secureValue := value.(bool)
+		isValid = true
+		if secureValue {
+			enabled = wski18n.FEATURE_ENABLED
+		}
 	}
 
 	if !isValid {
 		errMsg := wski18n.T(wski18n.ID_ERR_WEB_ACTION_REQUIRE_AUTH_TOKEN_INVALID_X_action_X_key_X_value,
 			map[string]interface{}{
 				wski18n.KEY_ACTION: actionName,
-				wski18n.KEY_KEY: REQUIRE_WHISK_AUTH,
-				wski18n.KEY_VALUE: fmt.Sprintf("%v", value)})
+				wski18n.KEY_KEY:    REQUIRE_WHISK_AUTH,
+				wski18n.KEY_VALUE:  fmt.Sprintf("%v", value)})
 		return errMsg, wskderrors.NewActionSecureKeyError(errMsg)
 	}
 
diff --git a/wskderrors/wskdeployerror.go b/wskderrors/wskdeployerror.go
index 70e0bcd..11ac431 100644
--- a/wskderrors/wskdeployerror.go
+++ b/wskderrors/wskdeployerror.go
@@ -456,8 +456,7 @@ type InvalidWebActionAPIError struct {
 }
 
 func NewInvalidWebActionError(apiName string, actionName string, isSequence bool) *InvalidWebActionAPIError {
-	var err = &InvalidWebActionAPIError{
-	}
+	var err = &InvalidWebActionAPIError{}
 
 	i18nErrorID := wski18n.ID_ERR_API_MISSING_WEB_ACTION_X_action_X_api_X
 
diff --git a/wski18n/i18n_ids.go b/wski18n/i18n_ids.go
index 09ac1f3..a16f310 100644
--- a/wski18n/i18n_ids.go
+++ b/wski18n/i18n_ids.go
@@ -37,7 +37,7 @@ const (
 	CONFIGURATION      = "Configuration"
 	DEPLOYMENT_FILE    = "deployment file"
 	FEATURE_DISABLED   = "disabled"
-	FEATURE_ENABLED	   = "enabled"
+	FEATURE_ENABLED    = "enabled"
 	MANIFEST_FILE      = "manifest file"
 	NAME_PROJECT       = "project name"
 	PACKAGE_BINDING    = "package binding"
@@ -217,8 +217,8 @@ const (
 	ID_ERR_INVALID_PARAM_FILE_X_file_X                                   = "msg_err_invalid_param_file"
 	ID_ERR_REQUIRED_INPUTS_MISSING_VALUE_X_inputs_X                      = "msg_err_required_inputs_missing_value"
 	ID_ERR_API_GATEWAY_BASE_PATH_INVALID_X_api_X                         = "msg_err_api_gateway_base_path_invalid"
-	ID_ERR_API_MISSING_WEB_ACTION_X_action_X_api_X           			 = "msg_err_api_missing_web_action"
-	ID_ERR_API_MISSING_WEB_SEQUENCE_X_sequence_X_api_X      			 = "msg_err_api_missing_web_sequence"
+	ID_ERR_API_MISSING_WEB_ACTION_X_action_X_api_X                       = "msg_err_api_missing_web_action"
+	ID_ERR_API_MISSING_WEB_SEQUENCE_X_sequence_X_api_X                   = "msg_err_api_missing_web_sequence"
 	ID_ERR_RUNTIME_PARSER_ERROR                                          = "msg_err_runtime_parser_error"
 	ID_ERR_WEB_ACTION_REQUIRE_AUTH_TOKEN_INVALID_X_action_X_key_X_value  = "msg_err_web_action_require_auth_token_invalid"
 
diff --git a/wski18n/i18n_resources.go b/wski18n/i18n_resources.go
index d26c1e5..e7d4e67 100644
--- a/wski18n/i18n_resources.go
+++ b/wski18n/i18n_resources.go
@@ -329,14 +329,14 @@ func AssetNames() []string {
 
 // _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/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,
 }
@@ -380,17 +380,18 @@ type bintree struct {
 	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{}},
+			"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{}},
 		}},
@@ -443,4 +444,3 @@ func _filePath(dir, name string) string {
 	cannonicalName := strings.Replace(name, "\\", "/", -1)
 	return filepath.Join(append([]string{dir}, strings.Split(cannonicalName, "/")...)...)
 }
-