diff --git a/.github/workflows/release-macos.yml b/.github/workflows/release-macos.yml index 9d860580..43d2353a 100644 --- a/.github/workflows/release-macos.yml +++ b/.github/workflows/release-macos.yml @@ -13,7 +13,9 @@ jobs: run: | echo "Downloading latest artifacts..." ARTIFACT_URL="https://api.github.com/repos/YaoApp/yao/actions/artifacts" - ARTIFACTS=$(curl -s -H "Accept: application/vnd.github.v3+json" $ARTIFACT_URL | jq -r '.artifacts[] | select(.name | contains("yao-macos")) | .id') + ARTIFACT_CONTENT=$(curl -s -H "Accept: application/vnd.github.v3+json" $ARTIFACT_URL) + echo $ARTIFACT_CONTENT + ARTIFACTS=$(echo $ARTIFACT_CONTENT | jq -r '.artifacts[] | select(.name | contains("yao-macos")) | .id') for id in $ARTIFACTS; do echo "https://api.github.com/repos/YaoApp/yao/actions/artifacts/$id/zip" curl -L -H "Accept: application/vnd.github.v3+json" \ diff --git a/cmd/migrate.go b/cmd/migrate.go index e8bf2de7..3ebf0a8c 100644 --- a/cmd/migrate.go +++ b/cmd/migrate.go @@ -7,6 +7,7 @@ import ( "github.com/fatih/color" "github.com/spf13/cobra" "github.com/yaoapp/gou/model" + "github.com/yaoapp/gou/process" "github.com/yaoapp/kun/exception" "github.com/yaoapp/yao/config" "github.com/yaoapp/yao/engine" @@ -88,6 +89,21 @@ var migrateCmd = &cobra.Command{ fmt.Printf(color.GreenString(L("SUCCESS")) + "\n") } + // After Migrate Hook + if share.App.AfterMigrate != "" { + option := map[string]any{"force": force, "reset": resetModel, "mode": config.Conf.Mode} + p, err := process.Of(share.App.AfterMigrate, option) + if err != nil { + fmt.Println(color.RedString(L("AfterMigrate: %s %v"), share.App.AfterMigrate, err)) + return + } + + _, err = p.Exec() + if err != nil { + fmt.Println(color.RedString(L("AfterMigrate: %s %v"), share.App.AfterMigrate, err)) + } + } + // fmt.Println(color.GreenString(L("✨DONE✨"))) }, } diff --git a/share/types.go b/share/types.go index e9d897a2..10c5a12a 100644 --- a/share/types.go +++ b/share/types.go @@ -71,20 +71,21 @@ type Page struct { // AppInfo 应用信息 type AppInfo struct { - Name string `json:"name,omitempty"` - L map[string]string `json:"-"` - Short string `json:"short,omitempty"` - Version string `json:"version,omitempty"` - Description string `json:"description,omitempty"` - Icons maps.MapStrSync `json:"icons,omitempty"` - Storage AppStorage `json:"storage,omitempty"` - Option map[string]interface{} `json:"option,omitempty"` - XGen string `json:"xgen,omitempty"` - AdminRoot string `json:"adminRoot,omitempty"` - Static Static `json:"public,omitempty"` - Optional map[string]interface{} `json:"optional,omitempty"` - Moapi Moapi `json:"moapi,omitempty"` - AfterLoad string `json:"afterLoad,omitempty"` // Process executed after the app is loaded + Name string `json:"name,omitempty"` + L map[string]string `json:"-"` + Short string `json:"short,omitempty"` + Version string `json:"version,omitempty"` + Description string `json:"description,omitempty"` + Icons maps.MapStrSync `json:"icons,omitempty"` + Storage AppStorage `json:"storage,omitempty"` + Option map[string]interface{} `json:"option,omitempty"` + XGen string `json:"xgen,omitempty"` + AdminRoot string `json:"adminRoot,omitempty"` + Static Static `json:"public,omitempty"` + Optional map[string]interface{} `json:"optional,omitempty"` + Moapi Moapi `json:"moapi,omitempty"` + AfterLoad string `json:"afterLoad,omitempty"` // Process executed after the app is loaded + AfterMigrate string `json:"afterMigrate,omitempty"` // Process executed after the app is migrated } // Moapi AIGC App Store API