Add example git hook

This commit is contained in:
2023-03-30 01:28:51 +02:00
parent 53712f76ce
commit 118425f994
4 changed files with 46 additions and 16 deletions

View File

@@ -75,30 +75,30 @@ HEADLESS loglevel only prints modified filenames.
*Notes: In Windows cmd use backward slashes as path separators, in any other shells use forward slashes. Powershell accepts both of them. Wrap paths with spaces in double quotes.* *Notes: In Windows cmd use backward slashes as path separators, in any other shells use forward slashes. Powershell accepts both of them. Wrap paths with spaces in double quotes.*
Extract all nodes next to a Dynamo file: ```shell
# Extract all nodes next to a Dynamo file:
```
dyn2py path/to/dynamofile.dyn dyn2py path/to/dynamofile.dyn
```
Update a Dynamo file from previously exported and modified python files: # Update a Dynamo file from previously exported and modified python files:
```
dyn2py --update path/to/dynamofile.dyn dyn2py --update path/to/dynamofile.dyn
```
Extract python nodes to a specific folder, process multiple Dynamo files: # Extract python nodes to a specific folder, process multiple Dynamo files:
```
dyn2py --python-folder path/to/pythonfiles path/to/dynamofile1.dyn path/to/dynamofile2.dyn dyn2py --python-folder path/to/pythonfiles path/to/dynamofile1.dyn path/to/dynamofile2.dyn
```
Update Dynamo files from python files from a folder. Only check python files, create backups: # Update Dynamo files from python files from a folder. Only check python files, create backups:
```
dyn2py --filter py --backup path/to/pythonfiles dyn2py --filter py --backup path/to/pythonfiles
``` ```
#### Git hooks
Git Hooks are a built-in feature of Git that allow developers to automate tasks throughout the Git workflow. Read more here: https://githooks.com/
With the `pre-commit` hook it's possible to add more files to the currently initialized commit.
You can find an example pre-commit hook here: [pre-commit](pre-commit). Copy this file to the `.git/hooks` folder of your repo of Dynamo graph. This folder is hidden by default, but it should exist in all initialized git repo. Do not rename this file.
This script will go through staged `.dyn` files and export python scripts from them, and add them to the current commit. Now you can check check changed lines in a diff tool!
### As a python module ### As a python module
Full API documentation available here: https://infeeeee.github.io/dyn2py Full API documentation available here: https://infeeeee.github.io/dyn2py

View File

@@ -22,7 +22,7 @@
- [x] API docs - [x] API docs
- [x] Installation in readme - [x] Installation in readme
- [x] Terminal examples in readme - [x] Terminal examples in readme
- [ ] About git hooks in readme - [x] About git hooks in readme
## Extra features maybe later ## Extra features maybe later

27
pre-commit Normal file
View File

@@ -0,0 +1,27 @@
#!/bin/sh
# Create a list of files from staged files:
mapfile -t NEW_FILES <<<$(git diff --name-only --cached)
# Go through staged files:
for f in "${NEW_FILES[@]}"; do
# Export python files, only from Dynamo files.
# On Windows line ending is always CRLF, so remove CR with tr.
mapfile -t PY_FILES <<<$(dyn2py --force --filter dyn --loglevel HEADLESS "$f" | tr -d "\r")
# Check if something was exported:
if [[ "${PY_FILES[@]}" ]]; then
# Go through exported files:
for p in "${PY_FILES[@]}"; do
# Check if file exists:
if [ -f "$p" ]; then
# Stage file:
git add "$p"
fi
done
fi
done

View File

@@ -34,3 +34,6 @@ dyn2py = "dyn2py:__command_line"
[build-system] [build-system]
requires = ["setuptools", "wheel"] requires = ["setuptools", "wheel"]
[tool.setuptools]
packages = ["dyn2py"]