// Copyright 2022 The Go Authors. All rights reserved.
// Use of this source code is governed by a BSD-style
// license that can be found in the LICENSE file.

package scan

import (
	"path/filepath"
	"strings"
)

// AbsRelShorter takes path and returns its path relative
// to the current directory, if shorter. Returns path
// when path is an empty string or upon any error.
func AbsRelShorter(path string) string {
	if path == "" {
		return ""
	}

	c, err := filepath.Abs(".")
	if err != nil {
		return path
	}
	r, err := filepath.Rel(c, path)
	if err != nil {
		return path
	}

	rSegments := strings.Split(r, string(filepath.Separator))
	pathSegments := strings.Split(path, string(filepath.Separator))
	if len(rSegments) < len(pathSegments) {
		return r
	}
	return path
}
