1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63
|
// Copyright (c) Microsoft Corporation. All rights reserved.
// Licensed under the MIT License. See License.txt in the project root for license information.
package common
import (
"fmt"
"path/filepath"
"regexp"
"github.com/Azure/azure-sdk-for-go/eng/tools/generator/repo"
)
var (
commitIDRegex = regexp.MustCompile("^[0-9a-f]{40}$")
)
func GetSDKRepo(sdkRepoParam, sdkRepoURL string) (repo.SDKRepository, error) {
var err error
var sdkRepo repo.SDKRepository
// create sdk git repo ref
if commitIDRegex.Match([]byte(sdkRepoParam)) {
sdkRepo, err = repo.CloneSDKRepository(sdkRepoURL, sdkRepoParam)
if err != nil {
return nil, fmt.Errorf("failed to get sdk repo: %+v", err)
}
} else {
path, err := filepath.Abs(sdkRepoParam)
if err != nil {
return nil, fmt.Errorf("failed to get the directory of azure-sdk-for-go: %v", err)
}
sdkRepo, err = repo.OpenSDKRepository(path)
if err != nil {
return nil, fmt.Errorf("failed to get sdk repo: %+v", err)
}
}
return sdkRepo, nil
}
func GetSpecCommit(specRepoParam string) (string, error) {
specCommitHash := ""
// create spec git repo ref
if commitIDRegex.Match([]byte(specRepoParam)) {
specCommitHash = specRepoParam
} else {
path, err := filepath.Abs(specRepoParam)
if err != nil {
return "", fmt.Errorf("failed to get the directory of azure-rest-api-specs: %v", err)
}
specRepo, err := repo.OpenSpecRepository(path)
if err != nil {
return "", fmt.Errorf("failed to get spec repo: %+v", err)
}
specHeader, err := specRepo.Head()
if err != nil {
return "", fmt.Errorf("failed to get HEAD ref of azure-rest-api-specs: %+v", err)
}
specCommitHash = specHeader.Hash().String()
}
return specCommitHash, nil
}
|