internal/cmd/cloc.go (32 lines of code) (raw):

/* * Copyright 2021-2024 JetBrains s.r.o. * * 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 * * https://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 ( "github.com/boyter/scc/v3/processor" "github.com/spf13/cobra" ) // clocOptions represents contributor command options. type clocOptions struct { ProjectDirs []string Output string } // newClocCommand returns a new instance of the show command. func newClocCommand() *cobra.Command { options := &clocOptions{} cmd := &cobra.Command{ Use: "cloc", Short: "Calculate lines of code for projects with boyter/scc", Long: `A command-line helper for project statistics: languages, lines of code. Powered by boyter/scc. For contributors, use "qodana contributors" command.`, Run: func(cmd *cobra.Command, args []string) { if len(options.ProjectDirs) == 0 { options.ProjectDirs = append(options.ProjectDirs, ".") } processor.Format = options.Output processor.Cocomo = true processor.DirFilePaths = options.ProjectDirs processor.ConfigureGc() processor.ConfigureLazy(true) processor.Process() }, } flags := cmd.Flags() flags.StringArrayVarP(&options.ProjectDirs, "project-dir", "i", []string{}, "Project directory, can be specified multiple times to check multiple projects, if not specified, current directory will be used") flags.StringVarP(&options.Output, "output", "o", "tabular", "Output format, can be [tabular, wide, json, csv, csv-stream, cloc-yaml, html, html-table, sql, sql-insert, openmetrics]") return cmd }