-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathindex.js
47 lines (46 loc) · 2.17 KB
/
index.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
const os = require('os')
const fs = require('fs')
const path = require('path')
class Automatic {
// set up COMMANDLINE_ARGS inside webui-user.sh or webui.bat
async config(req, ondata, kernel) {
let graphics = await kernel.system.graphics()
let platform = os.platform()
let vendor = graphics.controllers[0].vendor
ondata({ raw: `\r\nVendor: ${vendor}\r\n` })
let legacy = req.params && req.params.legacy
// if legacy => ""
// if SDXL (not legacy) => "--no-download-sd-model"
let defaultArgs = (legacy ? "" : "--no-download-sd-model ")
if (platform === 'darwin') {
if (/apple/i.test(vendor)) {
defaultArgs += "--skip-torch-cuda-test --upcast-sampling --use-cpu interrogate --no-half --api"
} else {
defaultArgs += "--skip-torch-cuda-test --upcast-sampling --use-cpu all --no-half --api"
}
let text = await fs.promises.readFile(path.resolve(__dirname, "automatic", "webui-user.sh"), "utf8")
let re = /^(#?)(export COMMANDLINE_ARGS=)(.+)$/m
let newtext = text.replace(re, `$2"${defaultArgs}"`)
await fs.promises.writeFile(path.resolve(__dirname, "automatic", "webui-user.sh"), newtext)
} else if (platform === 'win32') {
defaultArgs += "--xformers --no-half-vae --api"
let text = await fs.promises.readFile(path.resolve(__dirname, "automatic", "webui.bat"), "utf8")
let re = /^(set COMMANDLINE_ARGS=)(.*)$/m
let newtext = text.replace(re, `$1${defaultArgs}`)
await fs.promises.writeFile(path.resolve(__dirname, "automatic", "webui.bat"), newtext)
} else {
// linux
if (/amd/i.test(vendor)) {
// lshqqytiger
defaultArgs += "--precision full --no-half-vae --xformers --api"
} else {
defaultArgs += "--xformers --no-half-vae --api"
}
let text = await fs.promises.readFile(path.resolve(__dirname, "automatic", "webui-user.sh"), "utf8")
let re = /^(#?)(export COMMANDLINE_ARGS=)(.+)$/m
let newtext = text.replace(re, `$2"${defaultArgs}"`)
await fs.promises.writeFile(path.resolve(__dirname, "automatic", "webui-user.sh"), newtext)
}
}
}
module.exports = Automatic