package complete import ( "os" "path/filepath" "strings" ) // fixPathForm changes a file name to a relative name func fixPathForm(last string, file string) string { // get wording directory for relative name workDir, err := os.Getwd() if err != nil { return file } abs, err := filepath.Abs(file) if err != nil { return file } // if last is absolute, return path as absolute if filepath.IsAbs(last) { return fixDirPath(abs) } rel, err := filepath.Rel(workDir, abs) if err != nil { return file } // fix ./ prefix of path if rel != "." && strings.HasPrefix(last, ".") { rel = "./" + rel } return fixDirPath(rel) } func fixDirPath(path string) string { info, err := os.Stat(path) if err == nil && info.IsDir() && !strings.HasSuffix(path, "/") { path += "/" } return path }