diff --git a/go.mod b/go.mod index 2ccf9cf27..c7e6a9096 100644 --- a/go.mod +++ b/go.mod @@ -53,9 +53,9 @@ require ( github.com/imdario/mergo v0.3.12 github.com/klauspost/compress v1.15.9 github.com/koding/websocketproxy v0.0.0-20181220232114-7ed82d81a28c - github.com/kubevela/pkg v0.0.0-20220913093640-a41193098f92 + github.com/kubevela/pkg v0.0.0-20220919085530-d9d2daa3e4da github.com/kubevela/prism v1.5.1-0.20220915071949-6bf3ad33f84f - github.com/kubevela/workflow v0.0.0-20220919092128-ce7766fae4aa + github.com/kubevela/workflow v0.0.0-20220927151313-21e491db39a7 github.com/kyokomi/emoji v2.2.4+incompatible github.com/mitchellh/hashstructure/v2 v2.0.1 github.com/oam-dev/cluster-gateway v1.4.0 @@ -255,7 +255,7 @@ require ( github.com/russross/blackfriday/v2 v2.1.0 // indirect github.com/sergi/go-diff v1.1.0 // indirect github.com/shopspring/decimal v1.2.0 // indirect - github.com/spf13/afero v1.6.0 // indirect + github.com/spf13/afero v1.8.0 // indirect github.com/spf13/cast v1.4.1 // indirect github.com/src-d/gcfg v1.4.0 // indirect github.com/tidwall/match v1.1.1 // indirect diff --git a/go.sum b/go.sum index 64242a8b7..5562fd967 100644 --- a/go.sum +++ b/go.sum @@ -7,6 +7,7 @@ cloud.google.com/go v0.38.0/go.mod h1:990N+gfupTy94rShfmMCWGDn0LpTmnzTp2qbd1dvSR cloud.google.com/go v0.43.0/go.mod h1:BOSR3VbTLkk6FDC/TcffxP4NF/FFBGA5ku+jvKOP7pg= cloud.google.com/go v0.44.1/go.mod h1:iSa0KzasP4Uvy3f1mN/7PiObzGgflwredwwASm/v6AU= cloud.google.com/go v0.44.2/go.mod h1:60680Gw3Yr4ikxnPRS/oxxkBccT6SA1yMk63TGekxKY= +cloud.google.com/go v0.44.3/go.mod h1:60680Gw3Yr4ikxnPRS/oxxkBccT6SA1yMk63TGekxKY= cloud.google.com/go v0.45.1/go.mod h1:RpBamKRgapWJb87xiFSdk4g1CME7QZg3uwTez+TSTjc= cloud.google.com/go v0.46.3/go.mod h1:a6bKKbmY7er1mI7TEI4lsAkts/mkhTSZK8w33B4RAg0= cloud.google.com/go v0.49.0/go.mod h1:hGvAdzcWNbyuxS3nWhD7H2cIJxjRRTRLQVB0bdputVY= @@ -22,6 +23,7 @@ cloud.google.com/go v0.62.0/go.mod h1:jmCYTdRCQuc1PHIIJ/maLInMho30T/Y0M4hTdTShOY cloud.google.com/go v0.65.0/go.mod h1:O5N8zS7uWy9vkA9vayVHs65eM1ubvY4h553ofrNHObY= cloud.google.com/go v0.72.0/go.mod h1:M+5Vjvlc2wnp6tjzE102Dw08nGShTscUx2nZMufOKPI= cloud.google.com/go v0.74.0/go.mod h1:VV1xSbzvo+9QJOxLDaJfTjx5e+MePCpCWwvftOeQmWk= +cloud.google.com/go v0.75.0/go.mod h1:VGuuCn7PG0dwsd5XPVm2Mm3wlh3EL55/79EKB6hlPTY= cloud.google.com/go v0.78.0/go.mod h1:QjdrLG0uq+YwhjoVOLsS1t7TW8fs36kLs4XO5R5ECHg= cloud.google.com/go v0.79.0/go.mod h1:3bzgcEeQlzbuEAYu4mrWhKqWjmpprinYgKJLgKHnbb8= cloud.google.com/go v0.81.0/go.mod h1:mk/AM35KwGk/Nm2YSeZbxXdrNK3KZOYHmLkOqC2V6E0= @@ -66,6 +68,7 @@ cloud.google.com/go/storage v1.5.0/go.mod h1:tpKbwo567HUNpVclU5sGELwQWBDZ8gh0Zeo cloud.google.com/go/storage v1.6.0/go.mod h1:N7U0C8pVQ/+NIKOBQyamJIeKQKkZ+mxpohlUTyfDhBk= cloud.google.com/go/storage v1.8.0/go.mod h1:Wv1Oy7z6Yz3DshWRJFhqM/UCfaWIRTdp0RXyy7KQOVs= cloud.google.com/go/storage v1.10.0/go.mod h1:FLPqc6j+Ki4BU591ie1oL6qBQGu2Bl/tZ9ullr3+Kg0= +cloud.google.com/go/storage v1.14.0/go.mod h1:GrKmX003DSIwi9o29oFT7YDnHYwZoctc3fOKtUw0Xmo= cloud.google.com/go/storage v1.22.1/go.mod h1:S8N1cAStu7BOeFfE8KAQzmyyLkK8p/vmRq6kuBTW58Y= collectd.org v0.3.0/go.mod h1:A/8DzQBkF6abtvrT2j/AU/4tiBgJWYyh0y/oB/4MlWE= contrib.go.opencensus.io/exporter/ocagent v0.6.0/go.mod h1:zmKjrJcdo0aYcVS7bmEeSEBLPA9YJp5bjrofdU3pIXs= @@ -1011,6 +1014,7 @@ github.com/google/pprof v0.0.0-20200507031123-427632fa3b1c/go.mod h1:ZgVRPoUq/hf github.com/google/pprof v0.0.0-20200708004538-1a94d8640e99/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM= github.com/google/pprof v0.0.0-20201023163331-3e6fc7fc9c4c/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= github.com/google/pprof v0.0.0-20201203190320-1bf35d6f28c2/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= +github.com/google/pprof v0.0.0-20201218002935-b9804c9f04c2/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= github.com/google/pprof v0.0.0-20210122040257-d980be63207e/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= github.com/google/pprof v0.0.0-20210226084205-cbba55b83ad5/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= github.com/google/pprof v0.0.0-20210601050228-01bbb1931b22/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= @@ -1047,6 +1051,7 @@ github.com/googleapis/gnostic v0.5.1/go.mod h1:6U4PtQXGIEt/Z3h5MAT7FNofLnw9vXk2c github.com/googleapis/gnostic v0.5.5 h1:9fHAtK0uDfpveeqqo1hkEZJcFvYXAiCN3UutL8F9xHw= github.com/googleapis/gnostic v0.5.5/go.mod h1:7+EbHbldMins07ALC74bsA81Ovc97DwqyJO1AENw9kA= github.com/googleapis/go-type-adapters v1.0.0/go.mod h1:zHW75FOG2aur7gAO2B+MLby+cLsWGBF62rFAi7WjWO4= +github.com/googleapis/google-cloud-go-testing v0.0.0-20200911160855-bcd43fbb19e8/go.mod h1:dvDLG8qkwmyD9a/MJJN3XJcT3xFxOKAvTZGvuZmac9g= github.com/gookit/color v1.4.2/go.mod h1:fqRyamkC1W8uxl+lxCQxOT09l/vYfZ+QeiX3rKQHCoQ= github.com/gophercloud/gophercloud v0.0.0-20190126172459-c818fa66e4c8/go.mod h1:3WdhXV3rUYy9p6AUW8d94kr+HS62Y4VL9mBnFxsD8q4= github.com/gophercloud/gophercloud v0.1.0/go.mod h1:vxM41WHh5uqHVBMZHzuwNOHh8XEoIEcSTewFxm1c5g8= @@ -1308,12 +1313,12 @@ github.com/kr/pty v1.1.8/go.mod h1:O1sed60cT9XZ5uDucP5qwvh+TE3NnUj51EiZO/lmSfw= github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI= github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY= github.com/kr/text v0.2.0/go.mod h1:eLer722TekiGuMkidMxC/pM04lWEeraHUUmBw8l2grE= -github.com/kubevela/pkg v0.0.0-20220913093640-a41193098f92 h1:B4GkHf6rdLC4x2Clya1GKAGGo683fHgNDE4IHAOSSKQ= -github.com/kubevela/pkg v0.0.0-20220913093640-a41193098f92/go.mod h1:mGQEK3fAX9MkOGexLOm7H+h99SdqZSsUzTmVLgzpSdg= +github.com/kubevela/pkg v0.0.0-20220919085530-d9d2daa3e4da h1:Vc5W+eRNAhoRx6Vajt6qlaavkJft9DD/UvTnqM6naWY= +github.com/kubevela/pkg v0.0.0-20220919085530-d9d2daa3e4da/go.mod h1:M1teY5NgwzOqvUdwSYKe1eM4Qe4EQj8Cr2oey2xhV3I= github.com/kubevela/prism v1.5.1-0.20220915071949-6bf3ad33f84f h1:1lUtU1alPThdcsn4MI6XjPb7eJLuZPpmlEdgjtnUMKw= github.com/kubevela/prism v1.5.1-0.20220915071949-6bf3ad33f84f/go.mod h1:m724/7ANnB/iukyHW20+DicpeJMEC/JA0ZhgsHY10MA= -github.com/kubevela/workflow v0.0.0-20220919092128-ce7766fae4aa h1:mofqj4GRHIhSTWH4/P3v2Oh63WHxXg+VVeRW7psUpoQ= -github.com/kubevela/workflow v0.0.0-20220919092128-ce7766fae4aa/go.mod h1:h6UXyWGAixyLqXBiu3Dqzq3GAIkEEI3vdV4LNiiRCm0= +github.com/kubevela/workflow v0.0.0-20220927151313-21e491db39a7 h1:cgiW+Tfs8Yq+ZQDs0HnJk2/pofEis4epKcPYJ+sA/2I= +github.com/kubevela/workflow v0.0.0-20220927151313-21e491db39a7/go.mod h1:fEslvqY3LNpuxjNXVP+HtTejqPCqw/vOW+6C3OsWVj8= github.com/kulti/thelper v0.4.0/go.mod h1:vMu2Cizjy/grP+jmsvOFDx1kYP6+PD1lqg4Yu5exl2U= github.com/kunwardeep/paralleltest v1.0.3/go.mod h1:vLydzomDFpk7yu5UX02RmP0H8QfRPOV/oFhWN85Mjb4= github.com/kylelemons/godebug v0.0.0-20160406211939-eadb3ce320cb/go.mod h1:B69LEHPfb2qLo0BaaOLcbitczOKLWTsrBG9LczfCD4k= @@ -1665,6 +1670,7 @@ github.com/pkg/errors v0.9.1 h1:FEBLx1zS214owpjy7qsBeixbURkuhQAwrK5UwLGTwt4= github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= github.com/pkg/profile v1.2.1/go.mod h1:hJw3o1OdXxsrSjjVksARp5W95eeEaEfptyVZyv6JUPA= github.com/pkg/sftp v1.10.1/go.mod h1:lYOWFsE0bwd1+KfKJaKeuokY15vzFx25BLbzYYoAxZI= +github.com/pkg/sftp v1.13.1/go.mod h1:3HaPG6Dq1ILlpPZRO0HVMrsydcdLt6HRDccSgb87qRg= github.com/pkg/term v0.0.0-20180730021639-bffc007b7fd5/go.mod h1:eCbImbZ95eXtAUIbLAuAVnBnwf83mjf6QIVH8SHYwqQ= github.com/pmezard/go-difflib v0.0.0-20151028094244-d8ed2627bdf0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= @@ -1840,8 +1846,9 @@ github.com/spaolacci/murmur3 v0.0.0-20180118202830-f09979ecbc72/go.mod h1:JwIasO github.com/spaolacci/murmur3 v1.1.0/go.mod h1:JwIasOWyU6f++ZhiEuf87xNszmSA2myDM2Kzu9HwQUA= github.com/spf13/afero v1.1.2/go.mod h1:j4pytiNVoe2o6bmDsKpLACNPDBIoEAkihy7loJ1B0CQ= github.com/spf13/afero v1.2.2/go.mod h1:9ZxEEn6pIJ8Rxe320qSDBk6AsU0r9pR7Q4OcevTdifk= -github.com/spf13/afero v1.6.0 h1:xoax2sJ2DT8S8xA2paPFjDCScCNeWsg75VG0DLRreiY= github.com/spf13/afero v1.6.0/go.mod h1:Ai8FlHk4v/PARR026UzYexafAt9roJ7LcLMAmO6Z93I= +github.com/spf13/afero v1.8.0 h1:5MmtuhAgYeU6qpa7w7bP0dv6MBYuup0vekhSpSkoq60= +github.com/spf13/afero v1.8.0/go.mod h1:CtAatgMJh6bJEIs48Ay/FOnkljP3WeGUG0MC1RfAqwo= github.com/spf13/cast v1.3.0/go.mod h1:Qx5cxh0v+4UWYiBimWS+eyWzqEqokIECu5etghLkUJE= github.com/spf13/cast v1.3.1/go.mod h1:Qx5cxh0v+4UWYiBimWS+eyWzqEqokIECu5etghLkUJE= github.com/spf13/cast v1.4.1 h1:s0hze+J0196ZfEMTs80N7UlFt0BDuQ7Q+JDnHiMWKdA= @@ -2163,11 +2170,13 @@ golang.org/x/crypto v0.0.0-20201002170205-7f63de1d35b0/go.mod h1:LzIPMQfyMNhhGPh golang.org/x/crypto v0.0.0-20201221181555-eec23a3978ad/go.mod h1:jdWPYTVW3xRLrWPugEBEK3UY2ZEsg3UU495nc5E+M+I= golang.org/x/crypto v0.0.0-20210220033148-5ea612d1eb83/go.mod h1:jdWPYTVW3xRLrWPugEBEK3UY2ZEsg3UU495nc5E+M+I= golang.org/x/crypto v0.0.0-20210322153248-0c34fe9e7dc2/go.mod h1:T9bdIzuCu7OtxOm1hfPfRQxPLYneinmdGuTeoZ9dtd4= +golang.org/x/crypto v0.0.0-20210421170649-83a5a9bb288b/go.mod h1:T9bdIzuCu7OtxOm1hfPfRQxPLYneinmdGuTeoZ9dtd4= golang.org/x/crypto v0.0.0-20210513164829-c07d793c2f9a/go.mod h1:P+XmwS30IXTQdn5tA2iutPOUgjI07+tq3H3K9MVA1s8= golang.org/x/crypto v0.0.0-20210616213533-5ff15b29337e/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= golang.org/x/crypto v0.0.0-20210711020723-a769d52b0f97/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= golang.org/x/crypto v0.0.0-20210817164053-32db794688a5/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= golang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= +golang.org/x/crypto v0.0.0-20211108221036-ceb1ce70b4fa/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= golang.org/x/crypto v0.0.0-20220507011949-2cf3adece122 h1:NvGWuYG8dkDHFSKksI1P9faiVJ9rayE6l0+ouWVIDs8= golang.org/x/crypto v0.0.0-20220507011949-2cf3adece122/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4= golang.org/x/exp v0.0.0-20180321215751-8460e604b9de/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= @@ -2450,6 +2459,7 @@ golang.org/x/sys v0.0.0-20210324051608-47abb6519492/go.mod h1:h1NjWce9XRLGQEsW7w golang.org/x/sys v0.0.0-20210330210617-4fbd30eecc44/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210403161142-5e06dd20ab57/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210423082822-04245dca01da/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210423185535-09eb48e85fd7/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210426230700-d19ff857e887/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210510120138-977fb7262007/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20210514084401-e8d321eab015/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= @@ -2636,6 +2646,7 @@ golang.org/x/tools v0.0.0-20210101214203-2dba1e4ea05c/go.mod h1:emZCQorbCU4vsT4f golang.org/x/tools v0.0.0-20210104081019-d8d6ddbec6ee/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= golang.org/x/tools v0.0.0-20210105154028-b0ab187a4818/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= golang.org/x/tools v0.0.0-20210106214847-113979e3529a/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= +golang.org/x/tools v0.0.0-20210108195828-e2f9c7f1fc8e/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= golang.org/x/tools v0.1.0/go.mod h1:xkSsbof2nBLbhDlRMhhhyNLN/zl3eTqcnHD5viDpcZ0= golang.org/x/tools v0.1.1-0.20210205202024-ef80cdb6ec6d/go.mod h1:9bzcO0MWcOuT0tm1iBGzDVPshzfwoVvREIui8C+MHqU= golang.org/x/tools v0.1.1-0.20210302220138-2ac05c832e1a/go.mod h1:9bzcO0MWcOuT0tm1iBGzDVPshzfwoVvREIui8C+MHqU= @@ -2773,7 +2784,9 @@ google.golang.org/genproto v0.0.0-20201110150050-8816d57aaa9a/go.mod h1:FWY/as6D google.golang.org/genproto v0.0.0-20201201144952-b05cb90ed32e/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= google.golang.org/genproto v0.0.0-20201210142538-e3217bee35cc/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= google.golang.org/genproto v0.0.0-20201214200347-8c77b98c765d/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= +google.golang.org/genproto v0.0.0-20210108203827-ffc7fda8c3d7/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= google.golang.org/genproto v0.0.0-20210222152913-aa3ee6e6a81c/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= +google.golang.org/genproto v0.0.0-20210226172003-ab064af71705/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= google.golang.org/genproto v0.0.0-20210303154014-9728d6b83eeb/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= google.golang.org/genproto v0.0.0-20210310155132-4ce2db91004e/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= google.golang.org/genproto v0.0.0-20210319143718-93e7006c17a6/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= diff --git a/references/cli/addon.go b/references/cli/addon.go index 7edafbf35..a3bbf84a0 100644 --- a/references/cli/addon.go +++ b/references/cli/addon.go @@ -621,7 +621,7 @@ func statusAddon(name string, ioStreams cmdutil.IOStreams, cmd *cobra.Command, c if status.AddonPhase != statusEnabled && status.AddonPhase != statusDisabled { fmt.Printf("diagnose addon info from application %s", addonutil.Addon2AppName(name)) - err := printAppStatus(context.Background(), k8sClient, ioStreams, addonutil.Addon2AppName(name), types.DefaultKubeVelaNS, cmd, c) + err := printAppStatus(context.Background(), k8sClient, ioStreams, addonutil.Addon2AppName(name), types.DefaultKubeVelaNS, cmd, c, false) if err != nil { return err } diff --git a/references/cli/debug.go b/references/cli/debug.go index e63764835..0ef2fe071 100644 --- a/references/cli/debug.go +++ b/references/cli/debug.go @@ -283,7 +283,7 @@ func (d *debugOpts) handleCueSteps(v *value.Value, ioStreams cmdutil.IOStreams) return err } ioStreams.Info(color.New(color.FgCyan).Sprint("\n", d.focus, "\n")) - rendered, err := renderFields(f) + rendered, err := renderFields(f, &renderOptions{}) if err != nil { return err } @@ -347,7 +347,7 @@ func (d *debugOpts) separateBySteps(v *value.Value, ioStreams cmdutil.IOStreams) if field == all { for _, field := range fieldList { ioStreams.Info(color.CyanString("\n▫️ %s", field)) - rendered, err := renderFields(fieldMap[field]) + rendered, err := renderFields(fieldMap[field], &renderOptions{}) if err != nil { return err } @@ -357,7 +357,7 @@ func (d *debugOpts) separateBySteps(v *value.Value, ioStreams cmdutil.IOStreams) } field = unwrapStepName(field) ioStreams.Info(color.CyanString("\n▫️ %s", field)) - rendered, err := renderFields(fieldMap[field]) + rendered, err := renderFields(fieldMap[field], &renderOptions{}) if err != nil { return err } @@ -366,27 +366,40 @@ func (d *debugOpts) separateBySteps(v *value.Value, ioStreams cmdutil.IOStreams) return nil } -func renderFields(v *value.Value) (string, error) { +type renderOptions struct { + hideIndex bool + filterFields []string +} + +func renderFields(v *value.Value, opt *renderOptions) (string, error) { table := uitable.New() table.MaxColWidth = 200 table.Wrap = true i := 0 if err := v.StepByFields(func(fieldName string, in *value.Value) (bool, error) { + key := "" if custom.OpTpy(in) != "" { - rendered, err := renderFields(in) + rendered, err := renderFields(in, opt) if err != nil { return false, err } i++ - key := fmt.Sprintf("%v.%s", i, fieldName) + if !opt.hideIndex { + key += fmt.Sprintf("%v.", i) + } + key += fieldName if !strings.Contains(fieldName, "#") { if err := v.FillObject(in, fieldName); err != nil { renderValuesInRow(table, key, rendered, false) return false, err } } - renderValuesInRow(table, key, rendered, true) + for _, filter := range opt.filterFields { + if filter != fieldName { + renderValuesInRow(table, key, rendered, true) + } + } return false, nil } @@ -395,7 +408,10 @@ func renderFields(v *value.Value) (string, error) { return false, err } i++ - key := fmt.Sprintf("%v.%s", i, fieldName) + if !opt.hideIndex { + key += fmt.Sprintf("%v.", i) + } + key += fieldName if !strings.Contains(fieldName, "#") { if err := v.FillObject(in, fieldName); err != nil { renderValuesInRow(table, key, vStr, false) @@ -403,7 +419,11 @@ func renderFields(v *value.Value) (string, error) { } } - renderValuesInRow(table, key, vStr, true) + for _, filter := range opt.filterFields { + if filter != fieldName { + renderValuesInRow(table, key, vStr, true) + } + } return false, nil }); err != nil { vStr, serr := v.String() diff --git a/references/cli/init.go b/references/cli/init.go index 1c20859ff..7de4126a4 100644 --- a/references/cli/init.go +++ b/references/cli/init.go @@ -118,7 +118,7 @@ func NewInitCommand(c common2.Args, order string, ioStreams cmdutil.IOStreams) * if deployStatus != compStatusDeployed { return nil } - return printAppStatus(context.Background(), newClient, ioStreams, o.appName, o.Namespace, cmd, c) + return printAppStatus(context.Background(), newClient, ioStreams, o.appName, o.Namespace, cmd, c, false) }, Annotations: map[string]string{ types.TagCommandOrder: order, diff --git a/references/cli/status.go b/references/cli/status.go index c47ea3bbb..b1de8b281 100644 --- a/references/cli/status.go +++ b/references/cli/status.go @@ -35,6 +35,9 @@ import ( pkgmulticluster "github.com/kubevela/pkg/multicluster" workflowv1alpha1 "github.com/kubevela/workflow/api/v1alpha1" + "github.com/kubevela/workflow/pkg/cue/model/sets" + "github.com/kubevela/workflow/pkg/cue/model/value" + "github.com/kubevela/workflow/pkg/utils" commontypes "github.com/oam-dev/kubevela/apis/core.oam.dev/common" "github.com/oam-dev/kubevela/apis/core.oam.dev/v1alpha1" @@ -101,6 +104,7 @@ const ( func NewAppStatusCommand(c common.Args, order string, ioStreams cmdutil.IOStreams) *cobra.Command { ctx := context.Background() var outputFormat string + var detail bool cmd := &cobra.Command{ Use: "status APP_NAME", Short: "Show status of an application.", @@ -164,7 +168,7 @@ func NewAppStatusCommand(c common.Args, order string, ioStreams cmdutil.IOStream if outputFormat != "" { return printRawApplication(context.Background(), c, outputFormat, cmd.OutOrStdout(), namespace, appName) } - return printAppStatus(ctx, newClient, ioStreams, appName, namespace, cmd, c) + return printAppStatus(ctx, newClient, ioStreams, appName, namespace, cmd, c, detail) }, Annotations: map[string]string{ types.TagCommandOrder: order, @@ -177,14 +181,14 @@ func NewAppStatusCommand(c common.Args, order string, ioStreams cmdutil.IOStream cmd.Flags().StringP("cluster", "", "", "filter the endpoints or pods by cluster name") cmd.Flags().BoolP("tree", "t", false, "display the application resources into tree structure") cmd.Flags().BoolP("pod", "", false, "show pod list of the application") - cmd.Flags().BoolP("detail", "d", false, "display the realtime details of application resources, must be used with --tree") + cmd.Flags().BoolVarP(&detail, "detail", "d", false, "display more details in the application like input/output data in context. Note that if you want to show the realtime details of application resources, please use it with --tree") cmd.Flags().StringP("detail-format", "", "inline", "the format for displaying details, must be used with --detail. Can be one of inline, wide, list, table, raw.") cmd.Flags().StringVarP(&outputFormat, "output", "o", "", "raw Application output format. One of: (json, yaml, jsonpath)") addNamespaceAndEnvArg(cmd) return cmd } -func printAppStatus(_ context.Context, c client.Client, ioStreams cmdutil.IOStreams, appName string, namespace string, cmd *cobra.Command, velaC common.Args) error { +func printAppStatus(_ context.Context, c client.Client, ioStreams cmdutil.IOStreams, appName string, namespace string, cmd *cobra.Command, velaC common.Args, detail bool) error { app, err := appfile.LoadApplication(namespace, appName, velaC) if err != nil { return err @@ -197,7 +201,7 @@ func printAppStatus(_ context.Context, c client.Client, ioStreams cmdutil.IOStre table.AddRow(" Created at:", app.CreationTimestamp.String()) table.AddRow(" Status:", getAppPhaseColor(app.Status.Phase).Sprint(app.Status.Phase)) cmd.Printf("%s\n\n", table.String()) - if err := printWorkflowStatus(c, ioStreams, appName, namespace); err != nil { + if err := printWorkflowStatus(c, ioStreams, appName, namespace, detail); err != nil { return err } return loopCheckStatus(c, ioStreams, appName, namespace) @@ -267,11 +271,31 @@ func getComponentType(app *v1beta1.Application, name string) string { return "webservice" } -func printWorkflowStatus(c client.Client, ioStreams cmdutil.IOStreams, appName string, namespace string) error { +func printWorkflowStatus(c client.Client, ioStreams cmdutil.IOStreams, appName string, namespace string, detail bool) error { remoteApp, err := loadRemoteApplication(c, namespace, appName) if err != nil { return err } + outputs := make(map[string]workflowv1alpha1.StepOutputs) + var v *value.Value + if detail { + for _, c := range remoteApp.Spec.Components { + if c.Outputs != nil { + outputs[c.Name] = c.Outputs + } + } + if remoteApp.Spec.Workflow != nil { + for _, s := range remoteApp.Spec.Workflow.Steps { + if s.Outputs != nil { + outputs[s.Name] = s.Outputs + } + } + } + v, err = utils.GetDataFromContext(context.Background(), c, appName, namespace) + if err != nil { + return err + } + } workflowStatus := remoteApp.Status.Workflow if workflowStatus != nil { ioStreams.Info("Workflow:\n") @@ -286,6 +310,23 @@ func printWorkflowStatus(c client.Client, ioStreams cmdutil.IOStreams, appName s ioStreams.Infof(" type: %s\n", step.Type) ioStreams.Infof(" phase: %s \n", getWfStepColor(step.Phase).Sprint(step.Phase)) ioStreams.Infof(" message: %s\n", step.Message) + if detail { + if len(outputs[step.Name]) > 0 { + ioStreams.Infof(" outputs:\n") + for _, output := range outputs[step.Name] { + outputValue, err := v.LookupValue(output.Name) + if err != nil { + continue + } + s, err := sets.ToString(outputValue.CueValue()) + if err != nil { + continue + } + ioStreams.Infof(" - name: %s\n", output.Name) + ioStreams.Infof(" value: %s", s) + } + } + } } ioStreams.Infof("\n") }