DodoApp: Support PHP 8.2

Change-Id: I7cfe082c66a0efe0b3b9c85433a96623466ced5c
diff --git a/core/installer/welcome/app_tmpl.go b/core/installer/welcome/app_tmpl.go
index dae56f8..33f8d8d 100644
--- a/core/installer/welcome/app_tmpl.go
+++ b/core/installer/welcome/app_tmpl.go
@@ -4,6 +4,7 @@
 	"fmt"
 	"io"
 	"io/fs"
+	"sort"
 	"strings"
 	"text/template"
 
@@ -46,6 +47,16 @@
 	for t := range s.tmpls {
 		ret = append(ret, t)
 	}
+	sort.Slice(ret, func(i, j int) bool {
+		a := strings.SplitN(ret[i], ":", 2)
+		b := strings.SplitN(ret[j], ":", 2)
+		langCmp := strings.Compare(a[0], b[0])
+		if langCmp != 0 {
+			return langCmp < 0
+		}
+		// TODO(gio): compare semver?
+		return strings.Compare(a[1], b[1]) > 0
+	})
 	return ret
 }