# ----------------------------------------------------------------
# This module defines metadata to be used by the batchSVN.py script.
#
# Copy this module as /class/csse/<courseName>/scripts/batchSVNData.py and 
# edit it to define the course metadata for <courseName>.  The sample data
# in the original file can be used by invoking the batchSVN.py script using
# "testing" as the course name argument, e.g.: ./batchSVN.py testing
# ----------------------------------------------------------------

import os
import sys

# ----------------------------------------------------------------
# Hacks the system path so the import of batchSVNTypes works for testing 
# individual course meta-data on the the server.
serverPathToBatchSVN = "/class/csse/resources/Grading"
# Change the following line to point to your local checkout of the CSSE
# resources trunk if you want to test this file on your local machine:
localMachinePathToBatchSVN = "/Users/cclifton/Documents/Rose/Administrative/resources/Grading"
sys.path.append(serverPathToBatchSVN)
sys.path.append(localMachinePathToBatchSVN)
from batchSVNTypes import *
# ----------------------------------------------------------------

# ----------------------------------------------------------------
# Local variables
# ----------------------------------------------------------------
repoNamePrefix = 'me435-201130-'
# replace the following with a description of the course, like 'CSSE 120'
courseDescription = '\a*** WARNING: USING TEST DATA, NOT COURSE DATA ***'

# ----------------------------------------------------------------
# Defines repositories sets for this course.  Used by main script.
# ----------------------------------------------------------------
reposSets = []
# first set in the list is the default
reposSets.append(RepositorySet("IndividualCCS", repoNamePrefix, [
    "behlinmc-CCS",
    "blockja-CCS",
    "brownej-CCS",
    "burdicka-CCS",
    "carpengk-CCS",
    "channmn-CCS",
    "chelmirs-CCS",
    "dovalojd-CCS",
    "dunnmp-CCS",
    "gallercj-CCS",
    "gatesds-CCS",
    "goodwipd-CCS",
    "gumzaj-CCS",
    "hawkinzw-CCS",
    "hinesen-CCS",
    "jacksona-CCS",
    "johnsoad-CCS",
    "keltnesd-CCS",
    "lemmersj-CCS",
    "maurerjl-CCS",
    "milluzaj-CCS",
    "oneillcm-CCS",
    "ohslunce-CCS",
    "sikesdb-CCS",
    "swisslpj-CCS",
    "ulreyam-CCS",
    "ulreymj-CCS",
    "wahlnj-CCS",
    "nelsonlr-CCS",
    "taborts-CCS",
    "fisherds-CCS"]))

reposSets.append(RepositorySet("IndividualMATLAB", repoNamePrefix, [
    "behlinmc-MATLAB",
    "blockja-MATLAB",
    "brownej-MATLAB",
    "burdicka-MATLAB",
    "carpengk-MATLAB",
    "channmn-MATLAB",
    "chelmirs-MATLAB",
    "dovalojd-MATLAB",
    "dunnmp-MATLAB",
    "gallercj-MATLAB",
    "gatesds-MATLAB",
    "goodwipd-MATLAB",
    "gumzaj-MATLAB",
    "hawkinzw-MATLAB",
    "hinesen-MATLAB",
    "jacksona-MATLAB",
    "johnsoad-MATLAB",
    "keltnesd-MATLAB",
    "lemmersj-MATLAB",
    "maurerjl-MATLAB",
    "milluzaj-MATLAB",
    "oneillcm-MATLAB",
    "ohslunce-MATLAB",
    "sikesdb-MATLAB",
    "swisslpj-MATLAB",
    "ulreyam-MATLAB",
    "ulreymj-MATLAB",
    "wahlnj-MATLAB",
    "nelsonlr-MATLAB",
    "taborts-MATLAB",
    "fisherds-MATLAB"]))

reposSets.append(RepositorySet("SmallSetforTesting", repoNamePrefix, [
    "fisherds-CCS", "wahlnj-CCS"
]))

# ----------------------------------------------------------------
# Defines project names and unit tests for this course. 
# Used by main script.
# ----------------------------------------------------------------
projects = []
#projects.append(Project("WarmUpAndStretchingWithUnitTests", "anagram.AnagramTests", "list.SortedListTests.java",
#                        "priorityQueue.PQTests.java", "hardysTaxi.HardyTests.java"))
projects.append(Project("Exam1_201130"))
projects.append(Project("Exam2_201130"))
projects.append(Project("Exam3_201130"))

# ----------------------------------------------------------------
# Defines any additional main menu commands for this course.
# Used by main script.
# ----------------------------------------------------------------
menuItems = []
# ----------------------------------------------------------------
# Sample code to add a zip command to the menu:
# def zipForDownload(data):
#     if os.access(data.activeProject.name,os.F_OK):
#         os.system('zip -r %s.zip %s' % (data.activeProject.name,
#                                         data.activeProject.name))
#         if not os.access(data.activeProject.name + '.zip',os.F_OK):
#             print '\a\n*** Unable to create zip file ***\n'
#     return False
# menuItems.append(MenuItem('Zip local project subdirectory for download',
#                           zipForDownload))
# ----------------------------------------------------------------

# ----------------------------------------------------------------
# A couple of extra menu items that are useful in a pinch, but aren't yet 
# sufficiently abstracted for general use.
# def copyInExtras(data):
#     forEachRepo("cp ${scriptDir}/*.java ${shortName}/src/btwp/", data)
#     return False
# menuItems.append(MenuItem('Copy in Exam2 test files',copyInExtras))
# 
# def runTestsExtraMem(data):
#     forEachRepo("cd ${shortName} && java -Xmx2000m -cp '${scriptDir}/junit-4.5.jar:bin' org.junit.runner.JUnitCore ${testClasses}", data)
#     return False
# menuItems.append(MenuItem('Run JUnit tests with extra memory',runTestsExtraMem))
# ----------------------------------------------------------------
   


# ----------------------------------------------------------------
# Some test code, executed if this file is imported directly into
# a python shell.  Shouldn't need to change this when specifying
# course-specific data above.
# ----------------------------------------------------------------
if __name__ == '__main__':
    print "reposSets ==", reposSets
    print "Repositories from reposSets[0]:"
    for r in reposSets[0].repos():
        print "   ", r
    print "repository names: ", [r.name for r in reposSets]
    print
    print projects
    print "Test classes:"
    for p in projects:
        print "   %s: %s" % (p.name, p.testClasses)
    print "Additional Menu Items' Text:"
    for mi in menuItems:
        print "  ", mi.text