# -*- coding: utf-8 -*-""" package.rhodecode.lib.cleanup ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ :created_on: Jul 14, 2012 :author: marcink :copyright: (C) 2010-2012 Marcin Kuzminski <marcin@python-works.com> :license: GPLv3, see COPYING for more details."""# This program is free software: you can redistribute it and/or modify# it under the terms of the GNU General Public License as published by# the Free Software Foundation, either version 3 of the License, or# (at your option) any later version.## This program is distributed in the hope that it will be useful,# but WITHOUT ANY WARRANTY; without even the implied warranty of# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the# GNU General Public License for more details.## You should have received a copy of the GNU General Public License# along with this program. If not, see <http://www.gnu.org/licenses/>.from__future__importwith_statementimportosimportsysimportreimportshutilimportloggingimportdatetimeimportstringfromos.pathimportdirnameasdn,joinasjnfromrhodecode.modelimportinit_modelfromrhodecode.lib.utils2importengine_from_config,safe_strfromrhodecode.model.dbimportRhodeCodeUi,Repositoryfromrhodecode.lib.vcs.backends.baseimportEmptyChangeset#to get the rhodecode importsys.path.append(dn(dn(dn(os.path.realpath(__file__)))))fromrhodecode.lib.utilsimportBasePasterCommand,Command,add_cachelog=logging.getLogger(__name__)classUpdateCommand(BasePasterCommand):max_args=1min_args=1usage="CONFIG_FILE"summary="Cleanup deleted repos"group_name="RhodeCode"takes_config_file=-1parser=Command.standard_parser(verbose=True)defcommand(self):logging.config.fileConfig(self.path_to_ini_file)frompylonsimportconfig#get to remove repos !!add_cache(config)engine=engine_from_config(config,'sqlalchemy.db1.')init_model(engine)repo_update_list=map(string.strip,self.options.repo_update_list.split(',')) \
ifself.options.repo_update_listelseNoneifrepo_update_list:repo_list=Repository.query().filter(Repository.repo_name.in_(repo_update_list))else:repo_list=Repository.getAll()forrepoinrepo_list:last_cs=(repo.scm_instance.get_changeset()ifrepo.scm_instanceelseEmptyChangeset())repo.update_changeset_cache(last_cs)defupdate_parser(self):self.parser.add_option('--update-only',action='store',dest='repo_update_list',help="Specifies a comma separated list of repositores ""to update last commit info for. OPTIONAL",)