Update Makefile

This commit is contained in:
世界 2023-08-30 17:35:40 +08:00
parent c75e32e722
commit ea3731162b
No known key found for this signature in database
GPG key ID: CD109927C34A63C4
4 changed files with 32 additions and 17 deletions

View file

@ -69,13 +69,17 @@ release_install:
go install -v github.com/goreleaser/goreleaser@latest go install -v github.com/goreleaser/goreleaser@latest
go install -v github.com/tcnksm/ghr@latest go install -v github.com/tcnksm/ghr@latest
upload_android: update_android_version:
go run ./cmd/internal/update_android_version go run ./cmd/internal/update_android_version
upload_android:
cd ../sing-box-for-android && ./gradlew :app:assembleRelease cd ../sing-box-for-android && ./gradlew :app:assembleRelease
mkdir dist/release_android mkdir dist/release_android
cp ../sing-box-for-android/app/build/outputs/apk/release/*.apk 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 ghr --replace --draft --prerelease -p 3 "v${VERSION}" dist/release_android
release_android: lib_android update_android_version upload_android
publish_android: publish_android:
cd ../sing-box-for-android && ./gradlew :app:appCenterAssembleAndUploadRelease 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 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: test:
@go test -v ./... && \ @go test -v ./... && \
cd test && \ cd test && \

View file

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

View file

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

View file

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