Bug 178366

Summary: New port: ports-mgmt/pkg-rmleaf "Remove leaf packages"
Product: Ports & Packages Reporter: Yanhui Shen <shen.elf>
Component: Individual Port(s)Assignee: freebsd-ports-bugs (Nobody) <ports-bugs>
Status: Closed FIXED    
Severity: Affects Only Me    
Priority: Normal    
Version: Latest   
Hardware: Any   
OS: Any   
Attachments:
Description Flags
pkg-rmleaf.shar none

Description Yanhui Shen 2013-05-06 10:40:00 UTC
A little script for removing leaf packages. (requires pkgng)

shar file: pkg-rmleaf.txt

Fix: 

NONE
How-To-Repeat: NONE
Comment 1 Raphael Kubo da Costa freebsd_committer 2013-05-14 18:46:21 UTC
There's no shar attached to the PR.
Comment 2 Raphael Kubo da Costa freebsd_committer 2013-05-14 19:33:18 UTC
State Changed
From-To: open->closed

Duplicate of 178365, which contains the actual shar.
Comment 3 dfilter service freebsd_committer 2013-05-15 23:21:39 UTC
Author: rakuco
Date: Wed May 15 22:21:30 2013
New Revision: 318266
URL: http://svnweb.freebsd.org/changeset/ports/318266

Log:
  Add ports-mgmt/pkg-rmleaf.
  
  A little script for removing leaf packages (requires pkgng).
  
  PR:		ports/178366
  Submitted by:	Yanhui Shen <shen.elf@gmail.com> (maintainer)

Added:
  head/ports-mgmt/pkg-rmleaf/
  head/ports-mgmt/pkg-rmleaf/Makefile   (contents, props changed)
  head/ports-mgmt/pkg-rmleaf/files/
  head/ports-mgmt/pkg-rmleaf/files/pkg-rmleaf   (contents, props changed)
  head/ports-mgmt/pkg-rmleaf/pkg-descr   (contents, props changed)
Modified:
  head/ports-mgmt/Makefile

Modified: head/ports-mgmt/Makefile
==============================================================================
--- head/ports-mgmt/Makefile	Wed May 15 21:22:21 2013	(r318265)
+++ head/ports-mgmt/Makefile	Wed May 15 22:21:30 2013	(r318266)
@@ -34,6 +34,7 @@
     SUBDIR += pkg
     SUBDIR += pkg-orphan
     SUBDIR += pkg-plist
+    SUBDIR += pkg-rmleaf
     SUBDIR += pkg_add_it
     SUBDIR += pkg_cleanup
     SUBDIR += pkg_cutleaves

Added: head/ports-mgmt/pkg-rmleaf/Makefile
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ head/ports-mgmt/pkg-rmleaf/Makefile	Wed May 15 22:21:30 2013	(r318266)
@@ -0,0 +1,29 @@
+# Created by: Yanhui Shen <shen.elf@gmail.com>
+# $FreeBSD$
+
+PORTNAME=	pkg-rmleaf
+PORTVERSION=	0.2
+CATEGORIES=	ports-mgmt
+MASTER_SITES=	# none
+DISTFILES=	# none
+
+MAINTAINER=	shen.elf@gmail.com
+COMMENT=	Remove leaf packages
+
+LICENSE=	BSD
+
+RUN_DEPENDS=	${LOCALBASE}/sbin/pkg:${PORTSDIR}/ports-mgmt/pkg
+
+NO_BUILD=	yes
+WRKSRC=		${WRKDIR}
+
+PLIST_FILES=	sbin/pkg-rmleaf
+
+do-extract:
+	${MKDIR} ${WRKSRC}
+	${CP} ${FILESDIR}/pkg-rmleaf ${WRKSRC}
+
+do-install:
+	${INSTALL_SCRIPT} ${WRKSRC}/pkg-rmleaf ${PREFIX}/sbin/pkg-rmleaf
+
+.include <bsd.port.mk>

Added: head/ports-mgmt/pkg-rmleaf/files/pkg-rmleaf
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ head/ports-mgmt/pkg-rmleaf/files/pkg-rmleaf	Wed May 15 22:21:30 2013	(r318266)
@@ -0,0 +1,77 @@
+#!/bin/sh
+
+#  Copyright (c) 2013 Yanhui Shen, shen.elf@gmail.c0m
+#  All rights reserved.
+#
+#  Redistribution and use in source and binary forms, with or without
+#  modification, are permitted provided that the following conditions
+#  are met:
+#  1. Redistributions of source code must retain the above copyright
+#     notice, this list of conditions and the following disclaimer.
+#  2. Redistributions in binary form must reproduce the above copyright
+#     notice, this list of conditions and the following disclaimer in the
+#     documentation and/or other materials provided with the distribution.
+#
+#  THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
+#  ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+#  IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+#  ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
+#  FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+#  DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+#  OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+#  HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+#  LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+#  OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+#  SUCH DAMAGE.
+
+#Twiddle="echo '|/-\\' | cut -c"
+PkgQuery="pkg query -e \"%#r=0\" \"%o#%c\" | sort"
+PkgDelete="pkg delete -y"
+DialogList="dialog --stdout --checklist \"leaf packages (%s)\" 30 90 30"
+
+KeptLeaves=""
+while true; do
+    #==== refresh leaves ====
+    echo "Calculating..."
+    AllLeaves=`eval $PkgQuery`
+    NewLeaves=""
+    nNewLeaves="0"
+    #n="0"
+    IFS=$'\n'
+    for line in $AllLeaves; do
+        # print twiddle will be a little slower
+        #n=$(($n % 4 + 1))
+        #ch=`eval "$Twiddle $n"`
+        #printf "Calculating...%s\r" "$ch"
+
+        port=`echo "$line" | cut -d'#' -f1`
+        desc=`echo "$line" | cut -d'#' -f2 | sed -e 's/\"/\\\"/g'`
+        ret=`echo "$KeptLeaves" | grep "$port"`
+        if [ -z "$ret" ]; then
+            NewLeaves="$NewLeaves $port \"$desc\" off"
+            nNewLeaves=$(($nNewLeaves + 1))
+        fi
+    done
+
+    #==== show dialog ====
+    if [ -z "$NewLeaves" ]; then
+        echo "Nothing to do!"
+        exit
+    fi
+    cmd=`printf $DialogList "$nNewLeaves"`
+    selections=`eval "$cmd $NewLeaves"`
+    if [ $? -ne 0 ]; then
+        echo "Canceled."
+        exit
+    fi
+
+    #==== record old leaves ====
+    KeptLeaves="$AllLeaves"
+
+    #==== deinstall selected ====
+    if [ -z $selections ]; then
+        echo "No selection, quit."
+        exit
+    fi
+    eval "$PkgDelete $selections"
+done

Added: head/ports-mgmt/pkg-rmleaf/pkg-descr
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ head/ports-mgmt/pkg-rmleaf/pkg-descr	Wed May 15 22:21:30 2013	(r318266)
@@ -0,0 +1 @@
+A little script for removing leaf packages (requires pkgng).
_______________________________________________
svn-ports-all@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/svn-ports-all
To unsubscribe, send any mail to "svn-ports-all-unsubscribe@freebsd.org"