#!/usr/bin/env python
 
"""
This script will delete clients from the unload depot not accessed since the weeks parameter specified
in maintenance.cfg.
"""
 
# Python 2.7/3.3 compatibility.
from __future__ import print_function
 
import os
import re
import sys
import unloadaccessdates
import sdputils
 
if len(sys.argv) > 1:
  SDP_INSTANCE = str(sys.argv[1])
else:
  SDP_INSTANCE = '1'
 
utils = sdputils.SDPUtils(SDP_INSTANCE)
p4 = utils.p4
utils.login()
cfgweeks = int(utils.get('deleteweeks'))
 
def unload_clients():
  unloadaccessdates.createlist("clients", "client", cfgweeks)
  input = open("unload_clients.txt", "r")
 
  for line in input.readlines():
    line = line.strip()
    line = re.sub("\$", "\\\$", line)
    line = '%s client -fd "%s"' % (p4, line)
    os.system(line)
  input.close()

  unloadaccessdates.createlist("clients", "client", cfgweeks)
  input = open("unload_clients.txt", "r")
  for line in input.readlines():
    line = line.strip()
    line = re.sub("\$", "\\\$", line)
    os.system('%s -Ztag changes -s shelved -c %s > shelved.txt' % (p4, line))
    if os.path.isfile("shelved.txt"):
      shelvedfile = open("shelved.txt", "r")
      for changeline in shelvedfile.readlines():
        if re.search("\.\.\. change ", changeline):
          changenum = changeline[11:]
          changenum = changenum.strip()
          os.system('%s shelve -c %s -df' % (p4, changenum))
      shelvedfile.close()
    line = '%s client -fd "%s"' % (p4, line)
    os.system(line)
  input.close()
 
###############################################################################
# main
if __name__ == '__main__':
  unload_clients()
