3 Commits

Author SHA1 Message Date
2a6c42829f Fix installer build script 2023-03-30 02:11:42 +02:00
8b719bc3f9 Update Windows installer scripts 2023-03-30 02:02:45 +02:00
118425f994 Add example git hook 2023-03-30 01:28:51 +02:00
6 changed files with 74 additions and 33 deletions

View File

@@ -19,14 +19,9 @@ jobs:
uses: actions/download-artifact@v3
with:
name: dyn2py.exe
- name: Update version number
- name: Build
run: |
$regex = Select-String -Path pyproject.toml -Pattern '^version = "((?:\d\.){2}\d)"$'
$version = $regex.Matches.Groups[1].Value
(Get-Content dyn2py-installer.iss).Replace("x.x.x",$version) | Set-Content dyn2py-installer.iss
- name: Build installer
run: |
& "C:\Program Files (x86)\Inno Setup 6\ISCC.exe" -Qp $(Join-Path $PWD.Path dyn2py-installer.iss)
.\dyn2py-installer.ps1
- uses: actions/upload-artifact@v3
name: Upload artifact
with:

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.*
Extract all nodes next to a Dynamo file:
```
```shell
# Extract all nodes next to a Dynamo file:
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
```
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
```
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
```
#### 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
Full API documentation available here: https://infeeeee.github.io/dyn2py
@@ -181,17 +181,9 @@ pyinstaller dyn2py.spec
### Create installer for Windows
- Install Inno Setup: https://jrsoftware.org/isdl.php
- The already built exe should be in the root folder
- Run this in powershell:
- Build an exe
- Run `dyn2py-installer.ps1` in powershell
```powershell
# Read version number from pyproject.toml and update in innosetup:
$regex = Select-String -Path pyproject.toml -Pattern '^version = "((?:\d\.){2}\d)"$'
$version = $regex.Matches.Groups[1].Value
(Get-Content dyn2py-installer.iss).Replace("x.x.x",$version) | Set-Content dyn2py-installer.iss
# Build:
& "C:\Program Files (x86)\Inno Setup 6\ISCC.exe" -Qp $(Join-Path $PWD.Path dyn2py-installer.iss)
```
### Live module documentation
```

View File

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

24
dyn2py-installer.ps1 Normal file
View File

@@ -0,0 +1,24 @@
$InnoSetupPath = "C:\Program Files (x86)\Inno Setup 6\ISCC.exe"
# Check if innosetup installed
if (-not (Test-Path -Path $InnoSetupPath -PathType Leaf)) {
throw "Innosetup not found!"
}
# Copy dyn2py.exe from default folder:
if (Test-Path -Path ".\dist\dyn2py.exe" -PathType Leaf) {
Copy-Item ".\dist\dyn2py.exe" -Destination "." -Force
}
# Check if dyn2py.exe exists at all
if (-not(Test-Path -Path "dyn2py.exe" -PathType Leaf)) {
throw "dyn2py.exe not found!"
}
# Read version number from pyproject.toml and update in innosetup:
$regex = Select-String -Path pyproject.toml -Pattern '^version = "((?:\d\.){2}\d)"$'
$version = $regex.Matches.Groups[1].Value
(Get-Content dyn2py-installer.iss).Replace("x.x.x", $version) | Set-Content dyn2py-installer.iss
# Build:
& $InnoSetupPath -Qp $(Join-Path $PWD.Path dyn2py-installer.iss)

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]
requires = ["setuptools", "wheel"]
[tool.setuptools]
packages = ["dyn2py"]