Ver código fonte

Update Makefile

世界 2 anos atrás
pai
commit
ea3731162b

+ 9 - 1
Makefile

@@ -69,13 +69,17 @@ release_install:
 	go install -v github.com/goreleaser/goreleaser@latest
 	go install -v github.com/tcnksm/ghr@latest
 
-upload_android:
+update_android_version:
 	go run ./cmd/internal/update_android_version
+
+upload_android:
 	cd ../sing-box-for-android && ./gradlew :app:assembleRelease
 	mkdir dist/release_android
 	cp ../sing-box-for-android/app/build/outputs/apk/release/*.apk dist/release_android
 	ghr --replace --draft --prerelease -p 3 "v${VERSION}" dist/release_android
 
+release_android: lib_android update_android_version upload_android
+
 publish_android:
 	cd ../sing-box-for-android && ./gradlew :app:appCenterAssembleAndUploadRelease
 
@@ -140,6 +144,10 @@ update_apple_version:
 
 release_apple: update_apple_version release_ios release_macos release_macos_independent release_tvos
 
+build_apple_beta: update_apple_version build_ios build_macos build_tvos
+
+upload_apple_beta: upload_ios_app_store upload_macos_app_store upload_tvos_app_store
+
 test:
 	@go test -v ./... && \
 	cd test && \

+ 10 - 6
cmd/internal/build_shared/tag.go

@@ -2,6 +2,7 @@ package build_shared
 
 import (
 	"github.com/sagernet/sing-box/common/badversion"
+	"github.com/sagernet/sing/common"
 	"github.com/sagernet/sing/common/shell"
 )
 
@@ -22,11 +23,14 @@ func ReadTag() (string, error) {
 	return version.String() + "-" + shortCommit, nil
 }
 
-func ReadTagVersion() (string, error) {
-	currentTagRev, err := shell.Exec("git", "describe", "--tags", "--abbrev=0").ReadOutput()
-	if err != nil {
-		return "", err
-	}
+func ReadTagVersion() (badversion.Version, error) {
+	currentTag := common.Must1(shell.Exec("git", "describe", "--tags").ReadOutput())
+	currentTagRev := common.Must1(shell.Exec("git", "describe", "--tags", "--abbrev=0").ReadOutput())
 	version := badversion.Parse(currentTagRev[1:])
-	return version.VersionString(), nil
+	if currentTagRev != currentTag {
+		if version.PreReleaseIdentifier == "" {
+			version.Patch++
+		}
+	}
+	return version, nil
 }

+ 5 - 5
cmd/internal/update_android_version/main.go

@@ -12,7 +12,7 @@ import (
 )
 
 func main() {
-	newTag := common.Must1(build_shared.ReadTag())
+	newVersion := common.Must1(build_shared.ReadTagVersion())
 	androidPath, err := filepath.Abs("../sing-box-for-android")
 	if err != nil {
 		log.Fatal(err)
@@ -25,12 +25,12 @@ func main() {
 	}
 	for _, propPair := range propsList {
 		if propPair[0] == "VERSION_NAME" {
-			if propPair[1] == newTag {
+			if propPair[1] == newVersion.String() {
 				log.Info("version not changed")
 				return
 			}
-			propPair[1] = newTag
-			log.Info("updated version to ", newTag)
+			propPair[1] = newVersion.String()
+			log.Info("updated version to ", newVersion.String())
 		}
 	}
 	for _, propPair := range propsList {
@@ -40,7 +40,7 @@ func main() {
 			propPair[1] = strconv.Itoa(int(versionCode + 1))
 			log.Info("updated version code to ", propPair[1])
 		case "RELEASE_NOTES":
-			propPair[1] = "sing-box " + newTag
+			propPair[1] = "sing-box " + newVersion.String()
 		}
 	}
 	var newProps []string

+ 8 - 5
cmd/internal/update_apple_version/main.go

@@ -15,7 +15,6 @@ import (
 
 func main() {
 	newVersion := common.Must1(build_shared.ReadTagVersion())
-	newTag := common.Must1(build_shared.ReadTag())
 	applePath, err := filepath.Abs("../sing-box-for-apple")
 	if err != nil {
 		log.Fatal(err)
@@ -27,10 +26,10 @@ func main() {
 	common.Must(decoder.Decode(&project))
 	objectsMap := project["objects"].(map[string]any)
 	projectContent := string(common.Must1(os.ReadFile("sing-box.xcodeproj/project.pbxproj")))
-	newContent, updated0 := findAndReplace(objectsMap, projectContent, []string{"io.nekohasekai.sfa"}, newVersion)
-	newContent, updated1 := findAndReplace(objectsMap, newContent, []string{"io.nekohasekai.sfa.independent", "io.nekohasekai.sfa.system"}, newTag)
+	newContent, updated0 := findAndReplace(objectsMap, projectContent, []string{"io.nekohasekai.sfa"}, newVersion.VersionString())
+	newContent, updated1 := findAndReplace(objectsMap, newContent, []string{"io.nekohasekai.sfa.independent", "io.nekohasekai.sfa.system"}, newVersion.String())
 	if updated0 || updated1 {
-		log.Info("updated version to ", newTag)
+		log.Info("updated version to ", newVersion.VersionString())
 		common.Must(os.WriteFile("sing-box.xcodeproj/project.pbxproj.bak", []byte(projectContent), 0o644))
 		common.Must(os.WriteFile("sing-box.xcodeproj/project.pbxproj", []byte(newContent), 0o644))
 	} else {
@@ -44,6 +43,10 @@ func findAndReplace(objectsMap map[string]any, projectContent string, bundleIDLi
 	for _, objectKey := range objectKeyList {
 		matchRegexp := common.Must1(regexp.Compile(objectKey + ".*= \\{"))
 		indexes := matchRegexp.FindStringIndex(projectContent)
+		if len(indexes) < 2 {
+			println(projectContent)
+			log.Fatal("failed to find object key ", objectKey, ": ", strings.Index(projectContent, objectKey))
+		}
 		indexStart := indexes[1]
 		indexEnd := indexStart + strings.Index(projectContent[indexStart:], "}")
 		versionStart := indexStart + strings.Index(projectContent[indexStart:indexEnd], "MARKETING_VERSION = ") + 20
@@ -53,7 +56,7 @@ func findAndReplace(objectsMap map[string]any, projectContent string, bundleIDLi
 			continue
 		}
 		updated = true
-		projectContent = projectContent[indexStart:versionStart] + newVersion + projectContent[versionEnd:indexEnd]
+		projectContent = projectContent[:versionStart] + newVersion + projectContent[versionEnd:]
 	}
 	return projectContent, updated
 }