mirror of
https://github.com/invoke-ai/InvokeAI
synced 2024-08-30 20:32:17 +00:00
feat(installer): port invoke.sh to powershell 5.1 (draft)
This version of powershell is supported on Windows 10 and above
This commit is contained in:
parent
d2856fd88b
commit
10c46c86da
101
installer/templates/invoke.ps1.in
Normal file
101
installer/templates/invoke.ps1.in
Normal file
@ -0,0 +1,101 @@
|
||||
<#
|
||||
.SYNOPSIS
|
||||
Launch script for InvokeAI on Windows.
|
||||
|
||||
.DESCRIPTION
|
||||
This script activates a virtual environment and provides a menu for user operations.
|
||||
It assumes the .venv is in the same directory as this script.
|
||||
|
||||
.NOTES
|
||||
Coauthored by Lincoln Stein, Eugene Brodsky, and Joshua Kimsey
|
||||
Copyright 2023, The InvokeAI Development Team
|
||||
#>
|
||||
|
||||
# Stop on all errors
|
||||
$ErrorActionPreference = "Stop"
|
||||
|
||||
# Ensure we're in the correct folder in case user's CWD is somewhere else
|
||||
$scriptdir = Split-Path -Parent $MyInvocation.MyCommand.Definition
|
||||
Set-Location $scriptdir
|
||||
|
||||
# Activate the virtual environment
|
||||
& .venv\Scripts\Activate.ps1
|
||||
|
||||
$env:INVOKEAI_ROOT = $scriptdir
|
||||
|
||||
function invokeai_update {
|
||||
# Reset the updates dir
|
||||
if (Test-Path invokeai-update) {
|
||||
Remove-Item invokeai-update -Recurse -Force
|
||||
}
|
||||
# The helper downloads the installer to the invokeai-update directory
|
||||
& invokeai-update-helper invokeai-update
|
||||
# Use the install dir as a proxy for the update helper having retrieved the installer
|
||||
if (Test-Path invokeai-update) {
|
||||
# Must deactivate first to avoid issues with the installer
|
||||
& .venv\Scripts\Deactivate.ps1
|
||||
# Run the installer
|
||||
& .\invokeai-update\InvokeAI-Installer\install.ps1 --root $scriptdir
|
||||
# Clean up
|
||||
Remove-Item invokeai-update -Recurse -Force
|
||||
# Always exit after an update - user must re-run the script to get new options
|
||||
exit 0
|
||||
}
|
||||
}
|
||||
|
||||
function do_choice {
|
||||
param ($choice)
|
||||
switch ($choice) {
|
||||
1 {
|
||||
Clear-Host
|
||||
Write-Host "Generate images with a browser-based interface"
|
||||
& invokeai-web @script:PARAMS
|
||||
}
|
||||
2 {
|
||||
Clear-Host
|
||||
Write-Host "Open the developer console"
|
||||
& powershell -NoExit -Command "$MyInvocation.MyCommand.Definition"
|
||||
}
|
||||
3 {
|
||||
Clear-Host
|
||||
Write-Host "Check for updates"
|
||||
invokeai_update
|
||||
}
|
||||
4 {
|
||||
Clear-Host
|
||||
Write-Host "Command-line help"
|
||||
& invokeai-web --help
|
||||
}
|
||||
default {
|
||||
Clear-Host
|
||||
Write-Host "Exiting..."
|
||||
exit
|
||||
}
|
||||
}
|
||||
Clear-Host
|
||||
}
|
||||
|
||||
function do_line_input {
|
||||
Clear-Host
|
||||
Write-Host "What would you like to do?"
|
||||
Write-Host "1: Generate images using the browser-based interface"
|
||||
Write-Host "2: Open the developer console"
|
||||
Write-Host "3: Check for updates"
|
||||
Write-Host "4: Command-line help"
|
||||
Write-Host "Q: Quit`n"
|
||||
Write-Host "To update, download and run the installer from https://github.com/invoke-ai/InvokeAI/releases/latest.`n"
|
||||
$choice = Read-Host "Please enter 1-4, Q: [1]"
|
||||
if (!$choice) { $choice = '1' }
|
||||
do_choice $choice
|
||||
Clear-Host
|
||||
}
|
||||
|
||||
if ($MyInvocation.InvocationName -ne 'powershell') {
|
||||
do {
|
||||
do_line_input
|
||||
} while ($true)
|
||||
} else { # in developer console
|
||||
python --version
|
||||
Write-Host "Press CTRL+D to exit"
|
||||
$env:PS1 = "(InvokeAI) \u@\h \w> "
|
||||
}
|
Loading…
Reference in New Issue
Block a user