Eclipse

이클립스 이전 버젼 플러그인 삭제

_침묵_ 2012. 2. 27. 12:30
이클립스를 업데이트한 후에 남아있는 이전 버젼의 플러그인을 삭제해주는 파이썬 코드입니다. 
간단하게 만든거라 이전 버젼의 플러그인이 여러개인 경우 한번에 지워주지는 않습니다.
이 부분은 search_duplicated_plugins()를 수정하면 됩니다.

'''
Created on Feb 27, 2012
 
@author: silent
'''
 
import os
import sys
 
def search_duplicated_plugins(srcdir):
    print "Searching duplicated plugins in " + srcdir
 
    result = []
    try:
        filelist = os.listdir(srcdir)
        filelist.sort()
 
        prevfile = filelist[len(filelist) - 1]
 
        for file in filelist:
            if file.rsplit('_', 1)[0] == prevfile.rsplit('_', 1)[0]:
                result.append(prevfile)
 
            prevfile = file
    except:
        print '%s access denied.' % srcdir
 
    return result
 
 
def confirm_to_delete(dupfiles):
    for file in dupfiles:
        print file
    print "-" * 80
    print " Total %d files(dirs)." % len(dupfiles)
 
    if len(dupfiles) == 0:
        return False
 
    yn = raw_input(" Continue to delete? (y/n) ")
 
    if yn == 'Y' or yn == 'y':
        return True
    return False
 
 
def delete_files(srcdir, dupfiles):
    for file in dupfiles:
        filepath = srcdir + '/' + file
 
        if os.path.isdir(filepath):
            delete_files(filepath, os.listdir(filepath))
            if os.path.exists(filepath):
                os.removedirs(filepath)
        else:
            os.remove(filepath)
 
if __name__ == '__main__':
    if len(sys.argv) <= 1:
        f = sys.argv[0].split('/')
 
        print "Usage: " + f[len(f) - 1] + " eclipse_plugins_directory_path"
        sys.exit()
 
    srcdir = sys.argv[1]
    dupfiles = search_duplicated_plugins(srcdir)
    ret = confirm_to_delete(dupfiles)
    if ret:
        delete_files(srcdir, dupfiles)



실행은 플러그인 디렉토리를 인자로 넣어주면 됩니다.
python remove_old_plugins.py eclipse_plugins_directory_path