Skip to content
Snippets Groups Projects
delete_class.py 3 KiB
Newer Older
#!/usr/bin/env python
""" Utility for deleting a class file """

import sys
import os
import argparse
import datetime
import re
from cmakelists_utils import *


#======================================================================
def delete_one(oldfilename):
    cmd = "git rm " + oldfilename
    print "Running:", cmd
    os.system(cmd)

#======================================================================
def delete_all(subproject, classname, args):
    # Directory at base of subproject
    basedir = os.path.join(os.path.curdir, "Framework/" + subproject)
    headerfile = os.path.join(basedir, "inc/Mantid" + subproject + "/" + args.source_subfolder + classname + ".h")
    sourcefile = os.path.join(basedir, "src/" + args.source_subfolder + classname + ".cpp")
    testfile = os.path.join(basedir, "test/" + classname + "Test.h")
    print
    if args.header:
        delete_one(headerfile)
    if args.cpp:
        delete_one(sourcefile)
    if args.test:
        delete_one(testfile)
    # Insert into the cmake list
    remove_from_cmake(subproject, classname, args, args.source_subfolder)
    print "   Files were removed to Framework/%s/CMakeLists.txt !" % subproject



#======================================================================
if __name__ == "__main__":
    parser = argparse.ArgumentParser(description='Utility to delete a Mantid class from a project. '
                                     'Please note, you may still have more fixes to do to get compilation!')
    parser.add_argument('subproject', metavar='SUBPROJECT', type=str,
                        help='The subproject under Framework/; e.g. Kernel')
    parser.add_argument('classname', metavar='CLASSNAME', type=str,
                        help='Name of the class to create')
    parser.add_argument('--subfolder', dest='source_subfolder',
                        default="",
                        help='The source is in a subfolder below the main part of the project, e.g. Geometry/Instrument.')
    parser.add_argument('--no-header', dest='header', action='store_const',
                        const=False, default=True,
                        help="Don't delete the header file")
    parser.add_argument('--no-test', dest='test', action='store_const',
                        const=False, default=True,
                        help="Don't delete the test file")
    parser.add_argument('--no-cpp', dest='cpp', action='store_const',
                        const=False, default=True,
                        help="Don't delete the cpp file")

    parser.add_argument('--project', dest='project',
                    default="Framework",
                    help='The project in which this goes. Default: Framework. Can be MantidQt, Vates')
    args = parser.parse_args()
    subproject = args.subproject
    classname = args.classname
    # Make sure the subfolders end with a /
    if args.source_subfolder != "":
        if args.source_subfolder[-1:] != "/":
            args.source_subfolder += "/"
    delete_all(subproject, classname,  args)