Compare commits
12 Commits
ac74a036c7
...
main
| Author | SHA1 | Date | |
|---|---|---|---|
| aad97c9c7a | |||
| c94d1eaa79 | |||
| 0754593671 | |||
| aa84a5fe48 | |||
| ffc6939279 | |||
| 0984f12064 | |||
| 666ec70a85 | |||
| d4cb142724 | |||
| dd59f5266a | |||
| 4c8fb82536 | |||
| 1c9f11bd6d | |||
| b888183599 |
68
.config/GetStructDir.ps1
Normal file
68
.config/GetStructDir.ps1
Normal file
@@ -0,0 +1,68 @@
|
||||
# Simple helper script to get structDir from project config.json
|
||||
# Reads config.json from .config folder in project root
|
||||
|
||||
param(
|
||||
[string]$ProjectRoot
|
||||
)
|
||||
|
||||
Set-StrictMode -Version Latest
|
||||
$ErrorActionPreference = 'Stop'
|
||||
|
||||
if ([string]::IsNullOrWhiteSpace($ProjectRoot)) {
|
||||
# Try to determine project root from script location
|
||||
if ($PSScriptRoot) {
|
||||
$ProjectRoot = Split-Path -Parent $PSScriptRoot
|
||||
}
|
||||
elseif ($MyInvocation.MyCommand.Path) {
|
||||
$ProjectRoot = Split-Path -Parent (Split-Path -Parent $MyInvocation.MyCommand.Path)
|
||||
}
|
||||
else {
|
||||
Write-Error "Unable to determine project root. Please provide -ProjectRoot parameter."
|
||||
exit 1
|
||||
}
|
||||
}
|
||||
|
||||
$configPath = Join-Path -Path $ProjectRoot -ChildPath '.config\config.json'
|
||||
|
||||
if (-not (Test-Path -LiteralPath $configPath -PathType Leaf)) {
|
||||
Write-Error "config.json not found at: $configPath"
|
||||
exit 1
|
||||
}
|
||||
|
||||
try {
|
||||
$config = Get-Content -LiteralPath $configPath -Raw -ErrorAction Stop | ConvertFrom-Json
|
||||
|
||||
if ($config.PSObject.Properties.Name -contains 'structDir') {
|
||||
$structDir = $config.structDir
|
||||
if ($null -ne $structDir -and ($structDir -isnot [string] -or $structDir.Trim().Length -gt 0)) {
|
||||
# If it's an absolute path, resolve it
|
||||
if ([System.IO.Path]::IsPathRooted($structDir)) {
|
||||
$resolved = Resolve-Path -LiteralPath $structDir -ErrorAction SilentlyContinue
|
||||
if ($null -ne $resolved) {
|
||||
Write-Output $resolved.Path
|
||||
exit 0
|
||||
}
|
||||
Write-Output $structDir
|
||||
exit 0
|
||||
}
|
||||
# Relative path - resolve relative to config location
|
||||
$candidate = Join-Path -Path (Split-Path -Parent $configPath) -ChildPath $structDir
|
||||
$resolvedCandidate = Resolve-Path -LiteralPath $candidate -ErrorAction SilentlyContinue
|
||||
if ($null -ne $resolvedCandidate) {
|
||||
Write-Output $resolvedCandidate.Path
|
||||
exit 0
|
||||
}
|
||||
Write-Output $candidate
|
||||
exit 0
|
||||
}
|
||||
}
|
||||
|
||||
# Default: return the directory containing config.json (project root)
|
||||
Write-Output $ProjectRoot
|
||||
exit 0
|
||||
}
|
||||
catch {
|
||||
Write-Error "Failed to read or parse config.json: $($_.Exception.Message)"
|
||||
exit 1
|
||||
}
|
||||
|
||||
8
.config/config.json
Normal file
8
.config/config.json
Normal file
@@ -0,0 +1,8 @@
|
||||
{
|
||||
"dailyFormat": "daily_YYMMDD",
|
||||
"structDir": "D:\\0 ProjectStructure",
|
||||
"zipper": "7z",
|
||||
"compression": 9,
|
||||
"Max7zInst": 0
|
||||
}
|
||||
|
||||
8
.gitattributes
vendored
8
.gitattributes
vendored
@@ -23,6 +23,7 @@
|
||||
*.zip filter=lfs diff=lfs merge=lfs -text
|
||||
*.fbx filter=lfs diff=lfs merge=lfs -text
|
||||
*.fbxkey filter=lfs diff=lfs merge=lfs -text
|
||||
*.blend2 filter=lfs diff=lfs merge=lfs -text
|
||||
*.mb filter=lfs diff=lfs merge=lfs -text
|
||||
*.ma filter=lfs diff=lfs merge=lfs -text
|
||||
*.tiff filter=lfs diff=lfs merge=lfs -text
|
||||
@@ -40,11 +41,16 @@
|
||||
*.dae filter=lfs diff=lfs merge=lfs -text
|
||||
*.mp3 filter=lfs diff=lfs merge=lfs -text
|
||||
*.mp3 filter=lfs diff=lfs merge=lfs -text
|
||||
*.wav filter=lfs diff=lfs merge=lfs -text
|
||||
*.vdb filter=lfs diff=lfs merge=lfs -text
|
||||
*.aep filter=lfs diff=lfs merge=lfs -text
|
||||
*.aegraphic filter=lfs diff=lfs merge=lfs -text
|
||||
*.prproj filter=lfs diff=lfs merge=lfs -text
|
||||
*.prin filter=lfs diff=lfs merge=lfs -text
|
||||
*.prel filter=lfs diff=lfs merge=lfs -text
|
||||
*.wav filter=lfs diff=lfs merge=lfs -text
|
||||
*.docx filter=lfs diff=lfs merge=lfs -text
|
||||
*.MOV filter=lfs diff=lfs merge=lfs -text
|
||||
*.gif filter=lfs diff=lfs merge=lfs -text
|
||||
*.sbs filter=lfs diff=lfs merge=lfs -text
|
||||
*.sbsar filter=lfs diff=lfs merge=lfs -text
|
||||
*.spp filter=lfs diff=lfs merge=lfs -text
|
||||
20
.gitignore
vendored
20
.gitignore
vendored
@@ -83,11 +83,6 @@ desktop.ini
|
||||
# *.aac
|
||||
# *.ogg
|
||||
|
||||
# Archive files
|
||||
*.zip
|
||||
*.rar
|
||||
*.tar.gz
|
||||
|
||||
# Log files
|
||||
*.log
|
||||
|
||||
@@ -118,12 +113,12 @@ temp/
|
||||
tmp/
|
||||
cache/
|
||||
|
||||
# image sequences
|
||||
seq/
|
||||
Renders/
|
||||
png/
|
||||
Pr/3_background/RenderRegions/
|
||||
Pr/3_background/background/
|
||||
Renders/**
|
||||
!Renders/_zipped/
|
||||
!Renders/_zipped/**
|
||||
!Renders/**/
|
||||
!Renders/**/*.bat
|
||||
!Renders/**/*.log
|
||||
|
||||
# Premiere
|
||||
*.prlock
|
||||
@@ -131,4 +126,7 @@ Adobe Premiere Pro Video Previews/
|
||||
Adobe Premiere Pro Audio Previews/
|
||||
Adobe Premiere Pro (Beta) Video Previews/
|
||||
Adobe Premiere Pro (Beta) Audio Previews/
|
||||
|
||||
Pr/RnR/
|
||||
|
||||
Pr/3_background/RnR/
|
||||
|
||||
134
.specstory/.gitignore
vendored
134
.specstory/.gitignore
vendored
@@ -1,4 +1,130 @@
|
||||
# SpecStory explanation file
|
||||
/.what-is-this.md
|
||||
# SpecStory project identity file
|
||||
/.project.json
|
||||
# Blender Studio Git Management - .gitignore
|
||||
|
||||
# Blender auto-save files
|
||||
*.blend1
|
||||
*.blend2
|
||||
*.blend3
|
||||
*.blend4
|
||||
*.blend5
|
||||
*.blend6
|
||||
*.blend7
|
||||
*.blend8
|
||||
*.blend9
|
||||
*.blend10
|
||||
*.blend11
|
||||
*.blend12
|
||||
*.blend13
|
||||
*.blend14
|
||||
*.blend15
|
||||
*.blend16
|
||||
*.blend17
|
||||
*.blend18
|
||||
*.blend19
|
||||
*.blend20
|
||||
*.blend21
|
||||
*.blend22
|
||||
*.blend23
|
||||
*.blend24
|
||||
*.blend25
|
||||
*.blend26
|
||||
*.blend27
|
||||
*.blend28
|
||||
*.blend29
|
||||
*.blend30
|
||||
*.blend31
|
||||
*.blend32
|
||||
|
||||
# Blender cache and temporary files
|
||||
*.swp
|
||||
*.swo
|
||||
*~
|
||||
*.tmp
|
||||
*.temp
|
||||
|
||||
# Blender internal cache files
|
||||
*.bpy
|
||||
*.bmesh
|
||||
*.bvh
|
||||
*.bobj
|
||||
*.bphys
|
||||
|
||||
# OS generated files
|
||||
.DS_Store
|
||||
.DS_Store?
|
||||
._*
|
||||
.Spotlight-V100
|
||||
.Trashes
|
||||
ehthumbs.db
|
||||
Thumbs.db
|
||||
desktop.ini
|
||||
|
||||
# Editor files
|
||||
.vscode/
|
||||
.idea/
|
||||
*.swp
|
||||
*.swo
|
||||
*~
|
||||
|
||||
# Large media files (uncomment if you want to exclude rendered outputs)
|
||||
# *.mp4
|
||||
# *.avi
|
||||
# *.mov
|
||||
# *.png
|
||||
# *.jpg
|
||||
# *.jpeg
|
||||
# *.exr
|
||||
# *.hdr
|
||||
# *.tiff
|
||||
# *.tga
|
||||
|
||||
# Audio files (uncomment if excluding)
|
||||
# *.wav
|
||||
# *.mp3
|
||||
# *.aac
|
||||
# *.ogg
|
||||
|
||||
# Log files
|
||||
*.log
|
||||
|
||||
# Python cache
|
||||
__pycache__/
|
||||
*.pyc
|
||||
*.pyo
|
||||
*.pyd
|
||||
.Python
|
||||
|
||||
# Node modules (if using any web tools)
|
||||
node_modules/
|
||||
|
||||
# Environment files
|
||||
.env
|
||||
.env.local
|
||||
.env.development.local
|
||||
.env.test.local
|
||||
.env.production.local
|
||||
|
||||
# Backup files
|
||||
*.bak
|
||||
*.backup
|
||||
*.old
|
||||
|
||||
# Temporary files
|
||||
temp/
|
||||
tmp/
|
||||
cache/
|
||||
|
||||
Renders/**
|
||||
!Renders/_zipped/
|
||||
!Renders/_zipped/**
|
||||
!Renders/**/
|
||||
!Renders/**/*.bat
|
||||
!Renders/**/*.log
|
||||
|
||||
# Premiere
|
||||
*.prlock
|
||||
Adobe Premiere Pro Video Previews/
|
||||
Adobe Premiere Pro Audio Previews/
|
||||
Adobe Premiere Pro (Beta) Video Previews/
|
||||
Adobe Premiere Pro (Beta) Audio Previews/
|
||||
|
||||
Pr/RnR/
|
||||
|
||||
8
.specstory/.project.json
Normal file
8
.specstory/.project.json
Normal file
@@ -0,0 +1,8 @@
|
||||
{
|
||||
"workspace_id": "1b0d-a83a-3ac5-e88c",
|
||||
"workspace_id_at": "2025-11-01T15:50:13.343Z",
|
||||
"project_name": "2025-02-BondingArtifact",
|
||||
"cloud_sync": false,
|
||||
"git_id": "5b73-3baf-2eb5-36fa",
|
||||
"git_id_at": "2025-11-01T15:50:13.388Z"
|
||||
}
|
||||
69
.specstory/.what-is-this.md
Normal file
69
.specstory/.what-is-this.md
Normal file
@@ -0,0 +1,69 @@
|
||||
# SpecStory Artifacts Directory
|
||||
|
||||
This directory is automatically created and maintained by the SpecStory extension to preserve your AI chat history.
|
||||
|
||||
## What's Here?
|
||||
|
||||
- `.specstory/history`: Contains auto-saved markdown files of your AI coding sessions
|
||||
- Each file represents a separate AI chat session
|
||||
- If you enable auto-save, files are automatically updated as you work
|
||||
- You can enable/disable the auto-save feature in the SpecStory settings, it is disabled by default
|
||||
- `.specstory/.project.json`: Contains the persistent project identity for the current workspace
|
||||
- This file is only present if you enable AI rules derivation
|
||||
- This is used to provide consistent project identity of your project, even as the workspace is moved or renamed
|
||||
- `.specstory/ai_rules_backups`: Contains backups of the `.cursor/rules/derived-cursor-rules.mdc` or the `.github/copilot-instructions.md` file
|
||||
- Backups are automatically created each time the `.cursor/rules/derived-cursor-rules.mdc` or the `.github/copilot-instructions.md` file is updated
|
||||
- You can enable/disable the AI Rules derivation feature in the SpecStory settings, it is disabled by default
|
||||
- `.specstory/.gitignore`: Contains directives to exclude non-essential contents of the `.specstory` directory from version control
|
||||
- Add `/history` to exclude the auto-saved chat history from version control
|
||||
|
||||
## Valuable Uses
|
||||
|
||||
- Capture: Keep your context window up-to-date when starting new Chat/Composer sessions via @ references
|
||||
- Search: For previous prompts and code snippets
|
||||
- Learn: Meta-analyze your patterns and learn from your past experiences
|
||||
- Derive: Keep the AI on course with your past decisions by automatically deriving rules from your AI interactions
|
||||
|
||||
## Version Control
|
||||
|
||||
We recommend keeping this directory under version control to maintain a history of your AI interactions. However, if you prefer not to version these files, you can exclude them by adding this to your `.gitignore`:
|
||||
|
||||
```
|
||||
.specstory/**
|
||||
```
|
||||
|
||||
We recommend __not__ keeping the `.specstory/ai_rules_backups` directory under version control if you are already using git to version your AI rules, and committing regularly. You can exclude it by adding this to your `.gitignore`:
|
||||
|
||||
```
|
||||
.specstory/ai_rules_backups
|
||||
```
|
||||
|
||||
## Searching Your Codebase
|
||||
|
||||
When searching your codebase, search results may include your previous AI coding interactions. To focus solely on your actual code files, you can exclude the AI interaction history from search results.
|
||||
|
||||
To exclude AI interaction history:
|
||||
|
||||
1. Open the "Find in Files" search in Cursor or VSCode (Cmd/Ctrl + Shift + F)
|
||||
2. Navigate to the "files to exclude" section
|
||||
3. Add the following pattern:
|
||||
|
||||
```
|
||||
.specstory/*
|
||||
```
|
||||
|
||||
This will ensure your searches only return results from your working codebase files.
|
||||
|
||||
## Notes
|
||||
|
||||
- Auto-save only works when Cursor or VSCode flushes sqlite database data to disk. This results in a small delay after the AI response is complete before SpecStory can save the history.
|
||||
|
||||
## Settings
|
||||
|
||||
You can control auto-saving behavior in Cursor or VSCode:
|
||||
|
||||
1. Open Cursor/Code → Settings → VS Code Settings (Cmd/Ctrl + ,)
|
||||
2. Search for "SpecStory"
|
||||
3. Find "Auto Save" setting to enable/disable
|
||||
|
||||
Auto-save occurs when changes are detected in the sqlite database, or every 2 minutes as a safety net.
|
||||
File diff suppressed because it is too large
Load Diff
BIN
Deliverable/StartupScreen_dark.mp4
LFS
Normal file
BIN
Deliverable/StartupScreen_dark.mp4
LFS
Normal file
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
16
Renders/0_GaslightRender/NewDaily.bat
Normal file
16
Renders/0_GaslightRender/NewDaily.bat
Normal file
@@ -0,0 +1,16 @@
|
||||
@echo off
|
||||
setlocal
|
||||
|
||||
:: Get current date in YYYY-MM-DD format
|
||||
for /f "tokens=2-4 delims=/ " %%a in ('date /t') do (
|
||||
set mm=%%a
|
||||
set dd=%%b
|
||||
set yy=%%c
|
||||
)
|
||||
set yyyy=20%yy:~-2%
|
||||
|
||||
:: Create daily folder
|
||||
mkdir "%yyyy%-%mm%-%dd%"
|
||||
echo Daily folder created: %yyyy%-%mm%-%dd%
|
||||
|
||||
pause
|
||||
37
Renders/0_GaslightRender/UpdateSequences.bat
Normal file
37
Renders/0_GaslightRender/UpdateSequences.bat
Normal file
@@ -0,0 +1,37 @@
|
||||
@echo off
|
||||
setlocal EnableExtensions
|
||||
|
||||
set "script_dir=%~dp0"
|
||||
for %%I in ("%script_dir%..\..") do set "PROJ_ROOT=%%~fI"
|
||||
|
||||
set "CONFIG_DIR=%PROJ_ROOT%\.config"
|
||||
set "CONFIG_PATH=%CONFIG_DIR%\config.json"
|
||||
set "GET_STRUCT_DIR=%CONFIG_DIR%\GetStructDir.ps1"
|
||||
|
||||
if not exist "%CONFIG_PATH%" (
|
||||
echo [ERROR] config.json not found at %CONFIG_PATH%
|
||||
echo Please run ConfigLoader.ps1 to deploy helper files.
|
||||
exit /b 1
|
||||
)
|
||||
|
||||
if not exist "%GET_STRUCT_DIR%" (
|
||||
echo [ERROR] GetStructDir.ps1 not found at %GET_STRUCT_DIR%
|
||||
echo Please run ConfigLoader.ps1 to deploy helper files.
|
||||
exit /b 1
|
||||
)
|
||||
|
||||
for /f "usebackq delims=" %%I in (`powershell -NoProfile -ExecutionPolicy Bypass -Command ^
|
||||
"Set-StrictMode -Version Latest; $structDir = & '%GET_STRUCT_DIR%' -ProjectRoot '%PROJ_ROOT%'; if (-not $structDir) { throw \"Failed to get structDir from GetStructDir.ps1\" }; $ps1Path = Join-Path $structDir 'UpdateSequences.ps1'; if (-not (Test-Path -LiteralPath $ps1Path)) { throw \"UpdateSequences.ps1 not found at $ps1Path\" }; Write-Output $ps1Path"`) do set "ps1=%%I"
|
||||
|
||||
if not defined ps1 (
|
||||
echo [ERROR] Unable to resolve UpdateSequences.ps1 path from config.
|
||||
exit /b 1
|
||||
)
|
||||
|
||||
echo Running PowerShell update script...
|
||||
powershell -NoProfile -ExecutionPolicy Bypass -File "%ps1%"
|
||||
set "rc=%errorlevel%"
|
||||
echo PowerShell exited with RC=%rc%
|
||||
echo Done.
|
||||
pause >nul
|
||||
exit /b %rc%
|
||||
16
Renders/1_PonderingOrb/NewDaily.bat
Normal file
16
Renders/1_PonderingOrb/NewDaily.bat
Normal file
@@ -0,0 +1,16 @@
|
||||
@echo off
|
||||
setlocal
|
||||
|
||||
:: Get current date in YYYY-MM-DD format
|
||||
for /f "tokens=2-4 delims=/ " %%a in ('date /t') do (
|
||||
set mm=%%a
|
||||
set dd=%%b
|
||||
set yy=%%c
|
||||
)
|
||||
set yyyy=20%yy:~-2%
|
||||
|
||||
:: Create daily folder
|
||||
mkdir "%yyyy%-%mm%-%dd%"
|
||||
echo Daily folder created: %yyyy%-%mm%-%dd%
|
||||
|
||||
pause
|
||||
37
Renders/1_PonderingOrb/UpdateSequences.bat
Normal file
37
Renders/1_PonderingOrb/UpdateSequences.bat
Normal file
@@ -0,0 +1,37 @@
|
||||
@echo off
|
||||
setlocal EnableExtensions
|
||||
|
||||
set "script_dir=%~dp0"
|
||||
for %%I in ("%script_dir%..\..") do set "PROJ_ROOT=%%~fI"
|
||||
|
||||
set "CONFIG_DIR=%PROJ_ROOT%\.config"
|
||||
set "CONFIG_PATH=%CONFIG_DIR%\config.json"
|
||||
set "GET_STRUCT_DIR=%CONFIG_DIR%\GetStructDir.ps1"
|
||||
|
||||
if not exist "%CONFIG_PATH%" (
|
||||
echo [ERROR] config.json not found at %CONFIG_PATH%
|
||||
echo Please run ConfigLoader.ps1 to deploy helper files.
|
||||
exit /b 1
|
||||
)
|
||||
|
||||
if not exist "%GET_STRUCT_DIR%" (
|
||||
echo [ERROR] GetStructDir.ps1 not found at %GET_STRUCT_DIR%
|
||||
echo Please run ConfigLoader.ps1 to deploy helper files.
|
||||
exit /b 1
|
||||
)
|
||||
|
||||
for /f "usebackq delims=" %%I in (`powershell -NoProfile -ExecutionPolicy Bypass -Command ^
|
||||
"Set-StrictMode -Version Latest; $structDir = & '%GET_STRUCT_DIR%' -ProjectRoot '%PROJ_ROOT%'; if (-not $structDir) { throw \"Failed to get structDir from GetStructDir.ps1\" }; $ps1Path = Join-Path $structDir 'UpdateSequences.ps1'; if (-not (Test-Path -LiteralPath $ps1Path)) { throw \"UpdateSequences.ps1 not found at $ps1Path\" }; Write-Output $ps1Path"`) do set "ps1=%%I"
|
||||
|
||||
if not defined ps1 (
|
||||
echo [ERROR] Unable to resolve UpdateSequences.ps1 path from config.
|
||||
exit /b 1
|
||||
)
|
||||
|
||||
echo Running PowerShell update script...
|
||||
powershell -NoProfile -ExecutionPolicy Bypass -File "%ps1%"
|
||||
set "rc=%errorlevel%"
|
||||
echo PowerShell exited with RC=%rc%
|
||||
echo Done.
|
||||
pause >nul
|
||||
exit /b %rc%
|
||||
16
Renders/2_rendertest/NewDaily.bat
Normal file
16
Renders/2_rendertest/NewDaily.bat
Normal file
@@ -0,0 +1,16 @@
|
||||
@echo off
|
||||
setlocal
|
||||
|
||||
:: Get current date in YYYY-MM-DD format
|
||||
for /f "tokens=2-4 delims=/ " %%a in ('date /t') do (
|
||||
set mm=%%a
|
||||
set dd=%%b
|
||||
set yy=%%c
|
||||
)
|
||||
set yyyy=20%yy:~-2%
|
||||
|
||||
:: Create daily folder
|
||||
mkdir "%yyyy%-%mm%-%dd%"
|
||||
echo Daily folder created: %yyyy%-%mm%-%dd%
|
||||
|
||||
pause
|
||||
37
Renders/2_rendertest/UpdateSequences.bat
Normal file
37
Renders/2_rendertest/UpdateSequences.bat
Normal file
@@ -0,0 +1,37 @@
|
||||
@echo off
|
||||
setlocal EnableExtensions
|
||||
|
||||
set "script_dir=%~dp0"
|
||||
for %%I in ("%script_dir%..\..") do set "PROJ_ROOT=%%~fI"
|
||||
|
||||
set "CONFIG_DIR=%PROJ_ROOT%\.config"
|
||||
set "CONFIG_PATH=%CONFIG_DIR%\config.json"
|
||||
set "GET_STRUCT_DIR=%CONFIG_DIR%\GetStructDir.ps1"
|
||||
|
||||
if not exist "%CONFIG_PATH%" (
|
||||
echo [ERROR] config.json not found at %CONFIG_PATH%
|
||||
echo Please run ConfigLoader.ps1 to deploy helper files.
|
||||
exit /b 1
|
||||
)
|
||||
|
||||
if not exist "%GET_STRUCT_DIR%" (
|
||||
echo [ERROR] GetStructDir.ps1 not found at %GET_STRUCT_DIR%
|
||||
echo Please run ConfigLoader.ps1 to deploy helper files.
|
||||
exit /b 1
|
||||
)
|
||||
|
||||
for /f "usebackq delims=" %%I in (`powershell -NoProfile -ExecutionPolicy Bypass -Command ^
|
||||
"Set-StrictMode -Version Latest; $structDir = & '%GET_STRUCT_DIR%' -ProjectRoot '%PROJ_ROOT%'; if (-not $structDir) { throw \"Failed to get structDir from GetStructDir.ps1\" }; $ps1Path = Join-Path $structDir 'UpdateSequences.ps1'; if (-not (Test-Path -LiteralPath $ps1Path)) { throw \"UpdateSequences.ps1 not found at $ps1Path\" }; Write-Output $ps1Path"`) do set "ps1=%%I"
|
||||
|
||||
if not defined ps1 (
|
||||
echo [ERROR] Unable to resolve UpdateSequences.ps1 path from config.
|
||||
exit /b 1
|
||||
)
|
||||
|
||||
echo Running PowerShell update script...
|
||||
powershell -NoProfile -ExecutionPolicy Bypass -File "%ps1%"
|
||||
set "rc=%errorlevel%"
|
||||
echo PowerShell exited with RC=%rc%
|
||||
echo Done.
|
||||
pause >nul
|
||||
exit /b %rc%
|
||||
16
Renders/3_background/NewDaily.bat
Normal file
16
Renders/3_background/NewDaily.bat
Normal file
@@ -0,0 +1,16 @@
|
||||
@echo off
|
||||
setlocal
|
||||
|
||||
:: Get current date in YYYY-MM-DD format
|
||||
for /f "tokens=2-4 delims=/ " %%a in ('date /t') do (
|
||||
set mm=%%a
|
||||
set dd=%%b
|
||||
set yy=%%c
|
||||
)
|
||||
set yyyy=20%yy:~-2%
|
||||
|
||||
:: Create daily folder
|
||||
mkdir "%yyyy%-%mm%-%dd%"
|
||||
echo Daily folder created: %yyyy%-%mm%-%dd%
|
||||
|
||||
pause
|
||||
37
Renders/3_background/UpdateSequences.bat
Normal file
37
Renders/3_background/UpdateSequences.bat
Normal file
@@ -0,0 +1,37 @@
|
||||
@echo off
|
||||
setlocal EnableExtensions
|
||||
|
||||
set "script_dir=%~dp0"
|
||||
for %%I in ("%script_dir%..\..") do set "PROJ_ROOT=%%~fI"
|
||||
|
||||
set "CONFIG_DIR=%PROJ_ROOT%\.config"
|
||||
set "CONFIG_PATH=%CONFIG_DIR%\config.json"
|
||||
set "GET_STRUCT_DIR=%CONFIG_DIR%\GetStructDir.ps1"
|
||||
|
||||
if not exist "%CONFIG_PATH%" (
|
||||
echo [ERROR] config.json not found at %CONFIG_PATH%
|
||||
echo Please run ConfigLoader.ps1 to deploy helper files.
|
||||
exit /b 1
|
||||
)
|
||||
|
||||
if not exist "%GET_STRUCT_DIR%" (
|
||||
echo [ERROR] GetStructDir.ps1 not found at %GET_STRUCT_DIR%
|
||||
echo Please run ConfigLoader.ps1 to deploy helper files.
|
||||
exit /b 1
|
||||
)
|
||||
|
||||
for /f "usebackq delims=" %%I in (`powershell -NoProfile -ExecutionPolicy Bypass -Command ^
|
||||
"Set-StrictMode -Version Latest; $structDir = & '%GET_STRUCT_DIR%' -ProjectRoot '%PROJ_ROOT%'; if (-not $structDir) { throw \"Failed to get structDir from GetStructDir.ps1\" }; $ps1Path = Join-Path $structDir 'UpdateSequences.ps1'; if (-not (Test-Path -LiteralPath $ps1Path)) { throw \"UpdateSequences.ps1 not found at $ps1Path\" }; Write-Output $ps1Path"`) do set "ps1=%%I"
|
||||
|
||||
if not defined ps1 (
|
||||
echo [ERROR] Unable to resolve UpdateSequences.ps1 path from config.
|
||||
exit /b 1
|
||||
)
|
||||
|
||||
echo Running PowerShell update script...
|
||||
powershell -NoProfile -ExecutionPolicy Bypass -File "%ps1%"
|
||||
set "rc=%errorlevel%"
|
||||
echo PowerShell exited with RC=%rc%
|
||||
echo Done.
|
||||
pause >nul
|
||||
exit /b %rc%
|
||||
4182
Renders/3_background/_CURRENT/_UpdateSequences.log
Normal file
4182
Renders/3_background/_CURRENT/_UpdateSequences.log
Normal file
File diff suppressed because it is too large
Load Diff
16
Renders/4_StartupScreen/NewDaily.bat
Normal file
16
Renders/4_StartupScreen/NewDaily.bat
Normal file
@@ -0,0 +1,16 @@
|
||||
@echo off
|
||||
setlocal
|
||||
|
||||
:: Get current date in YYYY-MM-DD format
|
||||
for /f "tokens=2-4 delims=/ " %%a in ('date /t') do (
|
||||
set mm=%%a
|
||||
set dd=%%b
|
||||
set yy=%%c
|
||||
)
|
||||
set yyyy=20%yy:~-2%
|
||||
|
||||
:: Create daily folder
|
||||
mkdir "%yyyy%-%mm%-%dd%"
|
||||
echo Daily folder created: %yyyy%-%mm%-%dd%
|
||||
|
||||
pause
|
||||
37
Renders/4_StartupScreen/UpdateSequences.bat
Normal file
37
Renders/4_StartupScreen/UpdateSequences.bat
Normal file
@@ -0,0 +1,37 @@
|
||||
@echo off
|
||||
setlocal EnableExtensions
|
||||
|
||||
set "script_dir=%~dp0"
|
||||
for %%I in ("%script_dir%..\..") do set "PROJ_ROOT=%%~fI"
|
||||
|
||||
set "CONFIG_DIR=%PROJ_ROOT%\.config"
|
||||
set "CONFIG_PATH=%CONFIG_DIR%\config.json"
|
||||
set "GET_STRUCT_DIR=%CONFIG_DIR%\GetStructDir.ps1"
|
||||
|
||||
if not exist "%CONFIG_PATH%" (
|
||||
echo [ERROR] config.json not found at %CONFIG_PATH%
|
||||
echo Please run ConfigLoader.ps1 to deploy helper files.
|
||||
exit /b 1
|
||||
)
|
||||
|
||||
if not exist "%GET_STRUCT_DIR%" (
|
||||
echo [ERROR] GetStructDir.ps1 not found at %GET_STRUCT_DIR%
|
||||
echo Please run ConfigLoader.ps1 to deploy helper files.
|
||||
exit /b 1
|
||||
)
|
||||
|
||||
for /f "usebackq delims=" %%I in (`powershell -NoProfile -ExecutionPolicy Bypass -Command ^
|
||||
"Set-StrictMode -Version Latest; $structDir = & '%GET_STRUCT_DIR%' -ProjectRoot '%PROJ_ROOT%'; if (-not $structDir) { throw \"Failed to get structDir from GetStructDir.ps1\" }; $ps1Path = Join-Path $structDir 'UpdateSequences.ps1'; if (-not (Test-Path -LiteralPath $ps1Path)) { throw \"UpdateSequences.ps1 not found at $ps1Path\" }; Write-Output $ps1Path"`) do set "ps1=%%I"
|
||||
|
||||
if not defined ps1 (
|
||||
echo [ERROR] Unable to resolve UpdateSequences.ps1 path from config.
|
||||
exit /b 1
|
||||
)
|
||||
|
||||
echo Running PowerShell update script...
|
||||
powershell -NoProfile -ExecutionPolicy Bypass -File "%ps1%"
|
||||
set "rc=%errorlevel%"
|
||||
echo PowerShell exited with RC=%rc%
|
||||
echo Done.
|
||||
pause >nul
|
||||
exit /b %rc%
|
||||
34989
Renders/4_StartupScreen/_CURRENT/_UpdateSequences.log
Normal file
34989
Renders/4_StartupScreen/_CURRENT/_UpdateSequences.log
Normal file
File diff suppressed because it is too large
Load Diff
16
Renders/5_goodbye/NewDaily.bat
Normal file
16
Renders/5_goodbye/NewDaily.bat
Normal file
@@ -0,0 +1,16 @@
|
||||
@echo off
|
||||
setlocal
|
||||
|
||||
:: Get current date in YYYY-MM-DD format
|
||||
for /f "tokens=2-4 delims=/ " %%a in ('date /t') do (
|
||||
set mm=%%a
|
||||
set dd=%%b
|
||||
set yy=%%c
|
||||
)
|
||||
set yyyy=20%yy:~-2%
|
||||
|
||||
:: Create daily folder
|
||||
mkdir "%yyyy%-%mm%-%dd%"
|
||||
echo Daily folder created: %yyyy%-%mm%-%dd%
|
||||
|
||||
pause
|
||||
37
Renders/5_goodbye/UpdateSequences.bat
Normal file
37
Renders/5_goodbye/UpdateSequences.bat
Normal file
@@ -0,0 +1,37 @@
|
||||
@echo off
|
||||
setlocal EnableExtensions
|
||||
|
||||
set "script_dir=%~dp0"
|
||||
for %%I in ("%script_dir%..\..") do set "PROJ_ROOT=%%~fI"
|
||||
|
||||
set "CONFIG_DIR=%PROJ_ROOT%\.config"
|
||||
set "CONFIG_PATH=%CONFIG_DIR%\config.json"
|
||||
set "GET_STRUCT_DIR=%CONFIG_DIR%\GetStructDir.ps1"
|
||||
|
||||
if not exist "%CONFIG_PATH%" (
|
||||
echo [ERROR] config.json not found at %CONFIG_PATH%
|
||||
echo Please run ConfigLoader.ps1 to deploy helper files.
|
||||
exit /b 1
|
||||
)
|
||||
|
||||
if not exist "%GET_STRUCT_DIR%" (
|
||||
echo [ERROR] GetStructDir.ps1 not found at %GET_STRUCT_DIR%
|
||||
echo Please run ConfigLoader.ps1 to deploy helper files.
|
||||
exit /b 1
|
||||
)
|
||||
|
||||
for /f "usebackq delims=" %%I in (`powershell -NoProfile -ExecutionPolicy Bypass -Command ^
|
||||
"Set-StrictMode -Version Latest; $structDir = & '%GET_STRUCT_DIR%' -ProjectRoot '%PROJ_ROOT%'; if (-not $structDir) { throw \"Failed to get structDir from GetStructDir.ps1\" }; $ps1Path = Join-Path $structDir 'UpdateSequences.ps1'; if (-not (Test-Path -LiteralPath $ps1Path)) { throw \"UpdateSequences.ps1 not found at $ps1Path\" }; Write-Output $ps1Path"`) do set "ps1=%%I"
|
||||
|
||||
if not defined ps1 (
|
||||
echo [ERROR] Unable to resolve UpdateSequences.ps1 path from config.
|
||||
exit /b 1
|
||||
)
|
||||
|
||||
echo Running PowerShell update script...
|
||||
powershell -NoProfile -ExecutionPolicy Bypass -File "%ps1%"
|
||||
set "rc=%errorlevel%"
|
||||
echo PowerShell exited with RC=%rc%
|
||||
echo Done.
|
||||
pause >nul
|
||||
exit /b %rc%
|
||||
42
Renders/UnzipSeqArchv.bat
Normal file
42
Renders/UnzipSeqArchv.bat
Normal file
@@ -0,0 +1,42 @@
|
||||
@echo off
|
||||
setlocal EnableExtensions EnableDelayedExpansion
|
||||
|
||||
set "REN_DIR=%~dp0"
|
||||
for %%I in ("%REN_DIR%..") do set "PROJ_ROOT=%%~fI"
|
||||
|
||||
set "CONFIG_DIR=%PROJ_ROOT%\.config"
|
||||
set "CONFIG_PATH=%CONFIG_DIR%\config.json"
|
||||
set "GET_STRUCT_DIR=%CONFIG_DIR%\GetStructDir.ps1"
|
||||
|
||||
if not exist "%CONFIG_PATH%" (
|
||||
echo [ERROR] config.json not found at %CONFIG_PATH%
|
||||
echo Please run ConfigLoader.ps1 to deploy helper files.
|
||||
exit /b 1
|
||||
)
|
||||
|
||||
if not exist "%GET_STRUCT_DIR%" (
|
||||
echo [ERROR] GetStructDir.ps1 not found at %GET_STRUCT_DIR%
|
||||
echo Please run ConfigLoader.ps1 to deploy helper files.
|
||||
exit /b 1
|
||||
)
|
||||
|
||||
for /f "usebackq delims=" %%I in (`powershell -NoProfile -ExecutionPolicy Bypass -Command ^
|
||||
"Set-StrictMode -Version Latest; $structDir = & '%GET_STRUCT_DIR%' -ProjectRoot '%PROJ_ROOT%'; if (-not $structDir) { throw \"Failed to get structDir from GetStructDir.ps1\" }; $pyPath = Join-Path $structDir 'zip_sequences.py'; if (-not (Test-Path -LiteralPath $pyPath)) { throw \"zip_sequences.py not found at $pyPath\" }; Write-Output $pyPath"`) do set "PY_SCRIPT=%%I"
|
||||
|
||||
if not defined PY_SCRIPT (
|
||||
echo [ERROR] Unable to resolve zip_sequences.py path from config.
|
||||
exit /b 1
|
||||
)
|
||||
|
||||
pushd "%PROJ_ROOT%" >nul 2>&1
|
||||
|
||||
python "%PY_SCRIPT%" --mode expand --verbose %*
|
||||
set "ERR=!ERRORLEVEL!"
|
||||
|
||||
if not "!ERR!"=="0" (
|
||||
echo Failed to expand render sequence archives (exit code !ERR!).
|
||||
)
|
||||
|
||||
popd >nul 2>&1
|
||||
exit /b !ERR!
|
||||
|
||||
58
Renders/UpdateAllSequences.bat
Normal file
58
Renders/UpdateAllSequences.bat
Normal file
@@ -0,0 +1,58 @@
|
||||
@echo off
|
||||
setlocal enabledelayedexpansion
|
||||
echo UpdateAllSequences - Running all UpdateSequences.bat files in submodule folders...
|
||||
echo.
|
||||
|
||||
echo Searching for submodule folders and UpdateSequences.bat files...
|
||||
echo.
|
||||
|
||||
REM Find all submodule folders and check for UpdateSequences.bat
|
||||
set /a count=0
|
||||
set /a found=0
|
||||
|
||||
echo Found the following submodule folders with UpdateSequences.bat:
|
||||
for /d %%S in (*) do (
|
||||
if exist "%%S\UpdateSequences.bat" (
|
||||
echo - %%S
|
||||
set /a found+=1
|
||||
)
|
||||
)
|
||||
|
||||
if !found!==0 (
|
||||
echo No submodule folders with UpdateSequences.bat found!
|
||||
echo.
|
||||
echo Note: This script looks for UpdateSequences.bat files in immediate subdirectories.
|
||||
echo Make sure you're running this from the project root where submodules are located.
|
||||
pause
|
||||
exit /b 1
|
||||
)
|
||||
|
||||
echo.
|
||||
echo Found !found! submodule folders with UpdateSequences.bat files.
|
||||
echo.
|
||||
echo Starting execution...
|
||||
echo.
|
||||
|
||||
REM Execute each UpdateSequences.bat found in submodule folders
|
||||
for /d %%S in (*) do (
|
||||
if exist "%%S\UpdateSequences.bat" (
|
||||
set /a count+=1
|
||||
echo [!count!/!found!] Running UpdateSequences.bat in %%S...
|
||||
pushd "%%S"
|
||||
call "UpdateSequences.bat" < NUL
|
||||
set "rc=!errorlevel!"
|
||||
popd
|
||||
if !rc!==0 (
|
||||
echo Completed: %%S (SUCCESS)
|
||||
) else (
|
||||
echo Completed: %%S (FAILED - RC=!rc!)
|
||||
)
|
||||
echo.
|
||||
)
|
||||
)
|
||||
|
||||
echo.
|
||||
echo Operation completed. Successfully executed !count! UpdateSequences.bat files.
|
||||
echo.
|
||||
echo Note: Check individual _CURRENT\_UpdateSequences.log files in each submodule for details.
|
||||
pause
|
||||
42
Renders/ZipSeqArchv.bat
Normal file
42
Renders/ZipSeqArchv.bat
Normal file
@@ -0,0 +1,42 @@
|
||||
@echo off
|
||||
setlocal EnableExtensions EnableDelayedExpansion
|
||||
|
||||
set "REN_DIR=%~dp0"
|
||||
for %%I in ("%REN_DIR%..") do set "PROJ_ROOT=%%~fI"
|
||||
|
||||
set "CONFIG_DIR=%PROJ_ROOT%\.config"
|
||||
set "CONFIG_PATH=%CONFIG_DIR%\config.json"
|
||||
set "GET_STRUCT_DIR=%CONFIG_DIR%\GetStructDir.ps1"
|
||||
|
||||
if not exist "%CONFIG_PATH%" (
|
||||
echo [ERROR] config.json not found at %CONFIG_PATH%
|
||||
echo Please run ConfigLoader.ps1 to deploy helper files.
|
||||
exit /b 1
|
||||
)
|
||||
|
||||
if not exist "%GET_STRUCT_DIR%" (
|
||||
echo [ERROR] GetStructDir.ps1 not found at %GET_STRUCT_DIR%
|
||||
echo Please run ConfigLoader.ps1 to deploy helper files.
|
||||
exit /b 1
|
||||
)
|
||||
|
||||
for /f "usebackq delims=" %%I in (`powershell -NoProfile -ExecutionPolicy Bypass -Command ^
|
||||
"Set-StrictMode -Version Latest; $structDir = & '%GET_STRUCT_DIR%' -ProjectRoot '%PROJ_ROOT%'; if (-not $structDir) { throw \"Failed to get structDir from GetStructDir.ps1\" }; $pyPath = Join-Path $structDir 'zip_sequences.py'; if (-not (Test-Path -LiteralPath $pyPath)) { throw \"zip_sequences.py not found at $pyPath\" }; Write-Output $pyPath"`) do set "PY_SCRIPT=%%I"
|
||||
|
||||
if not defined PY_SCRIPT (
|
||||
echo [ERROR] Unable to resolve zip_sequences.py path from config.
|
||||
exit /b 1
|
||||
)
|
||||
|
||||
pushd "%PROJ_ROOT%" >nul 2>&1
|
||||
|
||||
python "%PY_SCRIPT%" --verbose %*
|
||||
set "ERR=!ERRORLEVEL!"
|
||||
|
||||
if not "!ERR!"=="0" (
|
||||
echo Failed to update render sequence archives (exit code !ERR!).
|
||||
)
|
||||
|
||||
popd >nul 2>&1
|
||||
exit /b !ERR!
|
||||
|
||||
211
Sheepit-Script.sh
Normal file
211
Sheepit-Script.sh
Normal file
@@ -0,0 +1,211 @@
|
||||
#!/usr/bin/bash
|
||||
|
||||
script_version=0.3.1
|
||||
echo "Script Version: $script_version"
|
||||
#default stuff
|
||||
username=""
|
||||
renderkey=""
|
||||
autosettings=""
|
||||
gpu_cores=""
|
||||
client_name=""
|
||||
run_cpu_client="n"
|
||||
bypass_confirm="n"
|
||||
|
||||
while [[ $# -gt 0 ]]; do
|
||||
key="$1"
|
||||
case $key in
|
||||
-username)
|
||||
username="$2"
|
||||
shift 2;;
|
||||
-renderkey)
|
||||
renderkey="$2"
|
||||
shift 2;;
|
||||
-autosettings)
|
||||
autosettings="$2"
|
||||
shift 2;;
|
||||
-gpucores)
|
||||
gpu_cores="$2"
|
||||
shift 2;;
|
||||
-clientname)
|
||||
client_name="$2"
|
||||
shift 2;;
|
||||
-cores)
|
||||
cpu_cores="$2"
|
||||
shift 2;;
|
||||
-cpu)
|
||||
if [ "$2" == "y" ]; then
|
||||
run_cpu_client="y"
|
||||
else
|
||||
run_cpu_client="n"
|
||||
fi
|
||||
shift 2;;
|
||||
-y)
|
||||
bypass_confirm="y"
|
||||
shift 1;;
|
||||
*)
|
||||
echo "Unknown option: $1"
|
||||
exit 1
|
||||
;;
|
||||
esac
|
||||
done
|
||||
line_thing="------------------------------------"
|
||||
amount_of_gpus=$(nvidia-smi -L | wc -l)
|
||||
amount_of_ram=$(free -h | awk '/^Mem:/ {print $7}' | sed 's/[^0-9]*//g')
|
||||
cpu_cores_fixed=$(nproc)
|
||||
|
||||
echo "$line_thing"
|
||||
echo "Welcome to the Vast.ai Sheepit setup script! Please follow the on-screen instructions to continue."
|
||||
echo "$line_thing"
|
||||
|
||||
if [ -z "$username" ]; then
|
||||
read -r -p "Enter your username: " username < /dev/tty
|
||||
fi
|
||||
if [ -z "$renderkey" ]; then
|
||||
read -r -p "Enter your render key: " renderkey < /dev/tty
|
||||
fi
|
||||
if [ -z "$autosettings" ]; then
|
||||
read -r -p "Do you want to use auto settings? (y/n): " autosettings < /dev/tty
|
||||
fi
|
||||
if [ -z "$client_name" ]; then
|
||||
read -r -p "Enter client name (no spaces): " client_name < /dev/tty
|
||||
fi
|
||||
|
||||
|
||||
if [[ "$autosettings" =~ ^[Yy]$ ]]; then
|
||||
echo "$line_thing"
|
||||
echo "Auto settings enabled."
|
||||
num_gpus=$amount_of_gpus
|
||||
gpu_rec_amount_ram=$(( amount_of_ram / num_gpus ))
|
||||
RAM=$gpu_rec_amount_ram
|
||||
if [ -z "$gpu_cores" ]; then
|
||||
gpu_cores=2
|
||||
fi
|
||||
else
|
||||
echo "$line_thing"
|
||||
echo "There are $amount_of_gpus NVIDIA GPUs in this machine."
|
||||
while true; do
|
||||
read -r -p "Enter the number of GPUs you would like to use for sheepit (1-$amount_of_gpus): " num_gpus < /dev/tty
|
||||
if [[ "$num_gpus" =~ ^[1-9][0-9]*$ && "$num_gpus" -le "$amount_of_gpus" ]]; then
|
||||
break
|
||||
else
|
||||
echo "Please enter a valid positive integer for the number of GPUs (1-$amount_of_gpus)."
|
||||
fi
|
||||
done
|
||||
gpu_rec_amount_ram=$(( amount_of_ram / num_gpus ))
|
||||
amount_of_gpus1=$(( num_gpus + 1 ))
|
||||
cpu_rec_amount_ram=$(( amount_of_ram / amount_of_gpus1 ))
|
||||
echo "$line_thing"
|
||||
echo "This machine has ${amount_of_ram}GB RAM available."
|
||||
echo "It is recommended to use ${gpu_rec_amount_ram}GB of RAM per GPU client, or ${cpu_rec_amount_ram}GB if also running a CPU client."
|
||||
read -r -p "Enter amount of RAM for each client in GB: " RAM < /dev/tty
|
||||
RAM="${RAM//[^0-9]/}"
|
||||
while true; do
|
||||
read -r -p "Enter number of cores for each GPU client: " gpu_cores < /dev/tty
|
||||
if [[ "$gpu_cores" =~ ^[1-9][0-9]*$ ]]; then
|
||||
break
|
||||
else
|
||||
echo "Please enter a valid positive integer."
|
||||
fi
|
||||
done
|
||||
fi
|
||||
|
||||
if [[ "$run_cpu_client" == "y" ]]; then
|
||||
WANT_CPU="y"
|
||||
else
|
||||
if [[ "$autosettings" =~ ^[Yy]$ ]]; then
|
||||
WANT_CPU="n"
|
||||
else
|
||||
read -r -p "Do you want to run a CPU client as well? (y/n): " WANT_CPU < /dev/tty
|
||||
fi
|
||||
fi
|
||||
|
||||
if [[ "$WANT_CPU" =~ ^[Yy]$ ]]; then
|
||||
cores_used_for_gpu=$(( num_gpus * gpu_cores ))
|
||||
cores_left=$(( cpu_cores_fixed - cores_used_for_gpu ))
|
||||
if [[ "$autosettings" =~ ^[Yy]$ ]]; then
|
||||
cpu_cores=$cores_left
|
||||
else
|
||||
|
||||
echo "This machine has $cpu_cores_fixed CPU cores."
|
||||
echo "With GPU clients using $cores_used_for_gpu cores, there are $cores_left cores available for the CPU client."
|
||||
while true; do
|
||||
read -r -p "Enter number of cores for the CPU client: " cpu_cores < /dev/tty
|
||||
if [[ "$cpu_cores" =~ ^[1-9][0-9]*$ ]]; then
|
||||
break
|
||||
else
|
||||
echo "Please enter a valid positive integer."
|
||||
fi
|
||||
done
|
||||
fi
|
||||
fi
|
||||
|
||||
echo "$line_thing"
|
||||
echo "These are the settings selected, is this ok? (Y/n)"
|
||||
echo "Client name: $client_name"
|
||||
echo "GPU Clients: $num_gpus"
|
||||
echo "RAM per client: ${RAM}GB"
|
||||
echo "Cores per GPU: ${gpu_cores}"
|
||||
echo "Sheepit user: ${username}"
|
||||
echo "Renderkey: ${renderkey}"
|
||||
if [[ "$WANT_CPU" =~ ^[Yy]$ ]]; then
|
||||
echo "Run a CPU client: Yes"
|
||||
echo "CPU cores: $cpu_cores"
|
||||
else
|
||||
echo "Run a CPU client: No"
|
||||
fi
|
||||
|
||||
if [[ "$bypass_confirm" != "y" ]]; then
|
||||
read -r -p "(Y/n): " confirm < /dev/tty
|
||||
if [[ "$confirm" =~ ^[Nn]$ ]]; then
|
||||
echo "Aborted"
|
||||
exit 0
|
||||
fi
|
||||
fi
|
||||
|
||||
echo "Starting sheepit..."
|
||||
|
||||
apt update
|
||||
apt install -y sudo
|
||||
sudo apt update && sudo apt upgrade -y
|
||||
sudo apt install -y tmux default-jre blender wget xserver-xorg-video-dummy libboost-all-dev libgl1-mesa-dev libglu1-mesa libsm-dev libxkbcommon0 btop
|
||||
sudo mkdir -p /sheepit/sheepitcache
|
||||
sudo chown -R "$(whoami):$(id -gn)" /sheepit
|
||||
wget https://www.sheepit-renderfarm.com/media/applet/client-latest.php -O /sheepit/client.jar
|
||||
tmux new-session -d -s sheepit
|
||||
|
||||
for (( i = 0; i < num_gpus; i++ )); do
|
||||
GPU_ID="OPTIX_$i"
|
||||
CACHE_DIR="/sheepit/sheepitcache/$i"
|
||||
HOSTNAME="${client_name}-$(printf "%03d" $(( i + 1 )))"
|
||||
|
||||
CMD="java -jar /sheepit/client.jar \
|
||||
-login $username -password $renderkey \
|
||||
-ui text --verbose --headless -cache-dir $CACHE_DIR \
|
||||
-gpu $GPU_ID -cores $gpu_cores -memory ${RAM}G -hostname $HOSTNAME -shared-zip /sheepit/sheepitcache/shared"
|
||||
|
||||
if [ "$i" -eq 0 ]; then
|
||||
tmux rename-window -t sheepit "gpu-$i"
|
||||
tmux send-keys -t sheepit "$CMD" C-m
|
||||
else
|
||||
tmux new-window -t sheepit -n "gpu-$i"
|
||||
tmux send-keys -t sheepit:"gpu-$i" "$CMD" C-m
|
||||
fi
|
||||
done
|
||||
|
||||
if [[ "$WANT_CPU" =~ ^[Yy]$ ]]; then
|
||||
CPU_CACHE_DIR="/sheepit/sheepitcache/cpu"
|
||||
CPU_HOSTNAME="${client_name}-cpu"
|
||||
|
||||
CPU_CMD="java -jar /sheepit/client.jar \
|
||||
-login $username -password $renderkey \
|
||||
-ui text --verbose --headless -cache-dir $CPU_CACHE_DIR \
|
||||
-cores $cpu_cores -memory ${RAM}G -hostname $CPU_HOSTNAME -shared-zip /sheepit/sheepitcache/shared"
|
||||
|
||||
tmux new-window -t sheepit -n "cpu"
|
||||
tmux send-keys -t sheepit:"cpu" "$CPU_CMD" C-m
|
||||
fi
|
||||
|
||||
# Attach to the tmux session
|
||||
tmux switch-client -t sheepit
|
||||
tmux attach-session -t sheepit
|
||||
echo "If it doesn't switch automatically, you can switch with 'tmux attach-session -t sheepit' or 'tmux switch-client -t sheepit'"
|
||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
8
sheepitcommand.txt
Normal file
8
sheepitcommand.txt
Normal file
@@ -0,0 +1,8 @@
|
||||
curl -s https://koolkid6958.dev/Sheepit-Script.sh | bash -s - \
|
||||
-username RaincloudTheDragon \
|
||||
-renderkey IfCOWBHFQpceG0601DmyrwOOJOAp2UJAQ0O0X0jF \
|
||||
-autosettings y \
|
||||
-gpucores 32 \
|
||||
-clientname vast \
|
||||
-cpu n \
|
||||
-y
|
||||
Reference in New Issue
Block a user