You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@openserverless.apache.org by ms...@apache.org on 2024/07/18 10:49:34 UTC
(openserverless-cli) 04/04: work-in-progress wsk and wskdeploy
This is an automated email from the ASF dual-hosted git repository.
msciabarra pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/openserverless-cli.git
commit cb3187aecdba779e184c680e848be8b1bc3941b3
Author: Michele Sciabarra <mi...@sciabarra.com>
AuthorDate: Thu Jul 18 12:49:23 2024 +0200
work-in-progress wsk and wskdeploy
---
.gitmodules | 12 +-
Taskfile.yml | 3 +-
go.mod | 40 ++--
go.sum | 88 +++++---
patches/.gitignore | 4 +
patches/README.md | 40 +++-
patches/patch-task.sh | 2 +-
patches/{patch-task.sh => patch-wsk.sh} | 0
patches/{patch-task.sh => patch-wskdeploy.sh} | 20 +-
patches/runtimes.go | 291 ++++++++++++++++++++++++++
patches/runtimes_extra.go | 108 ++++++++++
tools/global.go | 12 ++
tools/task | 2 +-
tools/wsk | 1 +
tools/wskdeploy | 1 +
15 files changed, 544 insertions(+), 80 deletions(-)
diff --git a/.gitmodules b/.gitmodules
index d7dc5e0..f6f96cf 100644
--- a/.gitmodules
+++ b/.gitmodules
@@ -6,12 +6,6 @@
path = tools/sh
url = https://github.com/sciabarracom/sh
branch = openserverless
-[submodule "tools/wsk"]
- path = tools/wsh
- url = https://github.com/sciabarracom/openwhisk-cli
-[submodule "tools/wskdeploy"]
- path = tools/wskdeploy
- url = https://github.com/sciabarracom/openwhisk-cli
[submodule "openserverless-task"]
path = openserverless-task
url = https://github.com/apache/openserverless-task
@@ -28,3 +22,9 @@
path = tools/envsubst
url = https://github.com/nuvolaris/envsubst
branch = openserverless
+[submodule "tools/wsk"]
+ path = tools/wsk
+ url = https://github.com/sciabarracom/openwhisk-cli
+[submodule "tools/wskdeploy"]
+ path = tools/wskdeploy
+ url = https://github.com/sciabarracom/openwhisk-wskdeploy
diff --git a/Taskfile.yml b/Taskfile.yml
index 66c4bb3..0fb8810 100644
--- a/Taskfile.yml
+++ b/Taskfile.yml
@@ -27,7 +27,8 @@ vars:
tasks:
default:
- - task: build
+ - task -l
+
cli-ver:
- task: update-runtimes
diff --git a/go.mod b/go.mod
index 6d1d571..d38acf1 100644
--- a/go.mod
+++ b/go.mod
@@ -1,11 +1,14 @@
module github.com/nuvolaris/nuv
-go 1.21
+go 1.21.0
+
+toolchain go1.21.11
require (
github.com/apache/openwhisk-client-go v0.0.0-20230421081559-13fc65f65684
github.com/docopt/docopt-go v0.0.0-20180111231733-ee0de3bc6815
github.com/go-git/go-git/v5 v5.9.0
+ github.com/go-task/task/v3 v3.38.0
github.com/itchyny/gojq v0.12.13
github.com/mitchellh/go-homedir v1.1.0
github.com/nicksnyder/go-i18n v1.10.1
@@ -15,7 +18,16 @@ require (
github.com/nuvolaris/gron v0.0.0-20231020134423-84e679ea6aad
github.com/nuvolaris/someutils v0.0.0-20230406090008-39e94b70e1ae
github.com/nuvolaris/task/v3 v3.30.2-nuv.2309151614
- github.com/stretchr/testify v1.8.4
+ github.com/stretchr/testify v1.9.0
+ mvdan.cc/sh/v3 v3.8.0
+)
+
+require (
+ github.com/Ladicle/tabwriter v1.0.0 // indirect
+ github.com/alecthomas/chroma/v2 v2.14.0 // indirect
+ github.com/dominikbraun/graph v0.23.0 // indirect
+ github.com/go-task/slim-sprig/v3 v3.0.0 // indirect
+ github.com/go-task/template v0.0.0-20240602015157-960e6f576656 // indirect
)
require (
@@ -43,8 +55,8 @@ require (
github.com/tidwall/pretty v1.2.0 // indirect
github.com/tidwall/sjson v1.2.4 // indirect
github.com/zeebo/xxh3 v1.0.2 // indirect
- golang.org/x/mod v0.12.0 // indirect
- golang.org/x/tools v0.13.0 // indirect
+ golang.org/x/mod v0.14.0 // indirect
+ golang.org/x/tools v0.17.0 // indirect
)
require (
@@ -60,9 +72,9 @@ require (
github.com/cloudfoundry/jibber_jabber v0.0.0-20151120183258-bcc4c8345a21 // indirect
github.com/danieljoos/wincred v1.2.0 // indirect
github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc // indirect
- github.com/dlclark/regexp2 v1.10.0 // indirect
+ github.com/dlclark/regexp2 v1.11.0 // indirect
github.com/emirpasic/gods v1.18.1 // indirect
- github.com/fatih/color v1.15.0 // indirect
+ github.com/fatih/color v1.17.0 // indirect
github.com/ghodss/yaml v1.0.1-0.20190212211648-25d852aebe32 // indirect
github.com/go-git/gcfg v1.5.1-0.20230307220236-3a3c6141e376 // indirect
github.com/go-git/go-billy/v5 v5.5.0 // indirect
@@ -83,7 +95,7 @@ require (
github.com/kevinburke/ssh_config v1.2.0 // indirect
github.com/laher/uggo v0.0.0-20140418102112-0ad25fe11c5b // indirect
github.com/mattn/go-colorable v0.1.13 // indirect
- github.com/mattn/go-isatty v0.0.19
+ github.com/mattn/go-isatty v0.0.20
github.com/mattn/go-runewidth v0.0.15 // indirect
github.com/mattn/go-zglob v0.0.4 // indirect
github.com/mitchellh/hashstructure/v2 v2.0.2 // indirect
@@ -98,16 +110,16 @@ require (
github.com/sergi/go-diff v1.3.1 // indirect
github.com/skeema/knownhosts v1.2.0 // indirect
github.com/spf13/cobra v1.7.0 // indirect
- github.com/spf13/pflag v1.0.5 // indirect
+ github.com/spf13/pflag v1.0.5
github.com/xanzy/ssh-agent v0.3.3 // indirect
github.com/zalando/go-keyring v0.2.3
- golang.org/x/crypto v0.13.0 // indirect
+ golang.org/x/crypto v0.18.0 // indirect
golang.org/x/exp v0.0.0-20230905200255-921286631fa9
- golang.org/x/net v0.15.0 // indirect
- golang.org/x/sync v0.3.0 // indirect
- golang.org/x/sys v0.12.0 // indirect
- golang.org/x/term v0.12.0
- golang.org/x/text v0.13.0 // indirect
+ golang.org/x/net v0.20.0 // indirect
+ golang.org/x/sync v0.7.0 // indirect
+ golang.org/x/sys v0.21.0 // indirect
+ golang.org/x/term v0.21.0
+ golang.org/x/text v0.14.0 // indirect
gopkg.in/warnings.v0 v0.1.2 // indirect
gopkg.in/yaml.v2 v2.4.0 // indirect
gopkg.in/yaml.v3 v3.0.1
diff --git a/go.sum b/go.sum
index ef3138f..2dc68e5 100644
--- a/go.sum
+++ b/go.sum
@@ -15,6 +15,8 @@ dario.cat/mergo v1.0.0/go.mod h1:uNxQE+84aUszobStD9th8a29P2fMDhsBdgRYvZOxGmk=
dmitri.shuralyov.com/gpu/mtl v0.0.0-20190408044501-666a987793e9/go.mod h1:H6x//7gZCb22OMCxBHrMx7a5I7Hp++hsVxbQ4BYO7hU=
github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU=
github.com/BurntSushi/xgb v0.0.0-20160522181843-27f122750802/go.mod h1:IVnqGOEym/WlBOVXweHU+Q+/VP0lqqI8lqeDx9IjBqo=
+github.com/Ladicle/tabwriter v1.0.0 h1:DZQqPvMumBDwVNElso13afjYLNp0Z7pHqHnu0r4t9Dg=
+github.com/Ladicle/tabwriter v1.0.0/go.mod h1:c4MdCjxQyTbGuQO/gvqJ+IA/89UEwrsD6hUCW98dyp4=
github.com/Masterminds/goutils v1.1.1 h1:5nUrii3FMTL5diU80unEVvNevw1nH4+ZV4DSLVJLSYI=
github.com/Masterminds/goutils v1.1.1/go.mod h1:8cTjp+g8YejhMuvIA5y2vz3BpJxksy863GQaJW2MFNU=
github.com/Masterminds/semver v1.5.0 h1:H65muMkzWKEuNDnfl9d70GUjFniHKHRbFPGBuZ3QEww=
@@ -33,6 +35,12 @@ github.com/a8m/envsubst v1.4.2 h1:4yWIHXOLEJHQEFd4UjrWDrYeYlV7ncFWJOCBRLOZHQg=
github.com/a8m/envsubst v1.4.2/go.mod h1:MVUTQNGQ3tsjOOtKCNd+fl8RzhsXcDvvAEzkhGtlsbY=
github.com/acomagu/bufpipe v1.0.4 h1:e3H4WUzM3npvo5uv95QuJM3cQspFNtFBzvJ2oNjKIDQ=
github.com/acomagu/bufpipe v1.0.4/go.mod h1:mxdxdup/WdsKVreO5GpW4+M/1CE2sMG4jeGJ2sYmHc4=
+github.com/alecthomas/assert/v2 v2.7.0 h1:QtqSACNS3tF7oasA8CU6A6sXZSBDqnm7RfpLl9bZqbE=
+github.com/alecthomas/assert/v2 v2.7.0/go.mod h1:Bze95FyfUr7x34QZrjL+XP+0qgp/zg8yS+TtBj1WA3k=
+github.com/alecthomas/chroma/v2 v2.14.0 h1:R3+wzpnUArGcQz7fCETQBzO5n9IMNi13iIs46aU4V9E=
+github.com/alecthomas/chroma/v2 v2.14.0/go.mod h1:QolEbTfmUHIMVpBqxeDnNBj2uoeI4EbYP4i6n68SG4I=
+github.com/alecthomas/repr v0.4.0 h1:GhI2A8MACjfegCPVq9f1FLvIBS+DrQ2KQBFZP1iFzXc=
+github.com/alecthomas/repr v0.4.0/go.mod h1:Fr0507jx4eOXV7AlPV6AVZLYrLIuIeSOWtW57eE/O/4=
github.com/alecthomas/template v0.0.0-20160405071501-a0175ee3bccc/go.mod h1:LOuyumcjzFXgccqObfd/Ljyb9UuFJ6TxHnclSeseNhc=
github.com/alecthomas/units v0.0.0-20151022065526-2efee857e7cf/go.mod h1:ybxpYRFXyAe+OPACYpWeL0wqObRcbAqCMya13uyzqw0=
github.com/alessio/shellescape v1.4.2 h1:MHPfaU+ddJ0/bYWpgIeUnQUqKrlJ1S7BfEYPM4uEoM0=
@@ -71,8 +79,8 @@ github.com/coreos/pkg v0.0.0-20180928190104-399ea9e2e55f/go.mod h1:E3G3o1h8I7cfc
github.com/cpuguy83/go-md2man/v2 v2.0.0/go.mod h1:maD7wRr/U5Z6m/iR4s+kqSMx2CaBsrgA7czyZG/E6dU=
github.com/cpuguy83/go-md2man/v2 v2.0.2/go.mod h1:tgQtvFlXSQOSOSIRvRPT7W67SCa46tRHOmNcaadrF8o=
github.com/creack/pty v1.1.9/go.mod h1:oKZEueFk5CKHvIhNR5MUki03XCEU+Q6VDXinZuGJ33E=
-github.com/creack/pty v1.1.18 h1:n56/Zwd5o6whRC5PMGretI4IdRLlmBXYNjScPaBgsbY=
-github.com/creack/pty v1.1.18/go.mod h1:MOBLtS5ELjhRRrroQr9kyvTxUAFNvYEK993ew/Vr4O4=
+github.com/creack/pty v1.1.21 h1:1/QdRyBaHHJP61QkWMXlOIBfsgdDeeKfK8SYVUWJKf0=
+github.com/creack/pty v1.1.21/go.mod h1:MOBLtS5ELjhRRrroQr9kyvTxUAFNvYEK993ew/Vr4O4=
github.com/cyphar/filepath-securejoin v0.2.4 h1:Ugdm7cg7i6ZK6x3xDF1oEu1nfkyfH53EtKeQYTC3kyg=
github.com/cyphar/filepath-securejoin v0.2.4/go.mod h1:aPGpWjXOXUn2NCNjFvBE6aRxGGx79pTxQpKOJNYHHl4=
github.com/danieljoos/wincred v1.2.0 h1:ozqKHaLK0W/ii4KVbbvluM91W2H3Sh0BncbUNPS7jLE=
@@ -84,20 +92,22 @@ github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc/go.mod h1:J7Y8Yc
github.com/dgrijalva/jwt-go v3.2.0+incompatible/go.mod h1:E3ru+11k8xSBh+hMPgOLZmtrrCbhqsmaPHjLKYnJCaQ=
github.com/dgryski/go-sip13 v0.0.0-20181026042036-e10d5fee7954/go.mod h1:vAd38F8PWV+bWy6jNmig1y/TA+kYO4g3RSRF0IAv0no=
github.com/dlclark/regexp2 v1.7.0/go.mod h1:DHkYz0B9wPfa6wondMfaivmHpzrQ3v9q8cnmRbL6yW8=
-github.com/dlclark/regexp2 v1.10.0 h1:+/GIL799phkJqYW+3YbOd8LCcbHzT0Pbo8zl70MHsq0=
-github.com/dlclark/regexp2 v1.10.0/go.mod h1:DHkYz0B9wPfa6wondMfaivmHpzrQ3v9q8cnmRbL6yW8=
+github.com/dlclark/regexp2 v1.11.0 h1:G/nrcoOa7ZXlpoa/91N3X7mM3r8eIlMBBJZvsz/mxKI=
+github.com/dlclark/regexp2 v1.11.0/go.mod h1:DHkYz0B9wPfa6wondMfaivmHpzrQ3v9q8cnmRbL6yW8=
github.com/docopt/docopt-go v0.0.0-20180111231733-ee0de3bc6815 h1:bWDMxwH3px2JBh6AyO7hdCn/PkvCZXii8TGj7sbtEbQ=
github.com/docopt/docopt-go v0.0.0-20180111231733-ee0de3bc6815/go.mod h1:WwZ+bS3ebgob9U8Nd0kOddGdZWjyMGR8Wziv+TBNwSE=
+github.com/dominikbraun/graph v0.23.0 h1:TdZB4pPqCLFxYhdyMFb1TBdFxp8XLcJfTTBQucVPgCo=
+github.com/dominikbraun/graph v0.23.0/go.mod h1:yOjYyogZLY1LSG9E33JWZJiq5k83Qy2C6POAuiViluc=
github.com/elazarl/goproxy v0.0.0-20230808193330-2592e75ae04a h1:mATvB/9r/3gvcejNsXKSkQ6lcIaNec2nyfOdlTBR2lU=
github.com/elazarl/goproxy v0.0.0-20230808193330-2592e75ae04a/go.mod h1:Ro8st/ElPeALwNFlcTpWmkr6IoMFfkjXAvTHpevnDsM=
github.com/emirpasic/gods v1.18.1 h1:FXtiHYKDGKCW2KzwZKx0iC0PQmdlorYgdFG9jPXJ1Bc=
github.com/emirpasic/gods v1.18.1/go.mod h1:8tpGGwCnJ5H4r6BWwaV6OrWmMoPhUl5jm/FMNAnJvWQ=
github.com/fatih/color v1.7.0/go.mod h1:Zm6kSWBoL9eyXnKyktHP6abPY2pDugNf5KwzbycvMj4=
github.com/fatih/color v1.10.0/go.mod h1:ELkj/draVOlAH/xkhN6mQ50Qd0MPOk5AAr3maGEBuJM=
-github.com/fatih/color v1.15.0 h1:kOqh6YHBtK8aywxGerMG2Eq3H6Qgoqeo13Bk2Mv/nBs=
-github.com/fatih/color v1.15.0/go.mod h1:0h5ZqXfHYED7Bhv2ZJamyIOUej9KtShiJESRwBDUSsw=
-github.com/frankban/quicktest v1.14.5 h1:dfYrrRyLtiqT9GyKXgdh+k4inNeTvmGbuSgZ3lx3GhA=
-github.com/frankban/quicktest v1.14.5/go.mod h1:4ptaffx2x8+WTWXmUCuVU6aPUX1/Mz7zb5vbUoiM6w0=
+github.com/fatih/color v1.17.0 h1:GlRw1BRJxkpqUCBKzKOw098ed57fEsKeNjpTe3cSjK4=
+github.com/fatih/color v1.17.0/go.mod h1:YZ7TlrGPkiz6ku9fK3TLD/pl3CpsiFyu8N92HLgmosI=
+github.com/frankban/quicktest v1.14.6 h1:7Xjx+VpznH+oBnejlPUj8oUpdxnVs4f8XU8WnHkI4W8=
+github.com/frankban/quicktest v1.14.6/go.mod h1:4ptaffx2x8+WTWXmUCuVU6aPUX1/Mz7zb5vbUoiM6w0=
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=
@@ -123,6 +133,12 @@ github.com/go-sourcemap/sourcemap v2.1.3+incompatible/go.mod h1:F8jJfvm2KbVjc5Nq
github.com/go-stack/stack v1.8.0/go.mod h1:v0f6uXyyMGvRgIKkXu+yp6POWl0qKG85gN/melR3HDY=
github.com/go-task/slim-sprig v2.20.0+incompatible h1:4Xh3bDzO29j4TWNOI+24ubc0vbVFMg2PMnXKxK54/CA=
github.com/go-task/slim-sprig v2.20.0+incompatible/go.mod h1:N/mhXZITr/EQAOErEHciKvO1bFei2Lld2Ym6h96pdy0=
+github.com/go-task/slim-sprig/v3 v3.0.0 h1:sUs3vkvUymDpBKi3qH1YSqBQk9+9D/8M2mN1vB6EwHI=
+github.com/go-task/slim-sprig/v3 v3.0.0/go.mod h1:W848ghGpv3Qj3dhTPRyJypKRiqCdHZiAzKg9hl15HA8=
+github.com/go-task/task/v3 v3.38.0 h1:O7kgA6BfwktXHPrheByQO46p3teKtRuq1EpGnFxNzbo=
+github.com/go-task/task/v3 v3.38.0/go.mod h1:UzLDHoXTKNAtWwFP3WVsfMhlSw3K8i9KNzEO9kCHix8=
+github.com/go-task/template v0.0.0-20240602015157-960e6f576656 h1:knZZ4zVdTBQnevBz0zSES++4Mr7wr+cHopLvHabIgkA=
+github.com/go-task/template v0.0.0-20240602015157-960e6f576656/go.mod h1:RgwRaZK+kni/hJJ7/AaOE2lPQFPbAdji/DyhC6pxo4k=
github.com/godbus/dbus/v5 v5.1.0 h1:4KLkAxT3aOY8Li4FRJe/KvhoNFFxo0m6fNuFUO8QJUk=
github.com/godbus/dbus/v5 v5.1.0/go.mod h1:xhWf0FNVPg57R7Z0UbKHbJfkEywrmjJnf7w5xrFpKfA=
github.com/gogo/protobuf v1.1.1/go.mod h1:r8qH/GZQm5c6nD/R0oafs1akxWv10x8SbQlK7atdtwQ=
@@ -150,8 +166,8 @@ github.com/google/go-cmp v0.3.0/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMyw
github.com/google/go-cmp v0.3.1/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU=
github.com/google/go-cmp v0.4.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
github.com/google/go-cmp v0.5.2/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
-github.com/google/go-cmp v0.5.9 h1:O2Tfq5qg4qc4AmwVlvv0oLiVAGB7enBSJ2x2DqQFi38=
-github.com/google/go-cmp v0.5.9/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY=
+github.com/google/go-cmp v0.6.0 h1:ofyhxvXcZhMsU5ulbFiLKl/XBFqE1GSq7atu8tAmTRI=
+github.com/google/go-cmp v0.6.0/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY=
github.com/google/go-querystring v1.0.0/go.mod h1:odCYkC5MyYFN7vkCjXpyrEuKhc/BUO6wN/zVPAxq5ck=
github.com/google/go-querystring v1.1.0 h1:AnCroh3fv4ZBgVIf1Iwtovgjaw/GiKJo8M8yD/fhyJ8=
github.com/google/go-querystring v1.1.0/go.mod h1:Kcdr2DB4koayq7X8pmAG4sNG59So17icRSOU623lUBU=
@@ -193,6 +209,8 @@ github.com/hashicorp/logutils v1.0.0/go.mod h1:QIAnNjmIWmVIIkWDTG1z5v++HQmx9WQRO
github.com/hashicorp/mdns v1.0.0/go.mod h1:tL+uN++7HEJ6SQLQ2/p+z2pH24WQKWjBPkE0mNTz8vQ=
github.com/hashicorp/memberlist v0.1.3/go.mod h1:ajVTdAv/9Im8oMAAj5G31PhhMCZJV2pPBoIllUwCN7I=
github.com/hashicorp/serf v0.8.2/go.mod h1:6hOLApaqBFA1NXqRQAsxw9QxuDEvNxSQRwA/JwenrHc=
+github.com/hexops/gotextdiff v1.0.3 h1:gitA9+qJrrTCsiCl7+kh75nPqQt1cx4ZkudSTLoUqJM=
+github.com/hexops/gotextdiff v1.0.3/go.mod h1:pSWU5MAI3yDq+fZBTazCSJysOMbxWL1BSow5/V2vxeg=
github.com/hokaccha/go-prettyjson v0.0.0-20210113012101-fb4e108d2519/go.mod h1:pFlLw2CfqZiIBOx6BuCeRLCrfxBJipTY0nIOF/VbGcI=
github.com/hokaccha/go-prettyjson v0.0.0-20211117102719-0474bc63780f h1:7LYC+Yfkj3CTRcShK0KOL/w6iTiKyqqBA9a41Wnggw8=
github.com/hokaccha/go-prettyjson v0.0.0-20211117102719-0474bc63780f/go.mod h1:pFlLw2CfqZiIBOx6BuCeRLCrfxBJipTY0nIOF/VbGcI=
@@ -252,8 +270,8 @@ github.com/mattn/go-isatty v0.0.3/go.mod h1:M+lRXTBqGeGNdLjl/ufCoiOlB5xdOkqRJdNx
github.com/mattn/go-isatty v0.0.4/go.mod h1:M+lRXTBqGeGNdLjl/ufCoiOlB5xdOkqRJdNxMWT7Zi4=
github.com/mattn/go-isatty v0.0.12/go.mod h1:cbi8OIDigv2wuxKPP5vlRcQ1OAZbq2CE4Kysco4FUpU=
github.com/mattn/go-isatty v0.0.16/go.mod h1:kYGgaQfpe5nmfYZH+SKPsOc2e4SrIfOl2e/yFXSvRLM=
-github.com/mattn/go-isatty v0.0.19 h1:JITubQf0MOLdlGRuRq+jtsDlekdYPia9ZFsB8h/APPA=
-github.com/mattn/go-isatty v0.0.19/go.mod h1:W+V8PltTTMOvKvAeJH7IuucS94S2C6jfK/D7dTCTo3Y=
+github.com/mattn/go-isatty v0.0.20 h1:xfD0iDuEKnDkl03q4limB+vH+GxLEtL/jb4xVJSWWEY=
+github.com/mattn/go-isatty v0.0.20/go.mod h1:W+V8PltTTMOvKvAeJH7IuucS94S2C6jfK/D7dTCTo3Y=
github.com/mattn/go-runewidth v0.0.15 h1:UNAjwbU9l54TA3KzvqLGxwWjHmMgBUVhBiTjelZgg3U=
github.com/mattn/go-runewidth v0.0.15/go.mod h1:Jdepj2loyihRzMpdS35Xk/zdY8IAYHsh153qUoGf23w=
github.com/mattn/go-zglob v0.0.4 h1:LQi2iOm0/fGgu80AioIJ/1j9w9Oh+9DZ39J4VAGzHQM=
@@ -366,8 +384,8 @@ github.com/rivo/uniseg v0.4.4/go.mod h1:FN3SvrM+Zdj16jyLfmOkMNblXMcoc8DfTHruCPUc
github.com/rogpeppe/fastuuid v0.0.0-20150106093220-6724a57986af/go.mod h1:XWv6SoW27p1b0cqNHllgS5HIMJraePCO15w5zCzIWYg=
github.com/rogpeppe/go-internal v1.3.0/go.mod h1:M8bDsm7K2OlrFYOpmOWEs/qY81heoFRclV5y23lUDJ4=
github.com/rogpeppe/go-internal v1.6.1/go.mod h1:xXDCJY+GAPziupqXw64V24skbSoqbTEfhy4qGm1nDQc=
-github.com/rogpeppe/go-internal v1.11.0 h1:cWPaGQEPrBb5/AsnsZesgZZ9yb1OQ+GOISoDNXVBh4M=
-github.com/rogpeppe/go-internal v1.11.0/go.mod h1:ddIwULY96R17DhadqLgMfk9H9tvdUzkipdSkR5nkCZA=
+github.com/rogpeppe/go-internal v1.12.0 h1:exVL4IDcn6na9z1rAb56Vxr+CgyK3nn3O+epU5NdKM8=
+github.com/rogpeppe/go-internal v1.12.0/go.mod h1:E+RYuTGaKKdloAfM02xzb0FW3Paa99yedzYV+kq4uf4=
github.com/russross/blackfriday/v2 v2.0.1/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM=
github.com/russross/blackfriday/v2 v2.1.0/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM=
github.com/ryanuber/columnize v0.0.0-20160712163229-9b3edd62028f/go.mod h1:sm1tb6uqfes/u+d4ooFouqFdy9/2g9QGwK3SQygK0Ts=
@@ -402,14 +420,14 @@ github.com/spf13/viper v1.7.1/go.mod h1:8WkrPz2fc9jxqZNCJI/76HCieCp4Q8HaLFoCha5q
github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME=
github.com/stretchr/objx v0.1.1/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME=
github.com/stretchr/objx v0.3.0/go.mod h1:qt09Ya8vawLte6SNmTgCsAVtYtaKzEcn8ATUoHMkEqE=
-github.com/stretchr/objx v0.5.0 h1:1zr/of2m5FGMsad5YfcqgdqdWrIhu+EBEJRhR1U7z/c=
-github.com/stretchr/objx v0.5.0/go.mod h1:Yh+to48EsGEfYuaHDzXPcE3xhTkx73EhmCGUpEOglKo=
+github.com/stretchr/objx v0.5.2 h1:xuMeJ0Sdp5ZMRXx/aWO6RZxdr3beISkG5/G/aIRr3pY=
+github.com/stretchr/objx v0.5.2/go.mod h1:FRsXN1f5AsAjCGJKqEizvkpNtU+EGNCLh3NxZ/8L+MA=
github.com/stretchr/testify v1.2.2/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs=
github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI=
github.com/stretchr/testify v1.4.0/go.mod h1:j7eGeouHqKxXV5pUuKE4zz7dFj8WfuZ+81PSLYec5m4=
github.com/stretchr/testify v1.6.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg=
-github.com/stretchr/testify v1.8.4 h1:CcVxjf3Q8PM0mHUKJCdn+eZZtm5yQwehR5yeSVQQcUk=
-github.com/stretchr/testify v1.8.4/go.mod h1:sz/lmYIOXD/1dqDmKjjqLyZ2RngseejIcXlSw2iwfAo=
+github.com/stretchr/testify v1.9.0 h1:HtqpIVDClZ4nwg75+f6Lvsy/wHu+3BoSGCbBAcpTsTg=
+github.com/stretchr/testify v1.9.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8C91i36aY=
github.com/subosito/gotenv v1.2.0/go.mod h1:N0PQaV/YGNqwC0u51sEeR/aUtSLEXKX9iv69rRypqCw=
github.com/tidwall/gjson v1.12.1/go.mod h1:/wbyibRr2FHMks5tjHJ5F8dMZh3AcwJEMf5vlfC0lxk=
github.com/tidwall/gjson v1.14.0 h1:6aeJ0bzojgWLa82gDQHcx3S0Lr/O51I9bJ5nv6JFx5w=
@@ -450,8 +468,8 @@ golang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5y
golang.org/x/crypto v0.0.0-20220622213112-05595931fe9d/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4=
golang.org/x/crypto v0.3.1-0.20221117191849-2c476679df9a/go.mod h1:hebNnKkNXi2UzZN1eVRvBB7co0a+JxK6XbPiWVs/3J4=
golang.org/x/crypto v0.7.0/go.mod h1:pYwdfH91IfpZVANVyUOhSIPZaFoJGxTFbZhFTx+dXZU=
-golang.org/x/crypto v0.13.0 h1:mvySKfSWJ+UKUii46M40LOvyWfN0s2U+46/jDd0e6Ck=
-golang.org/x/crypto v0.13.0/go.mod h1:y6Z2r+Rw4iayiXXAIxJIDAJ1zMW4yaTpebo8fPOliYc=
+golang.org/x/crypto v0.18.0 h1:PGVlW0xEltQnzFZ55hkuX5+KLyrMYhHld1YHO4AKcdc=
+golang.org/x/crypto v0.18.0/go.mod h1:R0j02AL6hcrfOiy9T4ZYp/rcWeMxM3L6QYxlOuEG1mg=
golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA=
golang.org/x/exp v0.0.0-20190306152737-a1d7652674e8/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA=
golang.org/x/exp v0.0.0-20190510132918-efd6b22b2522/go.mod h1:ZjyILWgesfNpC6sMxTJOJm9Kp84zZh5NQWvqDGG3Qr8=
@@ -475,8 +493,8 @@ golang.org/x/mod v0.1.0/go.mod h1:0QHyrYULN0/3qlju5TqG8bIK38QM8yzMo5ekMj3DlcY=
golang.org/x/mod v0.3.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA=
golang.org/x/mod v0.6.0-dev.0.20220419223038-86c51ed26bb4/go.mod h1:jJ57K6gSWd91VN4djpZkiMVwK6gcyfeH4XE8wZrZaV4=
golang.org/x/mod v0.8.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs=
-golang.org/x/mod v0.12.0 h1:rmsUpXtvNzj340zd98LZ4KntptpfRHwpFOHG188oHXc=
-golang.org/x/mod v0.12.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs=
+golang.org/x/mod v0.14.0 h1:dGoOF9QVLYng8IHTm7BAyWqCqSheQ5pYWGhzW00YJr0=
+golang.org/x/mod v0.14.0/go.mod h1:hTbmBsO62+eylJbnUtE2MGJUyE7QWk4xUqPFrRgJ+7c=
golang.org/x/net v0.0.0-20180724234803-3673e40ba225/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
golang.org/x/net v0.0.0-20180826012351-8a410e7b638d/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
golang.org/x/net v0.0.0-20180906233101-161cd47e91fd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
@@ -502,8 +520,8 @@ golang.org/x/net v0.2.0/go.mod h1:KqCZLdyyvdV855qA2rE3GC2aiw5xGR5TEjj8smXukLY=
golang.org/x/net v0.6.0/go.mod h1:2Tu9+aMcznHK/AK1HMvgo6xiTLG5rD5rZLDS+rp2Bjs=
golang.org/x/net v0.8.0/go.mod h1:QVkue5JL9kW//ek3r6jTKnTFis1tRmNAW2P1shuFdJc=
golang.org/x/net v0.10.0/go.mod h1:0qNGK6F8kojg2nk9dLZ2mShWaEBan6FAoqfSigmmuDg=
-golang.org/x/net v0.15.0 h1:ugBLEUaxABaB5AJqW9enI0ACdci2RUd4eP51NTBvuJ8=
-golang.org/x/net v0.15.0/go.mod h1:idbUs1IY1+zTqbi8yxTbhexhEEk5ur9LInksu6HrEpk=
+golang.org/x/net v0.20.0 h1:aCL9BSgETF1k+blQaYUBx9hJ9LOGP3gAVemcZlf1Kpo=
+golang.org/x/net v0.20.0/go.mod h1:z8BVo6PvndSri0LbOE3hAn0apkU+1YvI6E70E9jsnvY=
golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U=
golang.org/x/oauth2 v0.0.0-20190226205417-e64efc72b421/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw=
golang.org/x/oauth2 v0.0.0-20190604053449-0f29369cfe45/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw=
@@ -515,8 +533,8 @@ golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJ
golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
golang.org/x/sync v0.0.0-20220722155255-886fb9371eb4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
golang.org/x/sync v0.1.0/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
-golang.org/x/sync v0.3.0 h1:ftCYgMx6zT/asHUrPw8BLLscYtGznsLAnjq5RH9P66E=
-golang.org/x/sync v0.3.0/go.mod h1:FU7BRWz2tNW+3quACPkgCx/L+uEAv1htQ0V83Z9Rj+Y=
+golang.org/x/sync v0.7.0 h1:YsImfSBoP9QPYL0xyKJPq0gcaJdG3rInoqxTWbfQu9M=
+golang.org/x/sync v0.7.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk=
golang.org/x/sys v0.0.0-20180823144017-11551d06cbcc/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
golang.org/x/sys v0.0.0-20180830151530-49385e6e1522/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
golang.org/x/sys v0.0.0-20180905080454-ebe1bf3edb33/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
@@ -558,16 +576,16 @@ golang.org/x/sys v0.3.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.5.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.8.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
-golang.org/x/sys v0.12.0 h1:CM0HF96J0hcLAwsHPJZjfdNzs0gftsLfgKt57wWHJ0o=
-golang.org/x/sys v0.12.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
+golang.org/x/sys v0.21.0 h1:rF+pYz3DAGSQAxAu1CbC7catZg4ebC4UIeIhKxBZvws=
+golang.org/x/sys v0.21.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA=
golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo=
golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8=
golang.org/x/term v0.2.0/go.mod h1:TVmDHMZPmdnySmBfhjOoOdhjzdE1h4u1VwSiw2l1Nuc=
golang.org/x/term v0.5.0/go.mod h1:jMB1sMXY+tzblOD4FWmEbocvup2/aLOaQEp7JmGp78k=
golang.org/x/term v0.6.0/go.mod h1:m6U89DPEgQRMq3DNkDClhWw02AUbt2daBVO4cn4Hv9U=
golang.org/x/term v0.8.0/go.mod h1:xPskH00ivmX89bAKVGSKKtLOWNx2+17Eiy94tnKShWo=
-golang.org/x/term v0.12.0 h1:/ZfYdc3zq+q02Rv9vGqTeSItdzZTSNDmfTi0mBAuidU=
-golang.org/x/term v0.12.0/go.mod h1:owVbMEjm3cBLCHdkQu9b1opXd4ETQWc3BhuQGKgXgvU=
+golang.org/x/term v0.21.0 h1:WVXCp+/EBEHOj53Rvu+7KiT/iElMrO8ACK16SMZ3jaA=
+golang.org/x/term v0.21.0/go.mod h1:ooXLefLobQVslOqselCNF4SxFAaoS6KujMbsGzSDmX0=
golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
golang.org/x/text v0.3.1-0.20180807135948-17ff2d5776d2/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
golang.org/x/text v0.3.2/go.mod h1:bEr9sfX3Q8Zfm5fL9x+3itogRgK3+ptLWKqgva+5dAk=
@@ -580,8 +598,8 @@ golang.org/x/text v0.5.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8=
golang.org/x/text v0.7.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8=
golang.org/x/text v0.8.0/go.mod h1:e1OnstbJyHTd6l/uOt8jFFHp6TRDWZR/bV3emEE/zU8=
golang.org/x/text v0.9.0/go.mod h1:e1OnstbJyHTd6l/uOt8jFFHp6TRDWZR/bV3emEE/zU8=
-golang.org/x/text v0.13.0 h1:ablQoSUd0tRdKxZewP80B+BaqeKJuVhuRxj/dkrun3k=
-golang.org/x/text v0.13.0/go.mod h1:TvPlkZtksWOMsz7fbANvkp4WM8x/WCo/om8BMLbz+aE=
+golang.org/x/text v0.14.0 h1:ScX5w1eTa3QqT8oi6+ziP7dTV1S2+ALU0bI+0zXKWiQ=
+golang.org/x/text v0.14.0/go.mod h1:18ZOQIKpY8NJVqYksKHtTdi31H5itFRjB5/qKTNYzSU=
golang.org/x/time v0.0.0-20181108054448-85acf8d2951c/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ=
golang.org/x/time v0.0.0-20190308202827-9d24e82272b4/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ=
golang.org/x/tools v0.0.0-20180221164845-07fd8470d635/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=
@@ -605,8 +623,8 @@ golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtn
golang.org/x/tools v0.0.0-20201224043029-2b0845dc783e/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA=
golang.org/x/tools v0.1.12/go.mod h1:hNGJHUnrk76NpqgfD5Aqm5Crs+Hm0VOH/i9J2+nxYbc=
golang.org/x/tools v0.6.0/go.mod h1:Xwgl3UAJ/d3gWutnCtw505GrjyAbvKui8lOU390QaIU=
-golang.org/x/tools v0.13.0 h1:Iey4qkscZuv0VvIt8E0neZjtPVQFSc870HQ448QgEmQ=
-golang.org/x/tools v0.13.0/go.mod h1:HvlwmtVNQAhOuCjW7xxvovg8wbNq7LwfXh/k7wXUl58=
+golang.org/x/tools v0.17.0 h1:FvmRgNOcs3kOa+T20R1uhfP9F6HgG2mfxDv1vrx1Htc=
+golang.org/x/tools v0.17.0/go.mod h1:xsh6VxdV005rRVaS6SSAf9oiAqljS7UZUacMZ8Bnsps=
golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
@@ -668,4 +686,6 @@ honnef.co/go/tools v0.0.0-20190102054323-c2f93a96b099/go.mod h1:rf3lG4BRIbNafJWh
honnef.co/go/tools v0.0.0-20190106161140-3f1c8253044a/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4=
honnef.co/go/tools v0.0.0-20190418001031-e561f6794a2a/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4=
honnef.co/go/tools v0.0.1-2019.2.3/go.mod h1:a3bituU0lyd329TUQxRnasdCoJDkEUEAqEt0JzvZhAg=
+mvdan.cc/sh/v3 v3.8.0 h1:ZxuJipLZwr/HLbASonmXtcvvC9HXY9d2lXZHnKGjFc8=
+mvdan.cc/sh/v3 v3.8.0/go.mod h1:w04623xkgBVo7/IUK89E0g8hBykgEpN0vgOj3RJr6MY=
rsc.io/binaryregexp v0.2.0/go.mod h1:qTv7/COck+e2FymRvadv62gMdZztPaShugOCi3I+8D8=
diff --git a/patches/.gitignore b/patches/.gitignore
new file mode 100644
index 0000000..bfd6871
--- /dev/null
+++ b/patches/.gitignore
@@ -0,0 +1,4 @@
+task
+gosh
+wsk
+wskdeploy
diff --git a/patches/README.md b/patches/README.md
index a792728..ede0849 100644
--- a/patches/README.md
+++ b/patches/README.md
@@ -1,17 +1,39 @@
+# Patches:
-This is the procedure we followed to build the patched versions of:
+- changes to mvdan/sh:
+ - rename to sciabarracom/sh
+ - use coreutils as builtins
+ - use ops tools as builtin
+- changes to taskfile:
+ - rename to sciabarracom/task
+ - default taskfile is opsfile.yml
+ - use the patched mvdan shell
+- changes to openwhisk-wskdeploy:
+ - rename to sciabarracom/openwhisk-wskdeploy
+ - use a different path for retrieving the configuration (api/info instead of the root of the APIHOST)
+ - wire a different default runtimesjson
+- changes to openwhisk-wsk
+ - rename to sciabarracom/openwhisk-wskdeploy
+ - generate and add to the sources the translation resources to build as a library
+ - use the patched openwhisk-wskdeploy
+
+# Procedure
- github.com/go-task/task -> github.com/sciabarracom/task
- mvdan.cc/sh -> github.com/sciabarracom/sh
+This is the procedure we followed to build the patched versions of:
1. fork mvdan.cc/sh in github.com/sciabarracom/sh
fork github.com/go-task/task in github.com/sciabarracom/task
+ fork github.com/apache/openwhisk-cli in github.com/sciabarracom/openwhisk-cli
+ fork github.com/apache/openwhisk-wskdeploy in github.com/sciabarracom/openwhisk-wskdeploy
-2. checkout v3.8.0 for sh and v3.38.0 for task as openserverless branch and set openserverless as the default branch
-
-4. git submodule update --init, then add orig-auth to both with an authentication token so you can push it
+3. git submodule update --init,
+ then add remote orig-auth ian authentication token so you can push it back
+ then add remote upstream to the original repos to fetch tags
+ then git fetch --all
-5. bash patch-sh.sh
- bash patch-task.sk
+3. execute the patch scripts in order
-to patch and push
+ bash patch-sh.sh
+ bash patch-task.sh
+ bash patch-wskdeploy.sh
+ bash patch-wsk.sh
diff --git a/patches/patch-task.sh b/patches/patch-task.sh
index efee39a..de597da 100644
--- a/patches/patch-task.sh
+++ b/patches/patch-task.sh
@@ -5,7 +5,7 @@ HERE=$PWD
STAG="v3.38.0"
DTAG="$STAG-openserverless"
cd ../tools/task
-git checkout "$TAG" -B openserverless
+git checkout "$STAG" -B openserverless
mkdir -p cmd/taskmain
cat cmd/task/task.go \
| sed -e 's/package main/package taskmain/' \
diff --git a/patches/patch-task.sh b/patches/patch-wsk.sh
similarity index 100%
copy from patches/patch-task.sh
copy to patches/patch-wsk.sh
diff --git a/patches/patch-task.sh b/patches/patch-wskdeploy.sh
similarity index 51%
copy from patches/patch-task.sh
copy to patches/patch-wskdeploy.sh
index efee39a..92f313f 100644
--- a/patches/patch-task.sh
+++ b/patches/patch-wskdeploy.sh
@@ -2,24 +2,16 @@
cd "$(dirname $0)"
# any suggestion how to avoid this rename and use just replaces in go.mod is welcome
HERE=$PWD
-STAG="v3.38.0"
+STAG="1.2.0"
DTAG="$STAG-openserverless"
-cd ../tools/task
-git checkout "$TAG" -B openserverless
-mkdir -p cmd/taskmain
-cat cmd/task/task.go \
-| sed -e 's/package main/package taskmain/' \
-| sed -e 's/func main() {/func Task(_args []string) { os.Args = _args/' \
-| tee cmd/taskmain/task.go
-cp $HERE/task.go cmd/taskmain/task.go
-git add cmd/taskmain/task.go
+cd ../tools/wskdeploy
+git checkout "$STAG" -B openserverless
+
find . \( -name \*.go -o -name go.mod \) | while read file
do echo $file
- sed -i "s!go-task/task!sciabarracom/task!" $file
- sed -i 's!mvdan.sh/cc!sciabarracom/sh!' $file
- sed -i 's!"Taskfile.!"opsfile.!' $file
- sed -i 's!task: !ops: !' $file
+ sed -i "s!apache/openwhisk-wskdeploy!sciabarracom/openwhisk-wskdeploy!" $file
done
+
go clean -modcache -cache -testcache -fuzzcache
go mod tidy
git commit -m "patching sh for ops" -a
diff --git a/patches/runtimes.go b/patches/runtimes.go
new file mode 100644
index 0000000..f6754d7
--- /dev/null
+++ b/patches/runtimes.go
@@ -0,0 +1,291 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package runtimes
+
+import (
+ "crypto/tls"
+ "encoding/json"
+ "fmt"
+ "io/ioutil"
+ "net/http"
+ "net/url"
+ "os"
+ "strings"
+ "time"
+
+ "github.com/apache/openwhisk-client-go/whisk"
+ "github.com/nuvolaris/openwhisk-wskdeploy/utils"
+ "github.com/nuvolaris/openwhisk-wskdeploy/wskderrors"
+ "github.com/nuvolaris/openwhisk-wskdeploy/wski18n"
+ "github.com/nuvolaris/openwhisk-wskdeploy/wskprint"
+)
+
+const (
+ NODEJS_FILE_EXTENSION = "js"
+ SWIFT_FILE_EXTENSION = "swift"
+ PYTHON_FILE_EXTENSION = "py"
+ JAVA_FILE_EXTENSION = "java"
+ JAR_FILE_EXTENSION = "jar"
+ CSHARP_FILE_EXTENSION = "cs"
+ PHP_FILE_EXTENSION = "php"
+ ZIP_FILE_EXTENSION = "zip"
+ RUBY_FILE_EXTENSION = "rb"
+ GO_FILE_EXTENSION = "go"
+ RUST_FILE_EXTENSION = "rs"
+ NODEJS_RUNTIME = "nodejs"
+ SWIFT_RUNTIME = SWIFT_FILE_EXTENSION
+ PYTHON_RUNTIME = "python"
+ JAVA_RUNTIME = JAVA_FILE_EXTENSION
+ DOTNET_RUNTIME = ZIP_FILE_EXTENSION
+ PHP_RUNTIME = PHP_FILE_EXTENSION
+ RUBY_RUNTIME = "ruby"
+ GO_RUNTIME = GO_FILE_EXTENSION
+ RUST_RUNTIME = "rust"
+ HTTP_CONTENT_TYPE_KEY = "Content-Type"
+ HTTP_CONTENT_TYPE_VALUE = "application/json; charset=UTF-8"
+ RUNTIME_NOT_SPECIFIED = "NOT SPECIFIED"
+ BLACKBOX = "blackbox"
+ HTTPS = "https://"
+)
+
+// Structs used to denote the OpenWhisk Runtime information
+type Limit struct {
+ Apm uint `json:"actions_per_minute"`
+ Tpm uint `json:"triggers_per_minute"`
+ ConAction uint `json:"concurrent_actions"`
+}
+
+type Runtime struct {
+ Deprecated bool `json:"deprecated"`
+ Default bool `json:"default"`
+ Kind string `json:"kind"`
+}
+
+type SupportInfo struct {
+ Github string `json:"github"`
+ Slack string `json:"slack"`
+}
+
+type OpenWhiskInfo struct {
+ Support SupportInfo `json:"support"`
+ Desc string `json:"description"`
+ ApiPath []string `json:"api_paths"`
+ Runtimes map[string][]Runtime `json:"runtimes"`
+ Limits Limit `json:"limits"`
+}
+
+var FileExtensionRuntimeKindMap map[string]string
+var SupportedRunTimes map[string][]string
+var DefaultRunTimes map[string]string
+var FileRuntimeExtensionsMap map[string]string
+
+func GetRuntimesByUrl(opURL string, pop *OpenWhiskInfo) error {
+
+ // configure transport
+ tlsConfig := &tls.Config{
+ InsecureSkipVerify: true,
+ }
+ var netTransport = &http.Transport{
+ TLSClientConfig: tlsConfig,
+ }
+
+ var netClient = &http.Client{
+ Timeout: time.Second * utils.DEFAULT_HTTP_TIMEOUT,
+ Transport: netTransport,
+ }
+
+ req, _ := http.NewRequest("GET", opURL, nil)
+ req.Header.Set(HTTP_CONTENT_TYPE_KEY, HTTP_CONTENT_TYPE_VALUE)
+ whisk.Debug(whisk.DbgInfo, "trying "+req.URL.String())
+ res, err := netClient.Do(req)
+ if err != nil {
+ // TODO() create an error
+ errString := wski18n.T(wski18n.ID_ERR_RUNTIMES_GET_X_err_X,
+ map[string]interface{}{"err": err.Error()})
+ whisk.Debug(whisk.DbgWarn, errString)
+ if utils.Flags.Strict {
+ errMessage := wski18n.T(wski18n.ID_ERR_RUNTIME_PARSER_ERROR,
+ map[string]interface{}{wski18n.KEY_ERR: err.Error()})
+ err = wskderrors.NewRuntimeParserError(errMessage)
+ }
+ return err
+ } else {
+ if res != nil {
+ defer res.Body.Close()
+ }
+ b, _ := ioutil.ReadAll(res.Body)
+ if b != nil && len(b) > 0 {
+ stdout := wski18n.T(wski18n.ID_MSG_UNMARSHAL_NETWORK_X_url_X,
+ map[string]interface{}{"url": opURL})
+ wskprint.PrintOpenWhiskVerbose(utils.Flags.Verbose, stdout)
+ return json.Unmarshal(b, pop)
+ }
+ return fmt.Errorf("cannot get runtimes")
+ }
+}
+
+// We could get the openwhisk info from bluemix through running the command
+// `curl -k https://openwhisk.ng.bluemix.net`
+// hard coding it here in case of network unavailable or failure.
+func ParseOpenWhisk(apiHost string) (op OpenWhiskInfo, err error) {
+ opURL := apiHost
+ _, err = url.ParseRequestURI(opURL)
+ if err != nil {
+ opURL = HTTPS + opURL
+ }
+
+ // trying to download info
+ err = GetRuntimesByUrl(opURL+"/api/info", &op)
+ if err != nil {
+ err = GetRuntimesByUrl(opURL, &op)
+ }
+ if err != nil {
+ stdout := wski18n.T(wski18n.ID_MSG_UNMARSHAL_LOCAL)
+ wskprint.PrintOpenWhiskVerbose(utils.Flags.Verbose, stdout)
+ runtimes := []byte(os.Getenv("WSK_RUNTIMES_JSON"))
+ err = json.Unmarshal(runtimes, &op)
+ if err != nil {
+ fmt.Printf("cannot parse this json: ===\n%s\n===\n", runtimes)
+ return
+ }
+ }
+ return
+}
+
+func ConvertToMap(op OpenWhiskInfo) (rt map[string][]string) {
+ rt = make(map[string][]string)
+ for k, v := range op.Runtimes {
+ rt[k] = make([]string, 0, len(v))
+ for i := range v {
+ if !v[i].Deprecated {
+ rt[k] = append(rt[k], v[i].Kind)
+ }
+ if v[i].Default {
+ rt[k] = append(rt[k], strings.Split(v[i].Kind, ":")[0]+":default")
+ }
+ }
+ }
+ return
+}
+
+func DefaultRuntimes(op OpenWhiskInfo) (rt map[string]string) {
+ rt = make(map[string]string)
+ for k, v := range op.Runtimes {
+ for i := range v {
+ if !v[i].Deprecated {
+ if v[i].Default {
+ rt[k] = v[i].Kind
+ }
+ }
+ }
+ }
+ return
+}
+
+func FileExtensionRuntimes(op OpenWhiskInfo) (ext map[string]string) {
+ ext = make(map[string]string)
+ for k := range op.Runtimes {
+ if strings.Contains(k, NODEJS_RUNTIME) {
+ ext[NODEJS_FILE_EXTENSION] = k
+ } else if strings.Contains(k, PYTHON_RUNTIME) {
+ ext[PYTHON_FILE_EXTENSION] = k
+ } else if strings.Contains(k, SWIFT_RUNTIME) {
+ ext[SWIFT_FILE_EXTENSION] = k
+ } else if strings.Contains(k, PHP_RUNTIME) {
+ ext[PHP_FILE_EXTENSION] = k
+ } else if strings.Contains(k, JAVA_RUNTIME) {
+ ext[JAVA_FILE_EXTENSION] = k
+ ext[JAR_FILE_EXTENSION] = k
+ } else if strings.Contains(k, RUBY_RUNTIME) {
+ ext[RUBY_FILE_EXTENSION] = k
+ } else if strings.Contains(k, RUST_RUNTIME) {
+ ext[RUST_FILE_EXTENSION] = k
+ } else if strings.Contains(k, GO_RUNTIME) {
+ ext[GO_FILE_EXTENSION] = k
+ } else if strings.Contains(k, DOTNET_RUNTIME) {
+ ext[CSHARP_FILE_EXTENSION] = k
+ ext[ZIP_FILE_EXTENSION] = k
+ } else if strings.Contains(k, RUST_RUNTIME) {
+ ext[RUST_FILE_EXTENSION] = k
+ }
+ }
+ return
+}
+
+func FileRuntimeExtensions(op OpenWhiskInfo) (rte map[string]string) {
+ rte = make(map[string]string)
+
+ for k, v := range op.Runtimes {
+ for i := range v {
+ if !v[i].Deprecated {
+ if strings.Contains(k, NODEJS_RUNTIME) {
+ rte[v[i].Kind] = NODEJS_FILE_EXTENSION
+ } else if strings.Contains(k, PYTHON_RUNTIME) {
+ rte[v[i].Kind] = PYTHON_FILE_EXTENSION
+ } else if strings.Contains(k, SWIFT_RUNTIME) {
+ rte[v[i].Kind] = SWIFT_FILE_EXTENSION
+ } else if strings.Contains(k, PHP_RUNTIME) {
+ rte[v[i].Kind] = PHP_FILE_EXTENSION
+ } else if strings.Contains(k, JAVA_RUNTIME) {
+ rte[v[i].Kind] = JAVA_FILE_EXTENSION
+ } else if strings.Contains(k, RUBY_RUNTIME) {
+ rte[v[i].Kind] = RUBY_FILE_EXTENSION
+ } else if strings.Contains(k, RUST_RUNTIME) {
+ rte[v[i].Kind] = RUST_FILE_EXTENSION
+ } else if strings.Contains(k, GO_RUNTIME) {
+ rte[v[i].Kind] = GO_FILE_EXTENSION
+ } else if strings.Contains(k, DOTNET_RUNTIME) {
+ rte[v[i].Kind] = CSHARP_FILE_EXTENSION
+ } else if strings.Contains(k, RUST_RUNTIME) {
+ rte[v[i].Kind] = RUST_FILE_EXTENSION
+ }
+ }
+ }
+ }
+ return
+}
+
+func CheckRuntimeConsistencyWithFileExtension(ext string, runtime string) bool {
+ rt := FileExtensionRuntimeKindMap[ext]
+ for _, v := range SupportedRunTimes[rt] {
+ if runtime == v {
+ return true
+ }
+ }
+ return false
+}
+
+func CheckExistRuntime(rtname string, runtimes map[string][]string) bool {
+ for _, v := range runtimes {
+ for i := range v {
+ if rtname == v[i] {
+ return true
+ }
+ }
+ }
+ return false
+}
+
+func ListOfSupportedRuntimes(runtimes map[string][]string) (rt []string) {
+ for _, v := range runtimes {
+ for _, t := range v {
+ rt = append(rt, t)
+ }
+ }
+ return
+}
diff --git a/patches/runtimes_extra.go b/patches/runtimes_extra.go
new file mode 100644
index 0000000..55e6d9b
--- /dev/null
+++ b/patches/runtimes_extra.go
@@ -0,0 +1,108 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package runtimes
+
+import (
+ "crypto/tls"
+ "encoding/json"
+ "fmt"
+ "io/ioutil"
+ "net/http"
+ "net/url"
+ "os"
+ "time"
+
+ "github.com/apache/openwhisk-client-go/whisk"
+ "github.com/apache/openwhisk-wskdeploy/utils"
+ "github.com/apache/openwhisk-wskdeploy/wskderrors"
+ "github.com/apache/openwhisk-wskdeploy/wski18n"
+ "github.com/apache/openwhisk-wskdeploy/wskprint"
+)
+
+func GetRuntimesByUrl(opURL string, pop *OpenWhiskInfo) error {
+
+ // configure transport
+ tlsConfig := &tls.Config{
+ InsecureSkipVerify: true,
+ }
+ var netTransport = &http.Transport{
+ TLSClientConfig: tlsConfig,
+ }
+
+ var netClient = &http.Client{
+ Timeout: time.Second * utils.DEFAULT_HTTP_TIMEOUT,
+ Transport: netTransport,
+ }
+
+ req, _ := http.NewRequest("GET", opURL, nil)
+ req.Header.Set(HTTP_CONTENT_TYPE_KEY, HTTP_CONTENT_TYPE_VALUE)
+ whisk.Debug(whisk.DbgInfo, "trying "+req.URL.String())
+ res, err := netClient.Do(req)
+ if err != nil {
+ // TODO() create an error
+ errString := wski18n.T(wski18n.ID_ERR_RUNTIMES_GET_X_err_X,
+ map[string]interface{}{"err": err.Error()})
+ whisk.Debug(whisk.DbgWarn, errString)
+ if utils.Flags.Strict {
+ errMessage := wski18n.T(wski18n.ID_ERR_RUNTIME_PARSER_ERROR,
+ map[string]interface{}{wski18n.KEY_ERR: err.Error()})
+ err = wskderrors.NewRuntimeParserError(errMessage)
+ }
+ return err
+ } else {
+ if res != nil {
+ defer res.Body.Close()
+ }
+ b, _ := ioutil.ReadAll(res.Body)
+ if b != nil && len(b) > 0 {
+ stdout := wski18n.T(wski18n.ID_MSG_UNMARSHAL_NETWORK_X_url_X,
+ map[string]interface{}{"url": opURL})
+ wskprint.PrintOpenWhiskVerbose(utils.Flags.Verbose, stdout)
+ return json.Unmarshal(b, pop)
+ }
+ return fmt.Errorf("cannot get runtimes")
+ }
+}
+
+// We could get the openwhisk info from bluemix through running the command
+// `curl -k https://openwhisk.ng.bluemix.net`
+// hard coding it here in case of network unavailable or failure.
+func ParseOpenWhisk(apiHost string) (op OpenWhiskInfo, err error) {
+ opURL := apiHost
+ _, err = url.ParseRequestURI(opURL)
+ if err != nil {
+ opURL = HTTPS + opURL
+ }
+
+ // trying to download info
+ err = GetRuntimesByUrl(opURL+"/api/info", &op)
+ if err != nil {
+ err = GetRuntimesByUrl(opURL, &op)
+ }
+ if err != nil {
+ stdout := wski18n.T(wski18n.ID_MSG_UNMARSHAL_LOCAL)
+ wskprint.PrintOpenWhiskVerbose(utils.Flags.Verbose, stdout)
+ runtimes := []byte(os.Getenv("WSK_RUNTIMES_JSON"))
+ err = json.Unmarshal(runtimes, &op)
+ if err != nil {
+ fmt.Printf("cannot parse this json: ===\n%s\n===\n", runtimes)
+ return
+ }
+ }
+ return
+}
diff --git a/tools/global.go b/tools/global.go
new file mode 100644
index 0000000..7194178
--- /dev/null
+++ b/tools/global.go
@@ -0,0 +1,12 @@
+package tools
+
+var Tools = []string{
+ "awk", "die", "jq", "js",
+ "envsubst", "wsk", "mkdir",
+ "filetype", "random", "datefmt",
+ "config", "retry", "urlenc",
+ "replace", "base64", "validate",
+ "echoif", "echoifempty", "echoifexists",
+ "realpath", "zipf", "needupdate",
+ "gron", "jj", "deploy",
+}
diff --git a/tools/task b/tools/task
index 8a3c8cc..d6277bd 160000
--- a/tools/task
+++ b/tools/task
@@ -1 +1 @@
-Subproject commit 8a3c8cc57237a90790c28c1b2f3dec46bd689beb
+Subproject commit d6277bd28a5fdebf407623e182b6156b21261253
diff --git a/tools/wsk b/tools/wsk
new file mode 160000
index 0000000..b1ca4bc
--- /dev/null
+++ b/tools/wsk
@@ -0,0 +1 @@
+Subproject commit b1ca4bccc2c256a073ffc114913c43d78f412830
diff --git a/tools/wskdeploy b/tools/wskdeploy
new file mode 160000
index 0000000..03df112
--- /dev/null
+++ b/tools/wskdeploy
@@ -0,0 +1 @@
+Subproject commit 03df1126c3b5205d642738479a08bb7cd66a03b3