/*
 * Copyright (c) 2024-2025 Huawei Device Co., Ltd.
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 * http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
import { execSync } from "node:child_process"
import { dirname, resolve, join } from "node:path";
import { fileURLToPath } from "node:url";

const __dirname = dirname(fileURLToPath(import.meta.url));
const IDLIZE_PATH = resolve(__dirname, '..')
const EXTERNAL_PATH = resolve(__dirname, '..', '..', 'external')
const INTEROP_PATH = join(EXTERNAL_PATH, 'interop')

const PACKAGES = [
    '@koalaui/interop'
]

function $(...input) {
    const command = input.join(' && ')
    console.log(`> ${command}`)
    execSync(command, { stdio: 'inherit' })
}

function enableDevEnv() {
    $(`cd ${INTEROP_PATH}`, `npm link`)
    $(`cd ${IDLIZE_PATH}`, `npm link ${PACKAGES.join(' ')}`)
}

function disableDevEnv() {
   $(`cd ${IDLIZE_PATH}`, 'npm i')
}

function main(argv) {
    const flag = argv[2]
    if (!flag || flag === 'on') {
        enableDevEnv()
        return
    }
    if (flag && flag === 'off') {
        disableDevEnv()
        return
    }
}
main(process.argv)