def uninstall(name, options): r""" This is an uninstallation hook for the 'infrae.subversion' recipe. Its only job is to raise an exception when there are changes in a subversion tree that a user might not want to lose. This function does *not* delete or otherwise touch any files. The location of the path is passed as options['location']. """ if bool(options.get('export', False)): return # SVN Export, there is nothing to check. if bool(options.get('ignore_verification', False)): return # Verification disabled. # XXX This makes the assumption that we're in the buildout # directory and that our part is in 'parts'. We don't have # options['buildout'] available so no # 'buildout:parts-directory'. location = options.get('location', os.path.join('.', 'parts', name)) urls = prepareURLs(location, options['urls']) client = createSVNClient(None) bad_svn_status = [wc_status_kind.modified, wc_status_kind.missing, wc_status_kind.unversioned, ] if not checkExistPath(location): return checkAddedPaths(location, urls) for path in urls.keys(): if not checkExistPath(path): continue badfiles = filter(lambda e: e['text_status'] in bad_svn_status, client.status(path)) reportInvalidFiles(path, name, [file['path'] for file in badfiles])
def uninstall(name, options): r""" This is an uninstallation hook for the 'infrae.subversion' recipe. Its only job is to raise an exception when there are changes in a subversion tree that a user might not want to lose. This function does *not* delete or otherwise touch any files. The location of the path is passed as options['location']. """ if bool(options.get('export', False)): return # SVN Export, there is nothing to check. if bool(options.get('ignore_verification', False)): return # Verification disabled. # XXX This makes the assumption that we're in the buildout # directory and that our part is in 'parts'. We don't have # options['buildout'] available so no # 'buildout:parts-directory'. location = options.get('location', os.path.join('.', 'parts', name)) urls = prepareURLs(location, options['urls']) if not checkExistPath(location): return checkAddedPaths(location, urls) for path in urls.keys(): if not checkExistPath(path): continue wc = py.path.svnwc(path) status = wc.status(rec=1) badfiles = [] + status.modified + status.incomplete + status.unknown reportInvalidFiles(path, name, [file.strpath for file in badfiles])