/
gitbookSummaries.go
69 lines (62 loc) · 2.66 KB
/
gitbookSummaries.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
64
65
66
67
68
69
package gitbook
import (
"fmt"
"io/ioutil"
"path/filepath"
)
// BuildComponentsSummaries creates summaries the components for the general summary
func (openControl *OpenControlGitBook) buildComponentsSummaries() string {
summary := "\n## Components\n"
for _, component := range openControl.Components.GetAll() {
summary += exportLink(component.GetName(), filepath.Join("components", component.GetKey()+".md"))
}
return summary
}
// BuildStandardsSummaries creates summaries the standards for the general summary
func (openControl *OpenControlGitBook) buildStandardsSummaries() (string, *map[string]string) {
var oldFamily, newFamily string
familySummaryMap := make(map[string]string)
summary := "## Standards\n"
openControl.Certification.GetSortedData(func(standardKey string, controlKey string) {
componentLink := replaceParentheses(standardKey + "-" + controlKey + ".md")
control := openControl.Standards.Get(standardKey).Controls[controlKey]
controlFamily := control.Family
controlName := control.Name
newFamily = standardKey + "-" + controlFamily
// create control family headings
if oldFamily != newFamily {
familySummaryMap[newFamily] = fmt.Sprintf("## %s\n", newFamily)
summary += exportLink(controlFamily, filepath.Join("standards", newFamily+".md"))
oldFamily = newFamily
}
controlFullName := fmt.Sprintf("%s: %s", controlKey, controlName)
familySummaryMap[newFamily] += exportLink(controlFullName, componentLink)
summary += "\t" + exportLink(controlFullName, filepath.Join("standards", componentLink))
})
return summary, &familySummaryMap
}
func (openControl *OpenControlGitBook) exportFamilyReadMap(familySummaryMap *map[string]string) {
for family, familySummary := range *(familySummaryMap) {
ioutil.WriteFile(filepath.Join(openControl.exportPath, "standards", family+".md"), []byte(familySummary), 0700)
}
}
func (openControl *OpenControlGitBook) buildMarkdowns() {
if openControl.markdownPath != "" {
openControl.FSUtil.CopyAll(openControl.markdownPath, openControl.exportPath)
}
}
// buildSummaries creates the general summary
func (openControl *OpenControlGitBook) buildSummaries() error {
openControl.buildMarkdowns()
standardsSummary, familySummaryMap := openControl.buildStandardsSummaries()
componentsSummary := openControl.buildComponentsSummaries()
openControl.exportFamilyReadMap(familySummaryMap)
summary := standardsSummary + componentsSummary
if err := openControl.FSUtil.AppendOrCreate(filepath.Join(openControl.exportPath, "SUMMARY.md"), summary); err != nil {
return err
}
if err := openControl.FSUtil.AppendOrCreate(filepath.Join(openControl.exportPath, "README.md"), summary); err != nil {
return err
}
return nil
}