centraldogma
centraldogma copied to clipboard
Provide an easy way to import a directory into Central Dogma programmatically
A user often needs to import the files in a filesytem into Central Dogma for testing. At the moment, a user need to create a project and a repository, build a commit and push it using the client API. Their life could be simplified a lot by providing the APIs like the following:
public interface CentralDogma {
// Imports the files in the given directory into Central Dogma.
// First component in the path becomes the project name.
// Second component in the path becomes the repository name.
// e.g. foo/bar/alice.json will create a new project 'foo' and
// a new repository 'bar' under the project 'foo', and
// add 'alice.json' to the root directory of the repository 'bar'.
//
// Placeholder files like '.keep' and '.gitkeep' could be ignored automatically.
CompletableFuture<ImportResult> importDir(Path dir);
CompletableFuture<ImportResult> importResourceDir(String dir);
CompletableFuture<ImportResult> importResourceDir(String dir, ClassLoader classLoader);
}
public interface CentralDogmaRepository {
// Imports the files in the given directory into the repository.
// Placeholder files like '.keep' and '.gitkeep' could be ignored automatically.
CompletableFuture<ImportResult> importDir(Path dir);
CompletableFuture<ImportResult> importResourceDir(String dir);
CompletableFuture<ImportResult> importResourceDir(String dir, ClassLoader classLoader);
}