feat: read repository base URL from workflow vars
This commit is contained in:
@@ -126,6 +126,7 @@ runs:
|
|||||||
env:
|
env:
|
||||||
VOCIFERATE_BIN: ${{ steps.resolve-binary.outputs.binary_path }}
|
VOCIFERATE_BIN: ${{ steps.resolve-binary.outputs.binary_path }}
|
||||||
USE_BINARY: ${{ steps.resolve-binary.outputs.use_binary }}
|
USE_BINARY: ${{ steps.resolve-binary.outputs.use_binary }}
|
||||||
|
VOCIFERATE_REPOSITORY_URL: ${{ vars.VOCIFERATE_REPOSITORY_URL }}
|
||||||
run: |
|
run: |
|
||||||
set -euo pipefail
|
set -euo pipefail
|
||||||
|
|
||||||
|
|||||||
@@ -337,10 +337,13 @@ func readLatestChangelogVersion(rootDir, changelogPath string) (string, bool, er
|
|||||||
func deriveRepositoryURL(rootDir string) (string, bool) {
|
func deriveRepositoryURL(rootDir string) (string, bool) {
|
||||||
override := strings.TrimSpace(os.Getenv("VOCIFERATE_REPOSITORY_URL"))
|
override := strings.TrimSpace(os.Getenv("VOCIFERATE_REPOSITORY_URL"))
|
||||||
if override != "" {
|
if override != "" {
|
||||||
if normalized, ok := normalizeRepoURL(override); ok {
|
repositoryPath, ok := deriveRepositoryPath(rootDir)
|
||||||
return normalized, true
|
if !ok {
|
||||||
|
return "", false
|
||||||
}
|
}
|
||||||
return strings.TrimSuffix(override, "/"), true
|
|
||||||
|
baseURL := strings.TrimSuffix(strings.TrimSpace(override), "/")
|
||||||
|
return baseURL + "/" + repositoryPath, true
|
||||||
}
|
}
|
||||||
|
|
||||||
serverURL := strings.TrimSpace(os.Getenv("GITHUB_SERVER_URL"))
|
serverURL := strings.TrimSpace(os.Getenv("GITHUB_SERVER_URL"))
|
||||||
@@ -368,6 +371,38 @@ func deriveRepositoryURL(rootDir string) (string, bool) {
|
|||||||
return repoURL, true
|
return repoURL, true
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func deriveRepositoryPath(rootDir string) (string, bool) {
|
||||||
|
repository := strings.TrimSpace(os.Getenv("GITHUB_REPOSITORY"))
|
||||||
|
if repository != "" {
|
||||||
|
return strings.TrimPrefix(repository, "/"), true
|
||||||
|
}
|
||||||
|
|
||||||
|
gitConfigPath := filepath.Join(rootDir, ".git", "config")
|
||||||
|
contents, err := os.ReadFile(gitConfigPath)
|
||||||
|
if err != nil {
|
||||||
|
return "", false
|
||||||
|
}
|
||||||
|
|
||||||
|
remoteURL, ok := originRemoteURLFromGitConfig(string(contents))
|
||||||
|
if !ok {
|
||||||
|
return "", false
|
||||||
|
}
|
||||||
|
|
||||||
|
repoURL, ok := normalizeRepoURL(remoteURL)
|
||||||
|
if !ok {
|
||||||
|
return "", false
|
||||||
|
}
|
||||||
|
|
||||||
|
parsedURL := strings.TrimPrefix(repoURL, "https://")
|
||||||
|
parsedURL = strings.TrimPrefix(parsedURL, "http://")
|
||||||
|
slash := strings.Index(parsedURL, "/")
|
||||||
|
if slash == -1 || slash == len(parsedURL)-1 {
|
||||||
|
return "", false
|
||||||
|
}
|
||||||
|
|
||||||
|
return parsedURL[slash+1:], true
|
||||||
|
}
|
||||||
|
|
||||||
func originRemoteURLFromGitConfig(config string) (string, bool) {
|
func originRemoteURLFromGitConfig(config string) (string, bool) {
|
||||||
inOrigin := false
|
inOrigin := false
|
||||||
for _, line := range strings.Split(config, "\n") {
|
for _, line := range strings.Split(config, "\n") {
|
||||||
@@ -403,7 +438,8 @@ func normalizeRepoURL(remoteURL string) (string, bool) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
if strings.HasPrefix(remoteURL, "http://") || strings.HasPrefix(remoteURL, "https://") {
|
if strings.HasPrefix(remoteURL, "http://") || strings.HasPrefix(remoteURL, "https://") {
|
||||||
return strings.TrimSuffix(remoteURL, ".git"), true
|
normalized := strings.TrimSuffix(strings.TrimSuffix(remoteURL, "/"), ".git")
|
||||||
|
return normalized, true
|
||||||
}
|
}
|
||||||
|
|
||||||
if strings.HasPrefix(remoteURL, "ssh://") {
|
if strings.HasPrefix(remoteURL, "ssh://") {
|
||||||
|
|||||||
@@ -142,6 +142,7 @@ runs:
|
|||||||
VOCIFERATE_BIN: ${{ steps.resolve-binary.outputs.binary_path }}
|
VOCIFERATE_BIN: ${{ steps.resolve-binary.outputs.binary_path }}
|
||||||
USE_BINARY: ${{ steps.resolve-binary.outputs.use_binary }}
|
USE_BINARY: ${{ steps.resolve-binary.outputs.use_binary }}
|
||||||
INPUT_VERSION: ${{ inputs.version }}
|
INPUT_VERSION: ${{ inputs.version }}
|
||||||
|
VOCIFERATE_REPOSITORY_URL: ${{ vars.VOCIFERATE_REPOSITORY_URL }}
|
||||||
run: |
|
run: |
|
||||||
set -euo pipefail
|
set -euo pipefail
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user