#!/usr/bin/python3
#
# Patch service file to accept EULA via envvar
#
#
import sys

ENVVAR_FILENAME = "/etc/mssql-eula.conf"
ENV_ENTRY = "EnvironmentFile=" + ENVVAR_FILENAME
SERVICE_FILENAME = "/lib/systemd/system/mssql-server.service"
ENVVAR_LINE = "ACCEPT_EULA=Y"
REFERENCE_LINE = "WorkingDirectory" # a word to identify a line that will precede the ENV_ENTRY

def check_already_accept():
  try:
    f = open(SERVICE_FILENAME)
    d = f.read()
    f.close()
  except:
    print("Fail to open file " + SERVICE_FILENAME)
    sys.exit(1)

  if d.find(ENVVAR_LINE) >= 0:
    return True
  return False


def set_eula():
  if check_already_accept() == True:
    print("mssql-server EULA patch already applied")
    return 0
  
  # add line into service file
  out = ""
  try:
    f = open(SERVICE_FILENAME)
    lines = f.readlines()
    f.close()
  except:
    print("Fail to open file " + SERVICE_FILENAME)
    return 1
  for l in lines:
    out += l
    if l.find(REFERENCE_LINE) >= 0:
      # add the ENV_ENTRY line
      out += ENV_ENTRY + '\n'

  # write update the file
  try:
    f = open(SERVICE_FILENAME, "w")
    f.write(out)
    f.close()
  except:
    print("Fail to open/write to file " + SERVICE_FILENAME)
    return 1

  # write envvar file
  try:
    f = open(ENVVAR_FILENAME, "w")
    f.write(ENVVAR_LINE + '\n')
    f.close()
  except:
    print("Fail to open/write to file " + ENVVAR_FILENAME)
    return 1
  print("mssql-server EULA accepted via EnvironmentFile")
  return 0

if __name__ == "__main__":
  sys.exit(set_eula())