Make sorting compatible with go >= 1.6

This commit is contained in:
Nathan Chan
2017-12-11 09:54:55 -08:00
parent c240b05369
commit fc904827cd

12
harness/build.go Executable file → Normal file
View File

@@ -23,6 +23,12 @@ import (
var importErrorPattern = regexp.MustCompile("cannot find package \"([^\"]+)\"") var importErrorPattern = regexp.MustCompile("cannot find package \"([^\"]+)\"")
type ByString []*TypeInfo
func (c ByString) Len() int { return len(c) }
func (c ByString) Swap(i, j int) { c[i], c[j] = c[j], c[i] }
func (c ByString) Less(i, j int) bool { return c[i].String() < c[j].String() }
// Build the app: // Build the app:
// 1. Generate the the main.go file. // 1. Generate the the main.go file.
// 2. Run the appropriate "go build" command. // 2. Run the appropriate "go build" command.
@@ -39,16 +45,16 @@ func Build(buildFlags ...string) (app *App, compileError *revel.Error) {
// Add the db.import to the import paths. // Add the db.import to the import paths.
if dbImportPath, found := revel.Config.String("db.import"); found { if dbImportPath, found := revel.Config.String("db.import"); found {
sourceInfo.InitImportPaths = append(sourceInfo.InitImportPaths, strings.Split(dbImportPath,",")...) sourceInfo.InitImportPaths = append(sourceInfo.InitImportPaths, strings.Split(dbImportPath, ",")...)
} }
// Sort controllers so that file generation is reproducible // Sort controllers so that file generation is reproducible
controllers := sourceInfo.ControllerSpecs() controllers := sourceInfo.ControllerSpecs()
sort.SliceStable(controllers, func(i, j int) bool { return controllers[i].String() < controllers[j].String() }) sort.Stable(ByString(controllers))
// Generate two source files. // Generate two source files.
templateArgs := map[string]interface{}{ templateArgs := map[string]interface{}{
"Controllers": sourceInfo.ControllerSpecs(), "Controllers": controllers,
"ValidationKeys": sourceInfo.ValidationKeys, "ValidationKeys": sourceInfo.ValidationKeys,
"ImportPaths": calcImportAliases(sourceInfo), "ImportPaths": calcImportAliases(sourceInfo),
"TestSuites": sourceInfo.TestSuites(), "TestSuites": sourceInfo.TestSuites(),