databricks-cli/libs
Pieter Noordhuis 424499ec1d
Abstract over filesystem interaction with libs/vfs (#1452)
## Changes

Introduce `libs/vfs` for an implementation of `fs.FS` and friends that
_includes_ the absolute path it is anchored to.

This is needed for:
1. Intercepting file operations to inject custom logic (e.g., logging,
access control).
2. Traversing directories to find specific leaf directories (e.g.,
`.git`).
3. Converting virtual paths to OS-native paths.

Options 2 and 3 are not possible with the standard `fs.FS` interface.
They are needed such that we can provide an instance to the sync package
and still detect the containing `.git` directory and convert paths to
native paths.

This change focuses on making the following packages use `vfs.Path`:
* libs/fileset
* libs/git
* libs/sync

All entries returned by `fileset.All` are now slash-separated. This has
2 consequences:
* The sync snapshot now always uses slash-separated paths
* We don't need to call `filepath.FromSlash` as much as we did

## Tests

* All unit tests pass
* All integration tests pass
* Manually confirmed that a deployment made on Windows by a previous
version of the CLI can be deployed by a new version of the CLI while
retaining the validity of the local sync snapshot as well as the remote
deployment state.
2024-05-30 07:41:50 +00:00
..
auth Improve token refresh flow (#1434) 2024-05-16 10:22:09 +00:00
cmdgroup Add trailing newline in usage string (#1382) 2024-04-19 14:12:52 +00:00
cmdio Added `auth describe` command (#1244) 2024-04-03 08:14:04 +00:00
databrickscfg Improve token refresh flow (#1434) 2024-05-16 10:22:09 +00:00
diag Make bundle validation print text output by default (#1335) 2024-04-03 15:33:43 +00:00
dyn Fix conversion of zero valued scalar pointers to a dynamic value (#1433) 2024-05-21 11:53:00 +00:00
env Fix `panic: $HOME is not set` (#1027) 2023-11-29 19:08:27 +00:00
errs Added ability for deferred mutator execution (#380) 2023-05-16 18:01:50 +02:00
exec Fixed building Python artifacts on Windows with WSL (#1249) 2024-03-01 15:59:47 +00:00
filer Remove unnecessary `filepath.FromSlash` calls (#1458) 2024-05-29 15:30:26 +00:00
fileset Abstract over filesystem interaction with libs/vfs (#1452) 2024-05-30 07:41:50 +00:00
flags Add override to support YAML inputs for apps (#921) 2023-10-27 18:57:26 +00:00
folders Move folders package into libs (#1184) 2024-02-07 16:33:18 +00:00
git Abstract over filesystem interaction with libs/vfs (#1452) 2024-05-30 07:41:50 +00:00
jsonschema Fix bundle schema for variables (#1396) 2024-04-25 11:23:50 +00:00
locker Correct name for force acquire deploy flag (#656) 2023-08-15 19:03:43 +00:00
log Rewrite the friendly log handler (#1038) 2023-12-01 12:17:04 +00:00
notebook Abstract over filesystem interaction with libs/vfs (#1452) 2024-05-30 07:41:50 +00:00
process Fix flaky test in `libs/process` (#1314) 2024-03-26 07:57:48 +00:00
python Added `python.DetectInterpreters` and other utils (#805) 2023-10-03 10:47:09 +00:00
set Added support for sync.include and sync.exclude sections (#671) 2023-08-18 08:07:25 +00:00
sync Abstract over filesystem interaction with libs/vfs (#1452) 2024-05-30 07:41:50 +00:00
tags Library to validate and normalize cloud specific tags (#819) 2023-09-29 08:49:08 +00:00
template Load bundle configuration from mutator (#1318) 2024-03-27 10:49:05 +00:00
terraform Add bundle destroy command (#300) 2023-04-06 12:54:58 +02:00
testfile Refactor and cover edge cases in sync integration tests (#160) 2023-01-10 13:16:30 +01:00
textutil Added `databricks bundle generate job` command (#1043) 2024-01-17 14:26:33 +00:00
vfs Abstract over filesystem interaction with libs/vfs (#1452) 2024-05-30 07:41:50 +00:00