Vault Manifest management

Premise

Some remote vaults do not support directory listing. As such, one efficient way we've overcome this issue is by creating a conventional file called a Vault Manifest, tasked with listing all files in a vault, along with the path, size, SHA256 checksum, and any frontmatter associated within the file.

This is a process that is fully automated using the CLI Tool, and that we plan to also export to a GitHub Actions CI step in the near future.

Usage

Creating a manifest goes as follows:

moltenobsidian manifest generate "/path/to/vault/root/"

The given path will then be checked for the existence of the ./.obsidian/ folder, indicative of the presence of an Obsidian Vault. While the creation of a manifest is not contingent on the presence of this folder (as it will be ignored anyways), it is preferred, to ensure that an invalid path was not specified.
Nonetheless, if you're adamant on the location, you can bypass the checks by running the same command with the -f|--force argument, which will force the creation of a manifest, regardless of that validating folder's presence.

Ignored Files / Folders

Similarly, there may be cases where you need to output the manifest to a separate folder. In these edge cases, specifying the -o|--output <output-folder> argument will allow you to output the manifest in a different folder (all while retaining the conventionally contingent moltenobsidian.manifest.json filename).

Finally, if the default list of excluded folders/files is not sufficient, you can overwrite the list using the --exclude-folder and --exclude-file arguments. These can be invoked multiple times in the same command, like so:

moltenobsidian manifest generate "/path/to/vault/root" --exclude-folder ".obsidian" --exclude-folder ".git" --exclude-folder ".github"
moltenobsidian manifest generate "/path/to/vault/root" --exclude-file "my/secret/document.md" --exclude-file "secrets.json"

For reference, these are the default exclusions:

Entity Type Exclusions
Folders .obsidian .git .vs .vscode node_modules
Files .DS_STORE

Developer features

Some features of the manifest command are specifically oriented for development and automation purposes.
Here is a detailed account of some of the extra features baked into this command :

Flag Description Notes
--force Forces any existing manifest found at the output path to be overwritten.
--watch Continuously watches for changes and updates the manifest accordingly. Implicitly enables the --force flag.
--debug Prints out extra information, similar to a verbose flag.