Open cppforlife opened 3 years ago
Running into this same issue with kbld
. The bundle pulled using imgpkg
has the .imgpkg
contents. If running a kbld -f ... | kapp deploy -a simple-app -f-
, the following error is thrown:
kapp: Error: Expected to find kind 'imgpkg.carvel.dev/v1alpha1/Bundle', but did not:
- Kubernetes API server did not have matching apiVersion + kind
- No matching CRD was found in given configuration
For the main use-cases we're targeting, this seems like a sensible default.
Let's add a flag to include hidden files: -a, --all-files Include all files (including hidden files) when scanning for files
-f
should obviously allow hidden files, if specified explicitly.
Just to see if I understand clearly
ytt -f config/*
This command will only include files that are not hidden
ytt -a -f config/*
This command will include all the files in the directory, including the hidden ones
Is this correct?
Can y'll please review these acceptance criteria to ensure they match our view of the feature
Scenario: Ignore hidden folders
Given I have a folder that contains YAML files
And Also contains a hidden folder (sample below)
When I invoke ytt -f config
Then the output contains only the files that aren't hidden
rendered: always
Scenario: Use hidden folders with a short flag
Given I have a folder that contains YAML files
And Also contains a hidden folder (sample below)
When I invoke ytt -a -f config
Then the output contains only the files in all the folders
hidden: content
---
rendered: always
Scenario: Use hidden folders with the full flag
Given I have a folder that contains YAML files
And Also contains a hidden folder (sample below)
When I invoke ytt --a-files -f config
Then the output contains only the files in all the folders
hidden: content
---
rendered: always
Scenario: Help displayed
Given I have a ytt
When I invoke ytt --help
Then I should see the output
......
Flags:
-a, --all-files Include all files (including hidden files) when scanning for files
--allow-symlink-destination strings File paths to which symlinks are allowed (can be specified multiple times)
--bulk-in string Accept files in bulk format
.....
$ tree -a config
config
├── .hidden
│ └── some-other-file.yml
└── some-file.yml
1 directory, 2 files
$ cat config/some-file.yml
---
rendered: always
$ cat config/.hidden/some-other-file.yml
---
hidden: content
I wonder if this story should be more general as far as what the idea is (i.e. ignore hidden files by default and support an option to allow hidden files) for all Carvel tools where applicable. I think it's possible that this should apply to kbld
and kapp
as well. The idea is so similar for each tool that I feel it can be written as a single idea first, and we should also consider where else this is applicable before moving forward. This way, the idea will be consistent where applicable across the tools, which has been a criticism in the past.
im still not quite sold on the feature tbh (also it's would be backwards incompat). i think this might be a good issue to discuss in community meeting.
(will come back, add link and fill out a few more details)
We talked about this in the December 9, 2020 Community Meeting (recording failed).
For now, we will:
ytt
somehow knowing about implementation details imgpkg
, first-hand).It will be great to have the ability to exclude something with .yttignore
. Like .gitignore
but for ytt.
there is probably a common case for ignoring hidden directories by default.
common case within carvel tools might be: imgpkg pull results in a directory with .imgpkg directory. if bundle's files arent wrapped within a directory (eg config), then running
ytt -f .
would include.imgpkg/*.yml
which isnt really desired within templates.another example: currently ytt -f . that includes .git directory actually makes .git files available via data.read and friends. it just happens that there is no .yml files within .git by default.
what other examples of hidden directories ytt may encounter? it might be worth adding a way to control this behaviour?