refactor: hide dokku scale file parsing inside ps plugin

This commit is contained in:
Jose Diaz-Gonzalez
2021-08-01 01:21:46 -04:00
parent 31f3c429ab
commit c62bff3002
2 changed files with 41 additions and 5 deletions

View File

@@ -306,6 +306,24 @@ func readScaleFile(appName string) (map[string]int, error) {
return scale, nil
}
func getFormations(appName string) (FormationSlice, error) {
scale := FormationSlice{}
data, err := readScaleFile(appName)
if err != nil {
return scale, err
}
for processType, quantity := range data {
f := Formation{
ProcessType: processType,
Quantity: quantity,
}
scale = append(scale, &f)
}
return scale, nil
}
func removeProcfile(appName string) error {
procfile := getProcfilePath(appName)
if !common.FileExists(procfile) {
@@ -332,8 +350,7 @@ func restorePrep() error {
}
func scaleReport(appName string) error {
scalefilePath := getScalefilePath(appName)
lines, err := common.FileToSlice(scalefilePath)
formations, err := getFormations(appName)
if err != nil {
return err
}
@@ -350,9 +367,9 @@ func scaleReport(appName string) error {
content = append(content, "proctype=qty", "--------=---")
}
sort.Strings(lines)
for _, line := range lines {
content = append(content, line)
sort.Sort(formations)
for _, formation := range formations {
content = append(content, fmt.Sprintf("%s=%d", formation.ProcessType, formation.Quantity))
}
for _, line := range content {

View File

@@ -24,6 +24,25 @@ var (
}
)
type FormationSlice []*Formation
type Formation struct {
ProcessType string `json:"process_type"`
Quantity int `json:"quantity"`
}
func (d FormationSlice) Len() int {
return len(d)
}
func (d FormationSlice) Swap(i, j int) {
d[i], d[j] = d[j], d[i]
}
func (d FormationSlice) Less(i, j int) bool {
return d[i].ProcessType < d[j].ProcessType
}
// Rebuild rebuilds app from base image
func Rebuild(appName string) error {
return common.PlugnTrigger("receive-app", []string{appName}...)