-
Notifications
You must be signed in to change notification settings - Fork 109
/
cloc_summary.go
63 lines (54 loc) · 1.55 KB
/
cloc_summary.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
package cloc
import (
"encoding/json"
"fmt"
"github.com/boyter/scc/processor"
"io/ioutil"
"path/filepath"
"strconv"
"strings"
)
func BuildClocCsvData(languageMap map[string]map[string]processor.LanguageSummary, keys []string) [][]string {
var data [][]string
baseKey := []string{"package", "summary"}
data = append(data, append(baseKey, keys...))
for dirName, dirSummary := range languageMap {
var column []string
column = append(column, dirName)
var codes []string
var summary int64
for _, key := range keys {
lang := dirSummary[key]
summary = summary + lang.Code
codes = append(codes, strconv.Itoa(int(lang.Code)))
}
column = append(column, strconv.Itoa(int(summary)))
column = append(column, codes...)
data = append(data, column)
}
return data
}
func BuildLanguageMap(languageMap map[string]map[string]processor.LanguageSummary, keys []string, filePath string) {
var dirLangSummary []processor.LanguageSummary
contents, _ := ioutil.ReadFile(filePath)
err := json.Unmarshal(contents, &dirLangSummary)
if err != nil {
fmt.Println("Error parsing JSON: ", err)
}
dirName := strings.TrimSuffix(filepath.Base(filePath), filepath.Ext(filePath))
languageMap[dirName] = make(map[string]processor.LanguageSummary)
for _, key := range keys {
var hasSet = false
for _, langSummary := range dirLangSummary {
if key == langSummary.Name {
hasSet = true
langSummary.Name = key
languageMap[dirName][key] = langSummary
break
}
}
if !hasSet {
languageMap[dirName][key] = processor.LanguageSummary{}
}
}
}