1
0
mirror of https://github.com/open-telemetry/opentelemetry-go.git synced 2024-12-12 10:04:29 +02:00

Moved internal/tools duplicated findRepoRoot function to common package (#1978)

* Moved internal/tools duplicated findRepoRoot function to common package

Created a package under "go.opentelemetry.io/otel/internal/tools/common" with func FindRepoRoot() to return string. Added a line in crosslink to convert outputted string to type repo.

* Removed debugging line

Co-authored-by: Anthony Mirabella <a9@aneurysm9.com>

* Added changelog stub

* Update CHANGELOG.md

* Removed change log entry

* Updated docstring for FindRepoPath()

* Change tools/common package to tools

* Added back "errors" import to generator.go

Co-authored-by: Anthony Mirabella <a9@aneurysm9.com>
This commit is contained in:
Eddy Lin 2021-06-10 14:29:56 -04:00 committed by GitHub
parent cdf67ddfa3
commit 135ac4b6f9
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 65 additions and 57 deletions

57
internal/tools/common.go Normal file
View File

@ -0,0 +1,57 @@
// Copyright The OpenTelemetry Authors
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
// Package tools provides helper functions used in scripts within the
// internal/tools module, as well as imports needed for a build with the
// "tools" build tag.
package tools
import (
"errors"
"fmt"
"os"
"path/filepath"
"strings"
)
// FindRepoRoot retrieves the root of the repository containing the current working directory.
// Beginning at the current working directory (dir), the algorithm checks if joining the ".git"
// suffix, such as "dir.get", is a valid file. Otherwise, it will continue checking the dir's
// parent directory until it reaches the repo root or returns an error if it cannot be found.
func FindRepoRoot() (string, error) {
start, err := os.Getwd()
if err != nil {
return "", err
}
dir := start
for {
_, err := os.Stat(filepath.Join(dir, ".git"))
if errors.Is(err, os.ErrNotExist) {
dir = filepath.Dir(dir)
// From https://golang.org/pkg/path/filepath/#Dir:
// The returned path does not end in a separator unless it is the root directory.
if strings.HasSuffix(dir, string(filepath.Separator)) {
return "", fmt.Errorf("unable to find git repository enclosing working dir %s", start)
}
continue
}
if err != nil {
return "", err
}
return dir, nil
}
}

View File

@ -35,37 +35,12 @@ import (
"path/filepath"
"strings"
"text/tabwriter"
"go.opentelemetry.io/otel/internal/tools"
)
type repo string
func findRepoRoot() (repo, error) {
start, err := os.Getwd()
if err != nil {
return "", err
}
dir := start
for {
_, err := os.Stat(filepath.Join(dir, ".git"))
if errors.Is(err, os.ErrNotExist) {
dir = filepath.Dir(dir)
// From https://golang.org/pkg/path/filepath/#Dir:
// The returned path does not end in a separator unless it is the root directory.
if strings.HasSuffix(dir, string(filepath.Separator)) {
return "", fmt.Errorf("unable to find git repository enclosing working dir %s", start)
}
continue
}
if err != nil {
return "", err
}
return repo(dir), nil
}
}
type mod struct {
filePath string
importPath string
@ -157,11 +132,13 @@ func (m mods) crossLink() error {
}
func main() {
repoRoot, err := findRepoRoot()
repoRootStr, err := tools.FindRepoRoot()
if err != nil {
log.Fatalf("unable to find repo root: %v", err)
}
repoRoot := repo(repoRootStr)
mods, err := repoRoot.findModules()
if err != nil {
log.Fatalf("unable to list modules: %v", err)

View File

@ -23,13 +23,14 @@ import (
"os"
"os/exec"
"path"
"path/filepath"
"regexp"
"sort"
"strings"
flag "github.com/spf13/pflag"
"golang.org/x/mod/semver"
"go.opentelemetry.io/otel/internal/tools"
)
func main() {
@ -102,7 +103,7 @@ func validateConfig(cfg config) (config, error) {
}
if !path.IsAbs(cfg.outputPath) {
root, err := findRepoRoot()
root, err := tools.FindRepoRoot()
if err != nil {
return config{}, err
}
@ -257,33 +258,6 @@ func checkoutSpecToDir(cfg config, toDir string) (doneFunc func(), err error) {
return doneFunc, nil
}
func findRepoRoot() (string, error) {
start, err := os.Getwd()
if err != nil {
return "", err
}
dir := start
for {
_, err := os.Stat(filepath.Join(dir, ".git"))
if errors.Is(err, os.ErrNotExist) {
dir = filepath.Dir(dir)
// From https://golang.org/pkg/path/filepath/#Dir:
// The returned path does not end in a separator unless it is the root directory.
if strings.HasSuffix(dir, string(filepath.Separator)) {
return "", fmt.Errorf("unable to find git repository enclosing working dir %s", start)
}
continue
}
if err != nil {
return "", err
}
return dir, nil
}
}
var capitalizations = []string{
"ACL",
"AIX",