@REM
@REM Licensed to the Apache Software Foundation (ASF) under one
@REM or more contributor license agreements.  See the NOTICE file
@REM distributed with this work for additional information
@REM regarding copyright ownership.  The ASF licenses this file
@REM to you under the Apache License, Version 2.0 (the
@REM "License"); you may not use this file except in compliance
@REM with the License.  You may obtain a copy of the License at
@REM
@REM     http://www.apache.org/licenses/LICENSE-2.0
@REM
@REM Unless required by applicable law or agreed to in writing,
@REM software distributed under the License is distributed on an
@REM "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
@REM KIND, either express or implied.  See the License for the
@REM specific language governing permissions and limitations
@REM under the License.
@REM

@echo off

@REM The defaulte venv environment is used if ain_interpreter_dir is not set. Please use absolute path without quotation mark
@REM set ain_interpreter_dir=

@REM Set ain_force_reinstall to 1 to force reinstall ainode
set ain_force_reinstall=0

@REM don't install dependencies online
set ain_install_offline=0

pushd %~dp0..\..
if NOT DEFINED IOTDB_AINODE_HOME set IOTDB_AINODE_HOME=%cd%

:initial
if "%1"=="" goto done
set aux=%1
if "%aux:~0,2%"=="-r" (
    set ain_force_reinstall=1
    shift
    goto initial
)
if "%aux:~0,2%"=="-n" (
    set ain_no_dependencies=--no-dependencies
    shift
    goto initial
)
if "%aux:~0,1%"=="-" (
   set nome=%aux:~1,250%
) else (
   set "%nome%=%1"
   set nome=
)
shift
goto initial

:done
@REM check if the parameters are set
if "%i%"=="" (
    echo No interpreter_dir is set, use default value.
) else (
    set ain_interpreter_dir=%i%
)

echo Script got inputs: ain_interpreter_dir: %ain_interpreter_dir% , ain_force_reinstall: %ain_force_reinstall%
if "%ain_interpreter_dir%"=="" (
    %IOTDB_AINODE_HOME%//venv//Scripts//python.exe -c "import sys; print(sys.executable)" && (
        echo Activate default venv environment
    ) || (
        echo Creating default venv environment
        python -m venv "%IOTDB_AINODE_HOME%//venv"
    )
    set ain_interpreter_dir="%IOTDB_AINODE_HOME%//venv//Scripts//python.exe"
)

@REM Switch the working directory to the directory one level above the script
cd %IOTDB_AINODE_HOME%

echo Confirming ainode
%ain_interpreter_dir% -m pip config set global.disable-pip-version-check true
%ain_interpreter_dir% -m pip list | findstr /C:"apache-iotdb-ainode" >nul
if %errorlevel% == 0 (
    if %ain_force_reinstall% == 0 (
        echo ainode is already installed
        exit /b 0
    )
)

set ain_only_ainode=1
@REM if $ain_install_offline is 1 then do not install dependencies
if %ain_install_offline% == 1 (
    @REM if offline and not -n, then install dependencies
    if "%ain_no_dependencies%"=="" (
        set ain_only_ainode=0
    ) else (
        set ain_only_ainode=1
    )
    set ain_no_dependencies=--no-dependencies
    echo Installing ainode offline----without dependencies...
)

if %ain_force_reinstall% == 1 (
    set ain_force_reinstall=--force-reinstall
) else (
    set ain_force_reinstall=
)

echo Installing ainode...
@REM Print current work dir
cd lib
for %%i in (*.whl *.tar.gz) do (
    echo %%i | findstr "ainode" >nul && (
        echo Installing ainode body: %%i
        %ain_interpreter_dir% -m pip install %%i %ain_force_reinstall% --no-warn-script-location %ain_no_dependencies% --find-links https://download.pytorch.org/whl/cpu/torch_stable.html
    ) || (
        @REM if ain_only_ainode is 0 then install dependencies
        if %ain_only_ainode% == 0 (
            echo Installing dependencies: %%i
            set ain_force_reinstall=--force-reinstall
            %ain_interpreter_dir% -m pip install %%i %ain_force_reinstall% --no-warn-script-location %ain_no_dependencies% --find-links https://download.pytorch.org/whl/cpu/torch_stable.html
        )
    )
    if %errorlevel% == 1 (
        echo Failed to install ainode
        exit /b 1
    )
)
echo ainode is installed successfully
cd ..
exit /b 0
