Loading .meepctl-repocfg.yaml +96 −37 Original line number Diff line number Diff line Loading @@ -21,17 +21,8 @@ repo: cluster-role-binding: charts/meep-user/meep-user-clusterrolebinding.yaml codecov: false lint: false meep-ctrl-engine: src: go-apps/meep-ctrl-engine bin: bin/meep-ctrl-engine chart: charts/meep-ctrl-engine codecov: true lint: true nodeport: 30000 api: go-apps/meep-ctrl-engine/api/swagger.yaml docker-data: api: bin/meep-swagger-ui static: bin/meep-frontend # CORE APPS (JS) meep-frontend: src: js-apps/meep-frontend bin: bin/meep-frontend Loading @@ -52,30 +43,19 @@ repo: - meep-mg-app-notification - meep-loc-serv - meep-loc-serv-notification meep-webhook: src: go-apps/meep-webhook bin: bin/meep-webhook chart: charts/meep-webhook build-flags: - -mod=vendor codecov: false lint: true meep-mg-manager: src: go-apps/meep-mg-manager bin: bin/meep-mg-manager chart: charts/meep-mg-manager codecov: true lint: true nodeport: 30005 api: go-apps/meep-mg-manager/api/swagger.yaml meep-mon-engine: src: go-apps/meep-mon-engine bin: bin/meep-mon-engine chart: charts/meep-mon-engine build-flags: - -mod=vendor # CORE APPS (GO) meep-ctrl-engine: src: go-apps/meep-ctrl-engine bin: bin/meep-ctrl-engine chart: charts/meep-ctrl-engine codecov: true lint: true nodeport: 30000 api: go-apps/meep-ctrl-engine/api/swagger.yaml docker-data: api: bin/meep-swagger-ui static: bin/meep-frontend meep-loc-serv: src: go-apps/meep-loc-serv bin: bin/meep-loc-serv Loading @@ -96,6 +76,22 @@ repo: lint: true nodeport: 30008 api: go-apps/meep-metrics-engine/api/v2/swagger.yaml meep-mg-manager: src: go-apps/meep-mg-manager bin: bin/meep-mg-manager chart: charts/meep-mg-manager codecov: true lint: true nodeport: 30005 api: go-apps/meep-mg-manager/api/swagger.yaml meep-mon-engine: src: go-apps/meep-mon-engine bin: bin/meep-mon-engine chart: charts/meep-mon-engine build-flags: - -mod=vendor codecov: true lint: true meep-tc-engine: src: go-apps/meep-tc-engine bin: bin/meep-tc-engine Loading @@ -114,12 +110,75 @@ repo: template: charts/meep-virt-engine/virt-templates codecov: true lint: true meep-loc-serv-notification: meep-webhook: src: go-apps/meep-webhook bin: bin/meep-webhook chart: charts/meep-webhook build-flags: - -mod=vendor codecov: false lint: true # # CORE PACKAGES (JS) # meep-ctrl-engine-client: # src: js-packages/meep-ctrl-engine-client # lint: false # meep-metrics-engine-client: # src: js-packages/meep-metrics-engine-client # lint: false # CORE PACKAGES (GO) meep-couch: src: go-packages/meep-couch lint: true meep-ctrl-engine-client: src: go-packages/meep-ctrl-engine-client lint: false meep-ctrl-engine-model: src: go-packages/meep-ctrl-engine-model lint: true meep-loc-serv-client: src: go-packages/meep-loc-serv-client lint: false meep-loc-serv-notification-client: src: go-packages/meep-loc-serv-notification-client lint: false api: go-packages/meep-loc-serv-notification-client/api/swagger.yaml meep-mg-app-notification: api: go-packages/meep-mg-app-client/api/swagger.yaml meep-metrics-engine-notification: meep-logger: src: go-packages/meep-logger lint: true meep-metric-store: src: go-packages/meep-metric-store lint: true meep-metrics-engine-notification-client: src: go-packages/meep-metrics-engine-notification-client lint: false api: go-packages/meep-metrics-engine-notification-client/api/swagger.yaml meep-mg-app-client: src: go-packages/meep-mg-app-client lint: false api: go-packages/meep-mg-app-client/api/swagger.yaml meep-mg-manager-client: src: go-packages/meep-mg-manager-client lint: false meep-mg-manager-model: src: go-packages/meep-mg-manager-model lint: true meep-model: src: go-packages/meep-model lint: true meep-net-char-mgr: src: go-packages/meep-net-char-mgr lint: true meep-redis: src: go-packages/meep-redis lint: true meep-replay-manager: src: go-packages/meep-replay-manager lint: true meep-watchdog: src: go-packages/meep-watchdog lint: true dep: docker-registry: chart: charts/docker-registry Loading go-apps/meepctl/cmd/lint.go 0 → 100644 +193 −0 Original line number Diff line number Diff line /* * Copyright (c) 2019 InterDigital Communications, Inc * * Licensed 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 cmd import ( "fmt" "os" "os/exec" "strings" "time" "github.com/InterDigitalInc/AdvantEDGE/go-apps/meepctl/utils" "github.com/roymx/viper" "github.com/spf13/cobra" ) // buildCmd represents the build command var lintCmd = &cobra.Command{ Use: "lint <targets>", Short: "Lint core components & packages", Long: `AdvantEDGE is composed of a collection of micro-services. Lint command verifies code format & syntax. Multiple targets can be specified (e.g. meepctl lint <target1> <target2>...) Valid targets:`, Example: ` # Lint all components meepctl lint all # Lint meep-ctrl-engine component only meepctl lint meep-ctrl-engine`, Args: cobra.OnlyValidArgs, ValidArgs: []string{ "all", "meep-frontend", "meep-ctrl-engine", "meep-webhook", "meep-mg-manager", "meep-mon-engine", "meep-loc-serv", "meep-metrics-engine", "meep-tc-engine", "meep-tc-sidecar", "meep-virt-engine", "meep-couch", "meep-ctrl-engine-client", "meep-ctrl-engine-model", "meep-loc-serv-client", "meep-loc-serv-notification-client", "meep-logger", "meep-metric-store", "meep-metrics-engine-notification-client", "meep-mg-app-client", "meep-mg-manager-client", "meep-mg-manager-model", "meep-model", "meep-net-char-mgr", "meep-redis", "meep-replay-manager", "meep-watchdog", }, Run: func(cmd *cobra.Command, args []string) { if !utils.ConfigValidate("") { fmt.Println("Fix configuration issues") return } targets := args if len(targets) == 0 { fmt.Println("Need to specify at least one target from ", cmd.ValidArgs) os.Exit(0) } v, _ := cmd.Flags().GetBool("verbose") t, _ := cmd.Flags().GetBool("time") if v { fmt.Println("Lint called") fmt.Println("[arg] targets:", targets) fmt.Println("[flag] verbose:", v) fmt.Println("[flag] time:", t) } start := time.Now() for _, target := range targets { if target == "all" { lintAll(cmd) } else { lint(target, cmd) } } elapsed := time.Since(start) if t { fmt.Println("Took ", elapsed.Round(time.Millisecond).String()) } }, } func init() { var argsStr string for _, arg := range lintCmd.ValidArgs { argsStr += "\n * " + arg } lintCmd.Long += argsStr rootCmd.AddCommand(lintCmd) } func lintAll(cobraCmd *cobra.Command) { for _, target := range cobraCmd.ValidArgs { if target == "all" { continue } lint(target, cobraCmd) fmt.Println("") } } func lint(targetName string, cobraCmd *cobra.Command) { target := utils.RepoCfg.GetStringMapString("repo.core." + targetName) if len(target) == 0 { fmt.Println("Invalid target:", targetName) return } if strings.HasPrefix(target["src"], "go-") { lintGo(targetName, cobraCmd) } else if strings.HasPrefix(target["src"], "js-") { lintJs(targetName, cobraCmd) } } func lintGo(targetName string, cobraCmd *cobra.Command) { fmt.Println("--", targetName, "--") target := utils.RepoCfg.GetStringMapString("repo.core." + targetName) gitDir := viper.GetString("meep.gitdir") srcDir := gitDir + "/" + target["src"] lintEnabled := utils.RepoCfg.GetBool("repo.core." + targetName + ".lint") if !lintEnabled { fmt.Println(" + skipping") return } // linter fmt.Println(" + running linter (go)") cmd := exec.Command("golangci-lint", "run") cmd.Dir = srcDir out, err := utils.ExecuteCmd(cmd, cobraCmd) if err != nil { fmt.Println("Error:", err) fmt.Println(out) fmt.Println("Linting failed. Exiting...") return } } func lintJs(targetName string, cobraCmd *cobra.Command) { fmt.Println("--", targetName, "--") target := utils.RepoCfg.GetStringMapString("repo.core." + targetName) gitDir := viper.GetString("meep.gitdir") srcDir := gitDir + "/" + target["src"] lintEnabled := utils.RepoCfg.GetBool("repo.core." + targetName + ".lint") if !lintEnabled { fmt.Println(" + skipping") return } // linter: ESLint fmt.Println(" + running linter (js)") cmd := exec.Command("eslint", "src/js/") cmd.Dir = srcDir out, err := utils.ExecuteCmd(cmd, cobraCmd) if err != nil { fmt.Println("Error:", err) fmt.Println(out) fmt.Println("Linting failed. Exiting...") return } } Loading
.meepctl-repocfg.yaml +96 −37 Original line number Diff line number Diff line Loading @@ -21,17 +21,8 @@ repo: cluster-role-binding: charts/meep-user/meep-user-clusterrolebinding.yaml codecov: false lint: false meep-ctrl-engine: src: go-apps/meep-ctrl-engine bin: bin/meep-ctrl-engine chart: charts/meep-ctrl-engine codecov: true lint: true nodeport: 30000 api: go-apps/meep-ctrl-engine/api/swagger.yaml docker-data: api: bin/meep-swagger-ui static: bin/meep-frontend # CORE APPS (JS) meep-frontend: src: js-apps/meep-frontend bin: bin/meep-frontend Loading @@ -52,30 +43,19 @@ repo: - meep-mg-app-notification - meep-loc-serv - meep-loc-serv-notification meep-webhook: src: go-apps/meep-webhook bin: bin/meep-webhook chart: charts/meep-webhook build-flags: - -mod=vendor codecov: false lint: true meep-mg-manager: src: go-apps/meep-mg-manager bin: bin/meep-mg-manager chart: charts/meep-mg-manager codecov: true lint: true nodeport: 30005 api: go-apps/meep-mg-manager/api/swagger.yaml meep-mon-engine: src: go-apps/meep-mon-engine bin: bin/meep-mon-engine chart: charts/meep-mon-engine build-flags: - -mod=vendor # CORE APPS (GO) meep-ctrl-engine: src: go-apps/meep-ctrl-engine bin: bin/meep-ctrl-engine chart: charts/meep-ctrl-engine codecov: true lint: true nodeport: 30000 api: go-apps/meep-ctrl-engine/api/swagger.yaml docker-data: api: bin/meep-swagger-ui static: bin/meep-frontend meep-loc-serv: src: go-apps/meep-loc-serv bin: bin/meep-loc-serv Loading @@ -96,6 +76,22 @@ repo: lint: true nodeport: 30008 api: go-apps/meep-metrics-engine/api/v2/swagger.yaml meep-mg-manager: src: go-apps/meep-mg-manager bin: bin/meep-mg-manager chart: charts/meep-mg-manager codecov: true lint: true nodeport: 30005 api: go-apps/meep-mg-manager/api/swagger.yaml meep-mon-engine: src: go-apps/meep-mon-engine bin: bin/meep-mon-engine chart: charts/meep-mon-engine build-flags: - -mod=vendor codecov: true lint: true meep-tc-engine: src: go-apps/meep-tc-engine bin: bin/meep-tc-engine Loading @@ -114,12 +110,75 @@ repo: template: charts/meep-virt-engine/virt-templates codecov: true lint: true meep-loc-serv-notification: meep-webhook: src: go-apps/meep-webhook bin: bin/meep-webhook chart: charts/meep-webhook build-flags: - -mod=vendor codecov: false lint: true # # CORE PACKAGES (JS) # meep-ctrl-engine-client: # src: js-packages/meep-ctrl-engine-client # lint: false # meep-metrics-engine-client: # src: js-packages/meep-metrics-engine-client # lint: false # CORE PACKAGES (GO) meep-couch: src: go-packages/meep-couch lint: true meep-ctrl-engine-client: src: go-packages/meep-ctrl-engine-client lint: false meep-ctrl-engine-model: src: go-packages/meep-ctrl-engine-model lint: true meep-loc-serv-client: src: go-packages/meep-loc-serv-client lint: false meep-loc-serv-notification-client: src: go-packages/meep-loc-serv-notification-client lint: false api: go-packages/meep-loc-serv-notification-client/api/swagger.yaml meep-mg-app-notification: api: go-packages/meep-mg-app-client/api/swagger.yaml meep-metrics-engine-notification: meep-logger: src: go-packages/meep-logger lint: true meep-metric-store: src: go-packages/meep-metric-store lint: true meep-metrics-engine-notification-client: src: go-packages/meep-metrics-engine-notification-client lint: false api: go-packages/meep-metrics-engine-notification-client/api/swagger.yaml meep-mg-app-client: src: go-packages/meep-mg-app-client lint: false api: go-packages/meep-mg-app-client/api/swagger.yaml meep-mg-manager-client: src: go-packages/meep-mg-manager-client lint: false meep-mg-manager-model: src: go-packages/meep-mg-manager-model lint: true meep-model: src: go-packages/meep-model lint: true meep-net-char-mgr: src: go-packages/meep-net-char-mgr lint: true meep-redis: src: go-packages/meep-redis lint: true meep-replay-manager: src: go-packages/meep-replay-manager lint: true meep-watchdog: src: go-packages/meep-watchdog lint: true dep: docker-registry: chart: charts/docker-registry Loading
go-apps/meepctl/cmd/lint.go 0 → 100644 +193 −0 Original line number Diff line number Diff line /* * Copyright (c) 2019 InterDigital Communications, Inc * * Licensed 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 cmd import ( "fmt" "os" "os/exec" "strings" "time" "github.com/InterDigitalInc/AdvantEDGE/go-apps/meepctl/utils" "github.com/roymx/viper" "github.com/spf13/cobra" ) // buildCmd represents the build command var lintCmd = &cobra.Command{ Use: "lint <targets>", Short: "Lint core components & packages", Long: `AdvantEDGE is composed of a collection of micro-services. Lint command verifies code format & syntax. Multiple targets can be specified (e.g. meepctl lint <target1> <target2>...) Valid targets:`, Example: ` # Lint all components meepctl lint all # Lint meep-ctrl-engine component only meepctl lint meep-ctrl-engine`, Args: cobra.OnlyValidArgs, ValidArgs: []string{ "all", "meep-frontend", "meep-ctrl-engine", "meep-webhook", "meep-mg-manager", "meep-mon-engine", "meep-loc-serv", "meep-metrics-engine", "meep-tc-engine", "meep-tc-sidecar", "meep-virt-engine", "meep-couch", "meep-ctrl-engine-client", "meep-ctrl-engine-model", "meep-loc-serv-client", "meep-loc-serv-notification-client", "meep-logger", "meep-metric-store", "meep-metrics-engine-notification-client", "meep-mg-app-client", "meep-mg-manager-client", "meep-mg-manager-model", "meep-model", "meep-net-char-mgr", "meep-redis", "meep-replay-manager", "meep-watchdog", }, Run: func(cmd *cobra.Command, args []string) { if !utils.ConfigValidate("") { fmt.Println("Fix configuration issues") return } targets := args if len(targets) == 0 { fmt.Println("Need to specify at least one target from ", cmd.ValidArgs) os.Exit(0) } v, _ := cmd.Flags().GetBool("verbose") t, _ := cmd.Flags().GetBool("time") if v { fmt.Println("Lint called") fmt.Println("[arg] targets:", targets) fmt.Println("[flag] verbose:", v) fmt.Println("[flag] time:", t) } start := time.Now() for _, target := range targets { if target == "all" { lintAll(cmd) } else { lint(target, cmd) } } elapsed := time.Since(start) if t { fmt.Println("Took ", elapsed.Round(time.Millisecond).String()) } }, } func init() { var argsStr string for _, arg := range lintCmd.ValidArgs { argsStr += "\n * " + arg } lintCmd.Long += argsStr rootCmd.AddCommand(lintCmd) } func lintAll(cobraCmd *cobra.Command) { for _, target := range cobraCmd.ValidArgs { if target == "all" { continue } lint(target, cobraCmd) fmt.Println("") } } func lint(targetName string, cobraCmd *cobra.Command) { target := utils.RepoCfg.GetStringMapString("repo.core." + targetName) if len(target) == 0 { fmt.Println("Invalid target:", targetName) return } if strings.HasPrefix(target["src"], "go-") { lintGo(targetName, cobraCmd) } else if strings.HasPrefix(target["src"], "js-") { lintJs(targetName, cobraCmd) } } func lintGo(targetName string, cobraCmd *cobra.Command) { fmt.Println("--", targetName, "--") target := utils.RepoCfg.GetStringMapString("repo.core." + targetName) gitDir := viper.GetString("meep.gitdir") srcDir := gitDir + "/" + target["src"] lintEnabled := utils.RepoCfg.GetBool("repo.core." + targetName + ".lint") if !lintEnabled { fmt.Println(" + skipping") return } // linter fmt.Println(" + running linter (go)") cmd := exec.Command("golangci-lint", "run") cmd.Dir = srcDir out, err := utils.ExecuteCmd(cmd, cobraCmd) if err != nil { fmt.Println("Error:", err) fmt.Println(out) fmt.Println("Linting failed. Exiting...") return } } func lintJs(targetName string, cobraCmd *cobra.Command) { fmt.Println("--", targetName, "--") target := utils.RepoCfg.GetStringMapString("repo.core." + targetName) gitDir := viper.GetString("meep.gitdir") srcDir := gitDir + "/" + target["src"] lintEnabled := utils.RepoCfg.GetBool("repo.core." + targetName + ".lint") if !lintEnabled { fmt.Println(" + skipping") return } // linter: ESLint fmt.Println(" + running linter (js)") cmd := exec.Command("eslint", "src/js/") cmd.Dir = srcDir out, err := utils.ExecuteCmd(cmd, cobraCmd) if err != nil { fmt.Println("Error:", err) fmt.Println(out) fmt.Println("Linting failed. Exiting...") return } }