src/check-duplicates: new script
Signed-off-by: Maciej Barć <xgqt@protonmail.com>
This commit is contained in:
		
							
								
								
									
										75
									
								
								src/check-duplicates
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										75
									
								
								src/check-duplicates
									
									
									
									
									
										Executable file
									
								
							| @@ -0,0 +1,75 @@ | |||||||
|  | #!/usr/bin/env bash | ||||||
|  |  | ||||||
|  |  | ||||||
|  | # This file is part of scripts. | ||||||
|  |  | ||||||
|  | # scripts 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. | ||||||
|  |  | ||||||
|  | # scripts 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 scripts.  If not, see <https://www.gnu.org/licenses/>. | ||||||
|  |  | ||||||
|  | # Original author: Maciej Barć <xgqt@protonmail.com> | ||||||
|  | # Copyright (c) 2021, src_prepare group | ||||||
|  | # Licensed under the GNU GPL v3 License | ||||||
|  |  | ||||||
|  | # Fork of 'portdupe' from Gentoo science reporitory, original by omp: | ||||||
|  | #   Copyright 2006 David Shakaryan <omp@gentoo.org> | ||||||
|  | #   Distributed under the terms of the GNU General Public License v2 | ||||||
|  | # This one upgrades the license to GNU General Public License v3 | ||||||
|  |  | ||||||
|  |  | ||||||
|  | trap 'exit 128' INT | ||||||
|  | export PATH | ||||||
|  |  | ||||||
|  |  | ||||||
|  | PORTDIR="$(portageq get_repo_path / gentoo)" | ||||||
|  |  | ||||||
|  |  | ||||||
|  | # If an argument is present, use it as the overlay directory. | ||||||
|  | if [ "${1}" ] | ||||||
|  | then | ||||||
|  |     cd "${1}" || exit 1 | ||||||
|  | fi | ||||||
|  |  | ||||||
|  | # Checking, displaying, etc. | ||||||
|  | for PACKAGE in */* | ||||||
|  | do | ||||||
|  |     if [ -d "${PORTDIR}/${PACKAGE}" ] \ | ||||||
|  |            && [[ $(basename "${PACKAGE}") != "CVS" ]] \ | ||||||
|  |            && grep -q "$(dirname "${PACKAGE}")" "${PORTDIR}/profiles/categories" | ||||||
|  |     then | ||||||
|  |         # Reset versions from last package checked. | ||||||
|  |         PORTPACK_VERS="" | ||||||
|  |         OVERPACK_VERS="" | ||||||
|  |  | ||||||
|  |         # Find just package name excluding category. | ||||||
|  |         PACKAGE_BASE="$(basename "${PACKAGE}")" | ||||||
|  |  | ||||||
|  |         # Find versions of package in portage. | ||||||
|  |         for PORTPACK in $(find "${PORTDIR}/${PACKAGE}" -name "*.ebuild" | sed -e 's/.ebuild//') | ||||||
|  |         do | ||||||
|  |             PORTPACK_VER="$(basename "${PORTPACK}" | sed "s/${PACKAGE_BASE}-//")" | ||||||
|  |             PORTPACK_VERS="${PORTPACK_VERS} ${PORTPACK_VER}" | ||||||
|  |         done | ||||||
|  |  | ||||||
|  |         # Find versions of package in overlay. | ||||||
|  |         for OVERPACK in $(find "${PACKAGE}" -name "*.ebuild" | sed -e 's/.ebuild//') | ||||||
|  |         do | ||||||
|  |             OVERPACK_VER="$(basename "${OVERPACK}" | sed "s/${PACKAGE_BASE}-//")" | ||||||
|  |             OVERPACK_VERS="${OVERPACK_VERS} ${OVERPACK_VER}" | ||||||
|  |         done | ||||||
|  |  | ||||||
|  |         # Output info with colors. | ||||||
|  |         echo -e "\e[1;33m${PACKAGE}\e[0m" | ||||||
|  |         echo -e "  \e[1;35mPortage:\e[0m${PORTPACK_VERS}" | ||||||
|  |         echo -e "  \e[1;35mOverlay:\e[0m${OVERPACK_VERS}" | ||||||
|  |     fi | ||||||
|  | done | ||||||
		Reference in New Issue
	
	Block a user