ytt icon indicating copy to clipboard operation
ytt copied to clipboard

Print full path rather than RelativePath only.

Open ernstvonoelsen opened this issue 1 year ago • 4 comments

targets resolution of carvel-dev/ytt/issues/895

This PR just switches to print each file's Description() rather than RelativePath(). In order to keep quoting consistent, some single quotes were removed.

ernstvonoelsen avatar Apr 08 '24 15:04 ernstvonoelsen

This is my first contribution to this project, I learned about it on last month's CloudNativeCon & KubeCon Europe in Paris.

I'm happy to receive any feedback on how to improve it.

ernstvonoelsen avatar Apr 08 '24 15:04 ernstvonoelsen

Hey @ernstvonoelsen , thanks for this. @prembhaskal will help with review of this PR.

renuy avatar Apr 19 '24 05:04 renuy

@ernstvonoelsen Could you please post some testing output if you have done? Does the description prints the absolute path now? I thought the main issue in #895 was that relative path calculation was incorrect when individual files with different path, but same name are input to ytt.

prembhaskal avatar Apr 19 '24 06:04 prembhaskal

@prembhaskal

console output from develop branch:

$ tree
.
├── directory_1
│   └── values.yaml
└── directory_2
    └── values.yaml

2 directories, 2 files
$ ytt -f directory_1/values.yaml -f directory_2/values.yaml 
ytt: Error: Unmarshaling YAML template 'values.yaml': yaml: line 3: could not find expected ':'

same test directory, but from issue-895 branch:

$ ytt -f directory_1/values.yaml -f directory_2/values.yaml 
ytt: Error: Unmarshaling YAML template 'file directory_1/values.yaml': yaml: line 3: could not find expected ':'

when called from one of the sub directories:

$ pwd
directory_1

$ ytt -f values.yaml -f ../directory_2/values.yaml 
ytt: Error: Unmarshaling YAML template 'file values.yaml': yaml: line 3: could not find expected ':'
$ pwd
directory_2

$ ytt -f values.yaml -f ../directory_1/values.yaml 
ytt: Error: Unmarshaling YAML template 'file ../directory_1/values.yaml': yaml: line 3: could not find expected ':'

From what I conclude from the existing code, each func Description() implementation in sources.go returns either

  • s.path for BytesSource
  • "stdin.yml" for StdinSource
  • fmt.Sprintf("file %s", s.path) for LocalSource
  • fmt.Sprint("HTTP URL %s, s.url) for HTTPSource

So Description() does not print the absolute path of each input file, but at least it prints a unique path to the invalid YAML file..

ernstvonoelsen avatar Apr 19 '24 16:04 ernstvonoelsen