mirror of
https://gitee.com/sui-feng-cb/AzurLaneAutoScript1
synced 2026-03-25 15:58:14 +08:00
Merge pull request #1238 from n0k0m3/dev_docker
Improve docker deployment
This commit is contained in:
133
config/deploy.template-docker-cn.yaml
Normal file
133
config/deploy.template-docker-cn.yaml
Normal file
@@ -0,0 +1,133 @@
|
|||||||
|
Deploy:
|
||||||
|
Git:
|
||||||
|
# URL of AzurLaneAutoScript repository
|
||||||
|
# [CN user] Use 'https://gitee.com/LmeSzinc/AzurLaneAutoScript' for faster and more stable download
|
||||||
|
# [Other] Use 'https://github.com/LmeSzinc/AzurLaneAutoScript'
|
||||||
|
Repository: https://gitee.com/LmeSzinc/AzurLaneAutoScript
|
||||||
|
# Branch of Alas
|
||||||
|
# [Developer] Use 'dev', 'app', etc, to try new features
|
||||||
|
# [Other] Use 'master', the stable branch
|
||||||
|
Branch: master
|
||||||
|
# Filepath of git executable `git.exe`
|
||||||
|
# [Easy installer] Use './toolkit/Git/mingw64/bin/git.exe'
|
||||||
|
# [Other] Use you own git
|
||||||
|
GitExecutable: /usr/bin/git
|
||||||
|
# Set git proxy
|
||||||
|
# [CN user] Use your local http proxy (http://127.0.0.1:{port}) or socks5 proxy (socks5://127.0.0.1:{port})
|
||||||
|
# [Other] Use null
|
||||||
|
GitProxy: null
|
||||||
|
# Update Alas at startup
|
||||||
|
# [In most cases] Use true
|
||||||
|
AutoUpdate: true
|
||||||
|
# Whether to keep local changes during update
|
||||||
|
# User settings, logs and screenshots will be kept, no mather this is true or false
|
||||||
|
# [Developer] Use true, if you modified the code
|
||||||
|
# [Other] Use false
|
||||||
|
KeepLocalChanges: false
|
||||||
|
|
||||||
|
Python:
|
||||||
|
# Filepath of python executable `python.exe`
|
||||||
|
# [Easy installer] Use './toolkit/python.exe'
|
||||||
|
# [Other] Use you own python, and its version should be 3.7.6 64bit
|
||||||
|
PythonExecutable: /app/pyroot/bin/python
|
||||||
|
# URL of pypi mirror
|
||||||
|
# [CN user] Use 'https://pypi.tuna.tsinghua.edu.cn/simple' for faster and more stable download
|
||||||
|
# [Other] Use null
|
||||||
|
PypiMirror: https://pypi.tuna.tsinghua.edu.cn/simple
|
||||||
|
# Install dependencies at startup
|
||||||
|
# [In most cases] Use true
|
||||||
|
InstallDependencies: true
|
||||||
|
# Path to requirements.txt
|
||||||
|
# [In most cases] Use 'requirements.txt'
|
||||||
|
# [In AidLux] Use './deploy/AidLux/{version}/requirements.txt', version is default to 0.92
|
||||||
|
RequirementsFile: ./deploy/docker/requirements.txt
|
||||||
|
|
||||||
|
Adb:
|
||||||
|
# Filepath of ADB executable `adb.exe`
|
||||||
|
# [Easy installer] Use './toolkit/Lib/site-packages/adbutils/binaries/adb.exe'
|
||||||
|
# [Other] Use you own latest ADB, but not the ADB in your emulator
|
||||||
|
AdbExecutable: /usr/bin/adb
|
||||||
|
# Whether to replace ADB
|
||||||
|
# Chinese emulators (NoxPlayer, LDPlayer, MemuPlayer, MuMuPlayer) use their own ADB, instead of the latest.
|
||||||
|
# Different ADB servers will terminate each other at startup, resulting in disconnection.
|
||||||
|
# For compatibility, we have to replace them all.
|
||||||
|
# This will do:
|
||||||
|
# 1. Terminate current ADB server
|
||||||
|
# 2. Rename ADB from all emulators to *.bak and replace them by the AdbExecutable set above
|
||||||
|
# 3. Brute-force connect to all available emulator instances
|
||||||
|
# [In most cases] Use true
|
||||||
|
# [In few cases] Use false, if you have other programs using ADB.
|
||||||
|
ReplaceAdb: true
|
||||||
|
# Brute-force connect to all available emulator instances
|
||||||
|
# [In most cases] Use true
|
||||||
|
AutoConnect: true
|
||||||
|
# Re-install uiautomator2
|
||||||
|
# [In most cases] Use true
|
||||||
|
InstallUiautomator2: true
|
||||||
|
|
||||||
|
Ocr:
|
||||||
|
# Run Ocr as a service, can reduce memory usage by not import mxnet everytime you start an alas instance
|
||||||
|
|
||||||
|
# Whether to use ocr server
|
||||||
|
# [Default] false
|
||||||
|
UseOcrServer: false
|
||||||
|
# Whether to start ocr server when start GUI
|
||||||
|
# [Default] false
|
||||||
|
StartOcrServer: false
|
||||||
|
# Port of ocr server runs by GUI
|
||||||
|
# [Default] 22268
|
||||||
|
OcrServerPort: 22268
|
||||||
|
# Address of ocr server for alas instance to connect
|
||||||
|
# [Default] 127.0.0.1:22268
|
||||||
|
OcrClientAddress: 127.0.0.1:22268
|
||||||
|
|
||||||
|
Update:
|
||||||
|
# Use auto update and builtin updater feature
|
||||||
|
# This may cause problem https://github.com/LmeSzinc/AzurLaneAutoScript/issues/876
|
||||||
|
EnableReload: true
|
||||||
|
# Check update every X minute
|
||||||
|
# [Disable] 0
|
||||||
|
# [Default] 5
|
||||||
|
CheckUpdateInterval: 5
|
||||||
|
# Scheduled restart time
|
||||||
|
# If there are updates, Alas will automatically restart and update at this time every day
|
||||||
|
# and run all alas instances that running before restarted
|
||||||
|
# [Disable] null
|
||||||
|
# [Default] 03:50
|
||||||
|
AutoRestartTime: 03:50
|
||||||
|
|
||||||
|
Misc:
|
||||||
|
# Enable discord rich presence
|
||||||
|
DiscordRichPresence: false
|
||||||
|
|
||||||
|
Webui:
|
||||||
|
# --host. Host to listen
|
||||||
|
# [Use IPv6] '::'
|
||||||
|
# [In most cases] Default to '0.0.0.0'
|
||||||
|
WebuiHost: 0.0.0.0
|
||||||
|
# --port. Port to listen
|
||||||
|
# You will be able to access webui via `http://{host}:{port}`
|
||||||
|
# [In most cases] Default to 22267
|
||||||
|
WebuiPort: 22267
|
||||||
|
# Language to use on web ui
|
||||||
|
# 'zh-CN' for Chinese simplified
|
||||||
|
# 'en-US' for English
|
||||||
|
# 'ja-JP' for Japanese
|
||||||
|
# 'zh-TW' for Chinese traditional
|
||||||
|
Language: en-US
|
||||||
|
# Theme of web ui
|
||||||
|
# 'default' for light theme
|
||||||
|
# 'dark' for dark theme
|
||||||
|
Theme: default
|
||||||
|
# Follow system DPI scaling
|
||||||
|
# [In most cases] true
|
||||||
|
# [In few cases] false to make Alas smaller, if you have a low resolution but high DPI scaling.
|
||||||
|
DpiScaling: true
|
||||||
|
# --key. Password of web ui
|
||||||
|
# Useful when expose Alas to the public network
|
||||||
|
Password: null
|
||||||
|
# --cdn. Use jsdelivr cdn for pywebio static files (css, js).
|
||||||
|
# 'true' for jsdelivr cdn
|
||||||
|
# 'false' for self host cdn (automatically)
|
||||||
|
# 'https://path.to.your/cdn' to use custom cdn
|
||||||
|
CDN: false
|
||||||
133
config/deploy.template-docker.yaml
Normal file
133
config/deploy.template-docker.yaml
Normal file
@@ -0,0 +1,133 @@
|
|||||||
|
Deploy:
|
||||||
|
Git:
|
||||||
|
# URL of AzurLaneAutoScript repository
|
||||||
|
# [CN user] Use 'https://gitee.com/LmeSzinc/AzurLaneAutoScript' for faster and more stable download
|
||||||
|
# [Other] Use 'https://github.com/LmeSzinc/AzurLaneAutoScript'
|
||||||
|
Repository: https://github.com/LmeSzinc/AzurLaneAutoScript
|
||||||
|
# Branch of Alas
|
||||||
|
# [Developer] Use 'dev', 'app', etc, to try new features
|
||||||
|
# [Other] Use 'master', the stable branch
|
||||||
|
Branch: master
|
||||||
|
# Filepath of git executable `git.exe`
|
||||||
|
# [Easy installer] Use './toolkit/Git/mingw64/bin/git.exe'
|
||||||
|
# [Other] Use you own git
|
||||||
|
GitExecutable: /usr/bin/git
|
||||||
|
# Set git proxy
|
||||||
|
# [CN user] Use your local http proxy (http://127.0.0.1:{port}) or socks5 proxy (socks5://127.0.0.1:{port})
|
||||||
|
# [Other] Use null
|
||||||
|
GitProxy: null
|
||||||
|
# Update Alas at startup
|
||||||
|
# [In most cases] Use true
|
||||||
|
AutoUpdate: true
|
||||||
|
# Whether to keep local changes during update
|
||||||
|
# User settings, logs and screenshots will be kept, no mather this is true or false
|
||||||
|
# [Developer] Use true, if you modified the code
|
||||||
|
# [Other] Use false
|
||||||
|
KeepLocalChanges: false
|
||||||
|
|
||||||
|
Python:
|
||||||
|
# Filepath of python executable `python.exe`
|
||||||
|
# [Easy installer] Use './toolkit/python.exe'
|
||||||
|
# [Other] Use you own python, and its version should be 3.7.6 64bit
|
||||||
|
PythonExecutable: /app/pyroot/bin/python
|
||||||
|
# URL of pypi mirror
|
||||||
|
# [CN user] Use 'https://pypi.tuna.tsinghua.edu.cn/simple' for faster and more stable download
|
||||||
|
# [Other] Use null
|
||||||
|
PypiMirror: null
|
||||||
|
# Install dependencies at startup
|
||||||
|
# [In most cases] Use true
|
||||||
|
InstallDependencies: true
|
||||||
|
# Path to requirements.txt
|
||||||
|
# [In most cases] Use 'requirements.txt'
|
||||||
|
# [In AidLux] Use './deploy/AidLux/{version}/requirements.txt', version is default to 0.92
|
||||||
|
RequirementsFile: ./deploy/docker/requirements.txt
|
||||||
|
|
||||||
|
Adb:
|
||||||
|
# Filepath of ADB executable `adb.exe`
|
||||||
|
# [Easy installer] Use './toolkit/Lib/site-packages/adbutils/binaries/adb.exe'
|
||||||
|
# [Other] Use you own latest ADB, but not the ADB in your emulator
|
||||||
|
AdbExecutable: /usr/bin/adb
|
||||||
|
# Whether to replace ADB
|
||||||
|
# Chinese emulators (NoxPlayer, LDPlayer, MemuPlayer, MuMuPlayer) use their own ADB, instead of the latest.
|
||||||
|
# Different ADB servers will terminate each other at startup, resulting in disconnection.
|
||||||
|
# For compatibility, we have to replace them all.
|
||||||
|
# This will do:
|
||||||
|
# 1. Terminate current ADB server
|
||||||
|
# 2. Rename ADB from all emulators to *.bak and replace them by the AdbExecutable set above
|
||||||
|
# 3. Brute-force connect to all available emulator instances
|
||||||
|
# [In most cases] Use true
|
||||||
|
# [In few cases] Use false, if you have other programs using ADB.
|
||||||
|
ReplaceAdb: true
|
||||||
|
# Brute-force connect to all available emulator instances
|
||||||
|
# [In most cases] Use true
|
||||||
|
AutoConnect: true
|
||||||
|
# Re-install uiautomator2
|
||||||
|
# [In most cases] Use true
|
||||||
|
InstallUiautomator2: true
|
||||||
|
|
||||||
|
Ocr:
|
||||||
|
# Run Ocr as a service, can reduce memory usage by not import mxnet everytime you start an alas instance
|
||||||
|
|
||||||
|
# Whether to use ocr server
|
||||||
|
# [Default] false
|
||||||
|
UseOcrServer: false
|
||||||
|
# Whether to start ocr server when start GUI
|
||||||
|
# [Default] false
|
||||||
|
StartOcrServer: false
|
||||||
|
# Port of ocr server runs by GUI
|
||||||
|
# [Default] 22268
|
||||||
|
OcrServerPort: 22268
|
||||||
|
# Address of ocr server for alas instance to connect
|
||||||
|
# [Default] 127.0.0.1:22268
|
||||||
|
OcrClientAddress: 127.0.0.1:22268
|
||||||
|
|
||||||
|
Update:
|
||||||
|
# Use auto update and builtin updater feature
|
||||||
|
# This may cause problem https://github.com/LmeSzinc/AzurLaneAutoScript/issues/876
|
||||||
|
EnableReload: true
|
||||||
|
# Check update every X minute
|
||||||
|
# [Disable] 0
|
||||||
|
# [Default] 5
|
||||||
|
CheckUpdateInterval: 5
|
||||||
|
# Scheduled restart time
|
||||||
|
# If there are updates, Alas will automatically restart and update at this time every day
|
||||||
|
# and run all alas instances that running before restarted
|
||||||
|
# [Disable] null
|
||||||
|
# [Default] 03:50
|
||||||
|
AutoRestartTime: 03:50
|
||||||
|
|
||||||
|
Misc:
|
||||||
|
# Enable discord rich presence
|
||||||
|
DiscordRichPresence: false
|
||||||
|
|
||||||
|
Webui:
|
||||||
|
# --host. Host to listen
|
||||||
|
# [Use IPv6] '::'
|
||||||
|
# [In most cases] Default to '0.0.0.0'
|
||||||
|
WebuiHost: 0.0.0.0
|
||||||
|
# --port. Port to listen
|
||||||
|
# You will be able to access webui via `http://{host}:{port}`
|
||||||
|
# [In most cases] Default to 22267
|
||||||
|
WebuiPort: 22267
|
||||||
|
# Language to use on web ui
|
||||||
|
# 'zh-CN' for Chinese simplified
|
||||||
|
# 'en-US' for English
|
||||||
|
# 'ja-JP' for Japanese
|
||||||
|
# 'zh-TW' for Chinese traditional
|
||||||
|
Language: en-US
|
||||||
|
# Theme of web ui
|
||||||
|
# 'default' for light theme
|
||||||
|
# 'dark' for dark theme
|
||||||
|
Theme: default
|
||||||
|
# Follow system DPI scaling
|
||||||
|
# [In most cases] true
|
||||||
|
# [In few cases] false to make Alas smaller, if you have a low resolution but high DPI scaling.
|
||||||
|
DpiScaling: true
|
||||||
|
# --key. Password of web ui
|
||||||
|
# Useful when expose Alas to the public network
|
||||||
|
Password: null
|
||||||
|
# --cdn. Use jsdelivr cdn for pywebio static files (css, js).
|
||||||
|
# 'true' for jsdelivr cdn
|
||||||
|
# 'false' for self host cdn (automatically)
|
||||||
|
# 'https://path.to.your/cdn' to use custom cdn
|
||||||
|
CDN: false
|
||||||
2
deploy/docker/.dockerignore
Normal file
2
deploy/docker/.dockerignore
Normal file
@@ -0,0 +1,2 @@
|
|||||||
|
Docker-run.sh
|
||||||
|
requirements_generator.py
|
||||||
29
deploy/docker/Dockerfile
Normal file
29
deploy/docker/Dockerfile
Normal file
@@ -0,0 +1,29 @@
|
|||||||
|
FROM condaforge/mambaforge:4.12.0-0
|
||||||
|
|
||||||
|
# Install dependencies
|
||||||
|
RUN apt update && \
|
||||||
|
apt install -y adb netcat
|
||||||
|
|
||||||
|
# Create user
|
||||||
|
RUN useradd -m abc && \
|
||||||
|
usermod -G users abc
|
||||||
|
|
||||||
|
# Set remote and local dirs
|
||||||
|
WORKDIR /app
|
||||||
|
ENV SOURCE=./
|
||||||
|
RUN chown abc:abc /app
|
||||||
|
USER abc
|
||||||
|
|
||||||
|
# Install the base conda environment
|
||||||
|
ENV PYROOT=/app/pyroot
|
||||||
|
RUN mamba create --prefix $PYROOT python==3.7.6 -y
|
||||||
|
|
||||||
|
# Install the requriements to the conda environment
|
||||||
|
COPY --chown=abc:abc $SOURCE/requirements.txt /app/requirements.txt
|
||||||
|
RUN $PYROOT/bin/pip install -r /app/requirements.txt
|
||||||
|
|
||||||
|
# Initial download of UIAutomator2 is really slow with appetizer mirror
|
||||||
|
RUN sed -i "s#path = mirror_download(url,#path = cache_download(url,#" $PYROOT/lib/python3.7/site-packages/uiautomator2/init.py
|
||||||
|
|
||||||
|
# When running the image, mount the ALAS folder into the container
|
||||||
|
CMD $PYROOT/bin/python /app/AzurLaneAutoScript/gui.py
|
||||||
27
deploy/docker/requirements.txt
Normal file
27
deploy/docker/requirements.txt
Normal file
@@ -0,0 +1,27 @@
|
|||||||
|
numpy==1.16.6
|
||||||
|
scipy==1.4.1
|
||||||
|
pillow
|
||||||
|
opencv-python-headless
|
||||||
|
imageio
|
||||||
|
lz4
|
||||||
|
tqdm
|
||||||
|
adbutils==0.11.0
|
||||||
|
uiautomator2==2.16.7
|
||||||
|
retrying
|
||||||
|
mxnet==1.6.0
|
||||||
|
cnocr==1.2.2
|
||||||
|
jellyfish
|
||||||
|
pyyaml
|
||||||
|
inflection
|
||||||
|
pywebio==1.5.2
|
||||||
|
starlette==0.14.2
|
||||||
|
anyio==1.3.1
|
||||||
|
uvicorn[standard]==0.17.6
|
||||||
|
aiofiles
|
||||||
|
wrapt==1.13.1
|
||||||
|
prettytable==2.2.1
|
||||||
|
pypresence==4.2.1
|
||||||
|
rich==11.0.0
|
||||||
|
zerorpc==0.6.3
|
||||||
|
pyzmq==22.3.0
|
||||||
|
atomicwrites
|
||||||
58
deploy/docker/requirements_generator.py
Normal file
58
deploy/docker/requirements_generator.py
Normal file
@@ -0,0 +1,58 @@
|
|||||||
|
import os
|
||||||
|
|
||||||
|
BASE_FOLDER = os.path.dirname(os.path.abspath(__file__))
|
||||||
|
print(BASE_FOLDER)
|
||||||
|
|
||||||
|
def read_file(file):
|
||||||
|
out = {}
|
||||||
|
with open(file, 'r', encoding='utf-8') as f:
|
||||||
|
for line in f.readlines():
|
||||||
|
res = [s.strip() for s in line.split('==')]
|
||||||
|
if len(res) > 1:
|
||||||
|
name, version = res
|
||||||
|
else:
|
||||||
|
name, version = res[0], None
|
||||||
|
out[name] = version
|
||||||
|
|
||||||
|
return out
|
||||||
|
|
||||||
|
|
||||||
|
def write_file(file, data):
|
||||||
|
lines = []
|
||||||
|
for name, version in data.items():
|
||||||
|
if version:
|
||||||
|
lines.append(f'{name}=={version}')
|
||||||
|
else:
|
||||||
|
lines.append(str(name))
|
||||||
|
|
||||||
|
with open(file, 'w', encoding='utf-8', newline='') as f:
|
||||||
|
f.write('\n'.join(lines))
|
||||||
|
|
||||||
|
|
||||||
|
def docker_requirements_generate(requirements_in='requirements-in.txt'):
|
||||||
|
|
||||||
|
if not os.path.exists(requirements_in):
|
||||||
|
requirements_in = os.path.join(BASE_FOLDER+"/../../", requirements_in)
|
||||||
|
assert os.path.exists(requirements_in)
|
||||||
|
|
||||||
|
requirements = read_file(requirements_in)
|
||||||
|
|
||||||
|
print(f'Generate requirements for Docker image')
|
||||||
|
|
||||||
|
new = {}
|
||||||
|
print(requirements)
|
||||||
|
for name, version in requirements.items():
|
||||||
|
# alas-webapp is for windows only
|
||||||
|
if name == 'alas-webapp':
|
||||||
|
continue
|
||||||
|
if name == 'opencv-python':
|
||||||
|
name = 'opencv-python-headless'
|
||||||
|
version = None
|
||||||
|
# if name == 'numpy':
|
||||||
|
# version = None
|
||||||
|
new[name] = version
|
||||||
|
|
||||||
|
write_file(os.path.join(BASE_FOLDER, f'./requirements.txt'), data=new)
|
||||||
|
|
||||||
|
if __name__ == '__main__':
|
||||||
|
docker_requirements_generate()
|
||||||
@@ -1,20 +0,0 @@
|
|||||||
FROM continuumio/anaconda3:2021.05
|
|
||||||
|
|
||||||
# Set remote and local dirs
|
|
||||||
WORKDIR /app
|
|
||||||
ENV SOURCE=./
|
|
||||||
|
|
||||||
# Install the base conda environment
|
|
||||||
ENV PYROOT=/app/pyroot
|
|
||||||
RUN conda create --prefix $PYROOT python==3.7.6 -y
|
|
||||||
|
|
||||||
# CV2 requires libGL.so.1
|
|
||||||
RUN apt update
|
|
||||||
RUN apt install -y libgl1 adb
|
|
||||||
|
|
||||||
# Install the requriements to the conda environment
|
|
||||||
COPY $SOURCE/requirements-in.txt /app/requirements-in.txt
|
|
||||||
RUN $PYROOT/bin/pip install -r /app/requirements-in.txt
|
|
||||||
|
|
||||||
# When running the image, mount the ALAS folder into the container
|
|
||||||
CMD $PYROOT/bin/python /app/AzurLaneAutoScript/gui.py
|
|
||||||
@@ -1,6 +1,7 @@
|
|||||||
import os
|
import os
|
||||||
|
|
||||||
from deploy.AidLux.requirements_generator import aidlux_requirements_generate
|
from deploy.AidLux.requirements_generator import aidlux_requirements_generate
|
||||||
|
from deploy.docker.requirements_generator import docker_requirements_generate
|
||||||
|
|
||||||
# Ensure running in Alas root folder
|
# Ensure running in Alas root folder
|
||||||
os.chdir(os.path.join(os.path.dirname(__file__), '../'))
|
os.chdir(os.path.join(os.path.dirname(__file__), '../'))
|
||||||
@@ -37,3 +38,4 @@ def requirements_modify(file='requirements.txt'):
|
|||||||
if __name__ == '__main__':
|
if __name__ == '__main__':
|
||||||
requirements_modify()
|
requirements_modify()
|
||||||
aidlux_requirements_generate()
|
aidlux_requirements_generate()
|
||||||
|
docker_requirements_generate()
|
||||||
|
|||||||
12
docker-compose.yml
Normal file
12
docker-compose.yml
Normal file
@@ -0,0 +1,12 @@
|
|||||||
|
version: '3.7'
|
||||||
|
services:
|
||||||
|
ALAS:
|
||||||
|
network_mode: host
|
||||||
|
volumes:
|
||||||
|
- '.:/app/AzurLaneAutoScript:rw'
|
||||||
|
- '/etc/localtime:/etc/localtime:ro'
|
||||||
|
container_name: 'alas'
|
||||||
|
image: 'alas'
|
||||||
|
build:
|
||||||
|
context: ./deploy/docker/
|
||||||
|
dockerfile: ./Dockerfile
|
||||||
@@ -387,6 +387,13 @@ class ConfigGenerator:
|
|||||||
'AdbExecutable': '/usr/bin/adb',
|
'AdbExecutable': '/usr/bin/adb',
|
||||||
}
|
}
|
||||||
|
|
||||||
|
docker = {
|
||||||
|
'GitExecutable': '/usr/bin/git',
|
||||||
|
'PythonExecutable': '/app/pyroot/bin/python',
|
||||||
|
'RequirementsFile': './deploy/docker/requirements.txt',
|
||||||
|
'AdbExecutable': '/usr/bin/adb',
|
||||||
|
}
|
||||||
|
|
||||||
def update(suffix, *args):
|
def update(suffix, *args):
|
||||||
file = f'./config/deploy.{suffix}.yaml'
|
file = f'./config/deploy.{suffix}.yaml'
|
||||||
new = deepcopy(template)
|
new = deepcopy(template)
|
||||||
@@ -398,6 +405,8 @@ class ConfigGenerator:
|
|||||||
update('template-cn', cn)
|
update('template-cn', cn)
|
||||||
update('template-AidLux', aidlux)
|
update('template-AidLux', aidlux)
|
||||||
update('template-AidLux-cn', aidlux, cn)
|
update('template-AidLux-cn', aidlux, cn)
|
||||||
|
update('template-docker', docker)
|
||||||
|
update('template-docker-cn', docker, cn)
|
||||||
|
|
||||||
def insert_package(self):
|
def insert_package(self):
|
||||||
option = deep_get(self.argument, keys='Emulator.PackageName.option')
|
option = deep_get(self.argument, keys='Emulator.PackageName.option')
|
||||||
|
|||||||
Reference in New Issue
Block a user