#!/usr/bin/env bash

# Скрипт для авторизации в npm.yandex-team.ru "устаревшим" способом (legacy — имя + пароль).
# Генерирует npmrc в домашней директории пользователя. Не перезаписывает существующий.
# Принимает параметры в том же порядке, что и `npm login`.
# См. FEI-12614.
#
# Использование:
#   $ npm-legacy-auth <name> <password> <email>

set -e

script="$(basename "$0")"
npmrc="${HOME}/.npmrc"
registry_hostname="npm.yandex-team.ru"

if [[ -n "$1" ]]; then
  user_name=$1
else
  echo "${script}: user name is required"
  exit 1
fi

if [[ -n "$2" ]]; then
  user_pass=$2
else
  echo "${script}: user password is required"
  exit 2
fi

if [[ -n "$3" ]]; then
  user_email=$3
else
  echo "${script}: user email is required"
  exit 3
fi

echo "${script}: will set npm auth credentials for ${user_name} at ${registry_hostname} in ${npmrc}"

if [[ -f ${npmrc} ]]; then
  echo "${script}: warning: ${npmrc} exists, exiting"
  exit 0
fi

# `-n` — не добавлять перенос строки
user_pass_base64=$(echo -n "${user_pass}" | base64)

cat > "${npmrc}" << EOF
//${registry_hostname}/:_password="${user_pass_base64}"
//${registry_hostname}/:username=${user_name}
//${registry_hostname}/:email=${user_email}
//${registry_hostname}/:always-auth=false
EOF
