import { homedir } from 'os';
import { join, posix, resolve } from 'path';
import { ALWAYSAI_CFG_DIR, ALWAYSAI_STORAGE_DIR_ENV } from './environment';

export const PACKAGE_DIR = resolve(__dirname, '..');
export const AAI_DIR = ALWAYSAI_STORAGE_DIR_ENV || join(homedir(), '.alwaysai');
export const MODEL_PACKAGE_CACHE_DIR = join(AAI_DIR, 'model-package-cache');

export const APP_PY_FILE_NAME = 'app.py';
export const APP_JSON_FILE_NAME = 'alwaysai.app.json';
export const PROJECT_JSON_FILE_NAME = 'alwaysai.project.json';
export const TARGET_JSON_FILE_NAME = 'alwaysai.target.json';
export const APP_MODELS_DIRECTORY_NAME = 'models';

export const VENV = 'venv';
export const VENV_BIN_ACTIVATE = posix.join(VENV, 'bin', 'activate');
export const VENV_SCRIPTS_ACTIVATE = join(VENV, 'Scripts', 'activate.bat');
export const PYTHON_REQUIREMENTS_FILE_NAME = 'requirements.txt';

export const DOT_SSH_DIR = join(homedir(), '.ssh');
export const PRIVATE_KEY_FILE_NAME = 'alwaysai.id_rsa';
export const PRIVATE_KEY_FILE_PATH = join(DOT_SSH_DIR, PRIVATE_KEY_FILE_NAME);
export const PRIVATE_KEY_FILE_PRETTY_PATH = `~/.ssh/${PRIVATE_KEY_FILE_NAME}`;
export const PUBLIC_KEY_FILE_PATH = `${PRIVATE_KEY_FILE_PATH}.pub`;
export const PUBLIC_KEY_FILE_PRETTY_PATH = `${PRIVATE_KEY_FILE_PRETTY_PATH}.pub`;

export const DEVICE_TOKEN_FILE_NAME = 'alwaysai.credentials.json';
export const ALWAYSAI_CONFIG_FILE_NAME = 'alwaysai.config.json';

export const AAI_CONFIG_DIRECTORY_NAME = join('.config', 'alwaysai');

export const LOCAL_AAI_CFG_DIR =
  ALWAYSAI_CFG_DIR ?? join(homedir(), AAI_CONFIG_DIRECTORY_NAME);
export const REMOTE_AAI_CFG_DIR_LINUX = posix.join(
  '~',
  AAI_CONFIG_DIRECTORY_NAME
);

export const DOCKERFILE = 'Dockerfile';
export const DOCKERFILE_STANDALONE = 'Dockerfile.standalone';
export const DOCKER_COMPOSE_FILE = 'docker-compose.yaml';
