diff --git a/helpers/README.md b/helpers/README.md index d34dbe3..336e43f 100644 --- a/helpers/README.md +++ b/helpers/README.md @@ -49,4 +49,42 @@ positional arguments: options: -h, --help show this help message and exit + +## save + +`save` is a "tee-like" utility to pipeline saving of content, while keeping the output stream intact. Can optionally generate "frontmatter" for PKM utilities like Obsidian via the +"FABRIC_FRONTMATTER" environment variable + +### Environment Variables + +If you'd like to default variables, set them in `~/.config/fabric/.env`. `FABRIC_OUTPUT_PATH` needs to be set so `save` where to write. `FABRIC_FRONTMATTER_TAGS` is optional, but useful for tracking how tags have entered your PKM, if that's important to you. + +### usage +```bash +usage: save [-h] [-t, TAG] [-n] [-s] [stub] + +save: a "tee-like" utility to pipeline saving of content, while keeping the output stream intact. Can optionally generate "frontmatter" for PKM utilities like Obsidian via the +"FABRIC_FRONTMATTER" environment variable + +positional arguments: + stub stub to describe your content. Use quotes if you have spaces. Resulting format is YYYY-MM-DD-stub.md by default + +options: + -h, --help show this help message and exit + -t, TAG, --tag TAG add an additional frontmatter tag. Use this argument multiple timesfor multiple tags + -n, --nofabric don't use the fabric tags, only use tags from --tag + -s, --silent don't use STDOUT for output, only save to the file +``` +### example + +```bash +echo test | save --tag extra-tag stub-for-name +test + +$ cat ~/obsidian/Fabric/2024-03-02-stub-for-name.md +--- +generation_date: 2024-03-02 10:43 +tags: fabric-extraction stub-for-name extra-tag +--- +test ``` diff --git a/helpers/save b/helpers/save.py similarity index 89% rename from helpers/save rename to helpers/save.py index 7b2c443..9c67744 100755 --- a/helpers/save +++ b/helpers/save.py @@ -13,7 +13,7 @@ DATE_FORMAT = "%Y-%m-%d" load_dotenv(os.path.expanduser(DEFAULT_CONFIG)) -def main(tag, tags, fabric): +def main(tag, tags, silent, fabric): out = os.getenv(PATH_KEY) if out is None: print(f"'{PATH_KEY}' not set in {DEFAULT_CONFIG} or in your environment.") @@ -62,11 +62,12 @@ def main(tag, tags, fabric): # function like 'tee' and split the output to a file and STDOUT for line in sys.stdin: - print(line, end="") + if not silent: + print(line, end="") fp.write(line) -if __name__ == "__main__": +def cli(): parser = argparse.ArgumentParser( description=( 'save: a "tee-like" utility to pipeline saving of content, ' @@ -101,9 +102,20 @@ if __name__ == "__main__": action="store_false", help="don't use the fabric tags, only use tags from --tag", ) + parser.add_argument( + "-s", + "--silent", + required=False, + action="store_true", + help="don't use STDOUT for output, only save to the file", + ) args = parser.parse_args() if args.stub: - main(args.stub, args.tag, args.nofabric) + main(args.stub, args.tag, args.silent, args.nofabric) else: parser.print_help() + + +if __name__ == "__main__": + cli() diff --git a/pyproject.toml b/pyproject.toml index ae76970..457181e 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -62,3 +62,4 @@ fabric-api = 'installer:run_api_server' fabric-webui = 'installer:run_webui_server' ts = 'helpers.ts:main' yt = 'helpers.yt:main' +save = 'helpers.save:cli'