[Lunar-commits] <lunar> Added lunar enforce

Peter de Ridder peter at lunar-linux.org
Wed Jan 16 22:24:49 CET 2013


commit 747132dda3f3538c5ce77ec48a851b68abf06962
Author: Peter de Ridder <peter at lunar-linux.org>
Date: Sat, 10 Nov 2012 18:22:56 -0800
URL: https://github.com/lunar-linux/lunar/commit/747132dda3f3538c5ce77ec48a851b68abf06962

Added lunar enforce

This includes changing the state to state flags separated with + in the
MODULE_STATUS files
Issue #24
---
  libs/check.lunar    | +3/-3     
  libs/depends.lunar  | +10/-1    
  libs/main.lunar     | +2/-2     
  libs/misc.lunar     | +1/-1     
  libs/modules.lunar  | +154/-28  
  libs/recovery.lunar | +9/-3     
  libs/sizes.lunar    | +3/-3     
  man/lunar.8         | +9/-1     
  prog/lunar          | +12/-10   
  prog/lvu            | +8/-3     
  10 files changed, 211 insertions(+), 55 deletions(-)

--- a/libs/check.lunar
+++ b/libs/check.lunar
@@ -88,11 +88,11 @@ fix_depends () {
 	if [ -n "$1" ] ; then
 		LIST="$@"
 	else
-		LIST=$(grep -v moonbase: "$MODULE_STATUS" | cut -d: -f1 | sort )
+		LIST=$(list_installed | fgrep -v -x moonbase)
 	fi
 
 	for MODULE in $LIST ; do
-		module_exiled $MODULE || rework_module $MODULE
+		rework_module $MODULE
 	done
 }
 
@@ -103,7 +103,7 @@ run_fix()  {
 	MODULES=$*
 
 	if [ -z "$MODULES" ] ; then
-		MODULES=$(list_installed | grep -v moonbase)
+		MODULES=$(list_installed | fgrep -v -x moonbase)
 	fi
 
 	if [[ -n "$FIXDEPENDS" ]] ; then
--- a/libs/depends.lunar
+++ b/libs/depends.lunar
@@ -236,7 +236,16 @@ run_depends() {
         fi
 
         # this is shortcut case s1) as discussed in lunar-dev ML
-        if module_installed $DEP && [ -z "$2" -a -z "$3" ] ; then
+        if module_enforced $DEP ; then
+          verbose_msg "Enforcing optional dependency \"$DEP\""
+          add_depends  "$MODULE"  "$DEP"  "on"   "optional"  "$2"  "$3"
+          # don't check depends if there are already checked
+          if grep -q "^$DEP\$" "$TEMP_PREPAREDDEPS" 2>/dev/null ; then
+            return 0
+          fi
+          lin --deps $DEP
+          echo "$DEP" >> $TEMP_PREPAREDDEPS
+        elif module_installed $DEP && [ -z "$2" -a -z "$3" ] ; then
           verbose_msg "Auto-adding optional dependency \"$DEP\""
           add_depends  "$MODULE"  "$DEP"  "on"   "optional"  "$2"  "$3"
           # don't check depends if there are already checked
--- a/libs/main.lunar
+++ b/libs/main.lunar
@@ -94,7 +94,7 @@ rebuild()  {
   message  "${MESSAGE_COLOR}Running FIX on all modules${DEFAULT_COLOR}"
   run_fix
 
-  LIST=$(grep ":installed:" "$MODULE_STATUS" | cut -d: -f1 | grep -v moonbase | grep -v "$LUNAR_MODULE")
+  LIST=$(list_installed | fgrep -v -x -e moonbase -e "$LUNAR_MODULE")
 
   message "${MESSAGE_COLOR}Sorting modules by dependency${DEFAULT_COLOR}"
   QUEUE=$(sort_by_dependency $LIST)
@@ -192,7 +192,7 @@ resurrect()  {
 
   if module_held $MODULE ; then
     VERSION=$(installed_version $MODULE)
-    STATUS=held
+    STATUS="installed+held"
     lrm --keepconfig $MODULE
   elif module_installed $MODULE ; then
     lrm --keepconfig $MODULE
--- a/libs/misc.lunar
+++ b/libs/misc.lunar
@@ -176,7 +176,7 @@ find_pam_aware()  {
 			     [ "$MODULE" != "Linux-PAM" ]; then
 			echo $MODULE
 		fi
-	done < $MODULE_STATUS
+	done
 }
 
 
--- a/libs/modules.lunar
+++ b/libs/modules.lunar
@@ -10,7 +10,9 @@
 #          list_sections, list_modules, list_installed     #
 #          check_module_index, run_details                 #
 #          module_installed, module_held, module_exiled    #
-#          hold_modules, unhold_modules                    #
+#          module_enforced, hold_modules, unhold_modules   #
+#          exile_modules, unexile_modules, enforce_modules #
+#          unenforce_modules                               #
 # 20020528                                                 #
 # 20030113 merging more functions in here - sofar          #
 # 20030417 adding hold routines - sofar                    #
@@ -79,8 +81,8 @@ list_moonbase() {
 # usage    : list_installed
 # purpose  : return a list of installed (or held) modules
 list_installed() {
-	debug_msg "list_installed ($@)"
-	grep -e ":installed:" -e ":held:" "$MODULE_STATUS" | cut -d: -f1 | sort
+  debug_msg "list_installed ($@)"
+  sed "s/:[[:digit:]]*:\\([^:]\\++\\)\\?installed\\(+[^:]\\+\\)\\?:.*$//" "$MODULE_STATUS"
 }
 
 
@@ -296,7 +298,9 @@ run_module_file() {
 # purpose  : check if $MODULE is installed (or held)
 module_installed()
 {
-	grep -q "^$1:[[:digit:]]*:installed:\|^$1:[[:digit:]]*:held:" "$MODULE_STATUS"
+  debug_msg "module_installed ($@)"
+
+  has_module_state $1 "installed"
 }
 
 
@@ -304,8 +308,9 @@ module_installed()
 # usage    : module_held $MODULE
 # purpose  : check if $MODULE is held
 module_held() {
-	debug_msg "module_held ($@)"
-	grep -q "^$1:[[:digit:]]*:held:" "$MODULE_STATUS"
+  debug_msg "module_held ($@)"
+
+  has_module_state $1 "held"
 }
 
 
@@ -375,7 +380,18 @@ module_license_accepted() {
 # purpose  : check if $MODULE is exiled
 module_exiled() {
   debug_msg "module_exiled ($@)"
-  $(cut -d: -f1,3 "$MODULE_STATUS" | grep -q "^$1:exiled")
+
+  has_module_state $1 "exiled"
+}
+
+
+# function : module_exiled
+# usage    : module_exiled $MODULE
+# purpose  : check if $MODULE is exiled
+module_enforced() {
+  debug_msg "module_enforced ($@)"
+
+  has_module_state $1 "enforced"
 }
 
 
@@ -411,8 +427,11 @@ hold_modules() {
     lock_file $MODULE_STATUS_BACKUP &&
     lock_file $MODULE_STATUS &&
     for MODULE in "$@" ; do
-      awk -F: -v mod=$MODULE '{if ($1==mod && $3 == "installed") {print $1":"$2":held:"$4":"$5}  else print;}' "$MODULE_STATUS" > $MODULE_STATUS_BACKUP
-      cp $MODULE_STATUS_BACKUP $MODULE_STATUS
+      if ! module_installed $MODULE; then
+        error_message "${PROBLEM_COLOR}Cannot hold not installed module ${MODULE_COLOR}$MODULE${DEFAULT_COLOR}"
+      else
+        add_module_state $MODULE "held"
+      fi
     done
     unlock_file $MODULE_STATUS
     unlock_file $MODULE_STATUS_BACKUP
@@ -430,8 +449,7 @@ unhold_modules () {
     lock_file $MODULE_STATUS_BACKUP &&
     lock_file $MODULE_STATUS &&
     for MODULE in "$@" ; do
-      awk -F: -v mod=$MODULE '{if ($1==mod && $3 == "held") {print $1":"$2":installed:"$4":"$5}  else print;}' "$MODULE_STATUS" > $MODULE_STATUS_BACKUP
-      cp $MODULE_STATUS_BACKUP $MODULE_STATUS
+      remove_module_state $MODULE "held"
     done
     unlock_file $MODULE_STATUS
     unlock_file $MODULE_STATUS_BACKUP
@@ -452,8 +470,7 @@ exile_modules() {
       if $(module_installed $MODULE); then
         error_message "${PROBLEM_COLOR}Cannot exile installed module ${MODULE_COLOR}$MODULE${DEFAULT_COLOR}"
       else
-        echo "$MODULE::exiled::" >> $MODULE_STATUS_BACKUP
-        cp $MODULE_STATUS_BACKUP $MODULE_STATUS
+        change_module_state $MODULE "exiled" "(installed|held|enforced)"
       fi
     done
     unlock_file $MODULE_STATUS
@@ -472,8 +489,43 @@ unexile_modules () {
     lock_file $MODULE_STATUS_BACKUP &&
     lock_file $MODULE_STATUS &&
     for MODULE in "$@" ; do
-      grep -v "^$MODULE:" "$MODULE_STATUS" > $MODULE_STATUS_BACKUP
-      cp $MODULE_STATUS_BACKUP $MODULE_STATUS
+      remove_module_state $MODULE "exiled"
+    done
+    unlock_file $MODULE_STATUS
+    unlock_file $MODULE_STATUS_BACKUP
+  fi
+}
+
+
+# function : enforce_modules
+# usage    : enforce_modules $MODULE [$MODULE....]
+# purpose  : enforce module selection
+enforce_modules() {
+  local MODULE
+  debug_msg "enforce_modules ($@)"
+  if [[ -n "$1" ]] ; then
+    lock_file $MODULE_STATUS_BACKUP &&
+    lock_file $MODULE_STATUS &&
+    for MODULE in "$@" ; do
+      change_module_state $MODULE "enforced" "exiled"
+    done
+    unlock_file $MODULE_STATUS
+    unlock_file $MODULE_STATUS_BACKUP
+  fi
+}
+
+
+# function : unenforce_modules
+# usage    : unenforce_modules $MODULE [$MODULE....]
+# purpose  : remove enforced module selection
+unenforce_modules () {
+  local MODULE
+  debug_msg "unenforce_modules  ($@)"
+  if [ -n "$1" ] ; then
+    lock_file $MODULE_STATUS_BACKUP &&
+    lock_file $MODULE_STATUS &&
+    for MODULE in "$@" ; do
+      remove_module_state $MODULE "enforced"
     done
     unlock_file $MODULE_STATUS
     unlock_file $MODULE_STATUS_BACKUP
@@ -485,6 +537,8 @@ unexile_modules () {
 # usage    : remove_module; but $MODULE must be defined earlier
 # purpose  : removed a module from the MODULE_STATUS files, no source removal
 remove_module() {
+  local OLD_STATE
+
   debug_msg "remove_module ($@)"
 
   # catch this on new boxes:
@@ -495,17 +549,24 @@ remove_module() {
   verbose_msg "updating lunar state files after module removal"
   lock_file $MODULE_STATUS_BACKUP                              &&
   lock_file $MODULE_STATUS                                     &&
-  grep -v "^$1:" "$MODULE_STATUS" > $MODULE_STATUS_BACKUP
-  cp $MODULE_STATUS_BACKUP $MODULE_STATUS
+  {
+    OLD_STATE=$(get_module_state $1 "(installed|held)")
+    grep -v "^$1:" "$MODULE_STATUS" > $MODULE_STATUS_BACKUP
+    if [ -n "$OLD_STATE" ]; then
+      echo "$1::$OLD_STATE::" >> $MODULE_STATUS_BACKUP
+    fi
+    cp $MODULE_STATUS_BACKUP $MODULE_STATUS
+  }
   unlock_file $MODULE_STATUS
   unlock_file $MODULE_STATUS_BACKUP
 }
 
 
 # function: add_module
-# usage   : add_module <module_name>
+# usage   : add_module <module_name> <state> <version> <size>
 # purpose : adds the 1st parameter as the module name to the MODULE_STATUS files
 add_module()  {
+  local OLD_STATE
   debug_msg "add_module ($@)"
 
   # catch this on new boxes:
@@ -516,16 +577,78 @@ add_module()  {
   verbose_msg "updating lunar state files after module installation"
   lock_file $MODULE_STATUS_BACKUP                             &&
   lock_file $MODULE_STATUS                                    &&
-  if [ -s $MODULE_STATUS ]; then
-    grep -v "^$1:" "$MODULE_STATUS_BACKUP" > $MODULE_STATUS 2>/dev/null
-  fi &&
-  echo "$1:$(date -u +%Y%m%d):$2:$3:$4" >> $MODULE_STATUS     &&
-  cp $MODULE_STATUS $MODULE_STATUS_BACKUP
+  {
+    OLD_STATE=$(get_module_state $1 $2)
+    grep -v "^$1:" "$MODULE_STATUS" > $MODULE_STATUS_BACKUP
+    if [ -n "$OLD_STATE" ]; then
+      OLD_STATE="+$OLD_STATE"
+    fi
+    echo "$1:$(date -u +%Y%m%d):$2$OLD_STATE:$3:$4" >> $MODULE_STATUS_BACKUP     &&
+    cp $MODULE_STATUS_BACKUP $MODULE_STATUS
+  }
   unlock_file $MODULE_STATUS
   unlock_file $MODULE_STATUS_BACKUP
 }
 
 
+# function: add_module_state
+# usage   : add_module_state <module_name> <state>
+# purpose : adds <state> to the module. add an empty new line to the MODULE_STATUS files if net there yet
+# pre     : the MODULE_STATUS files need to be locked
+add_module_state() {
+  debug_msg "add_module_state ($@)"
+
+  awk -F: -v mod="$1" -v state="$2" 'BEGIN {OFS=FS ; ret=0} ; $1==mod {if ($3 !~ /(^|\+)'"$2"'(\+|$)/) {$3=$3"+"state} ret=1} ; {print} ; END {exit ret}' "$MODULE_STATUS" > $MODULE_STATUS_BACKUP &&
+  echo "$MODULE::$2::" >> $MODULE_STATUS_BACKUP
+  cp $MODULE_STATUS_BACKUP $MODULE_STATUS
+}
+
+
+# function: remove_module_state
+# usage   : remove_module_state <module_name> <state>
+# purpose : removes <state> from the module. remove the line completely from the MODULE_STATUS files if no state left
+# pre     : the MODULE_STATUS files need to be locked
+remove_module_state() {
+  debug_msg "remove_module_state ($@)"
+
+  awk -F: -v mod="$1" 'BEGIN {OFS=FS} ; $1==mod {$3=gensub(/(^|\+)('"$2"'\+)+|((^|\+)'"$2"')+$/,"\\1","g",$3) ; if ($3=="") {next}} ; {print}' "$MODULE_STATUS" > $MODULE_STATUS_BACKUP  &&
+  cp $MODULE_STATUS_BACKUP $MODULE_STATUS
+}
+
+
+# function: change_module_state
+# usage   : change_module_state <module_name> <new_state> <old_state>
+# purpose : removes <old_state> from the module and adds <new_state> to the module. add an empty new line to the MODULE_STATUS files if net there yet
+# pre     : the MODULE_STATUS files need to be locked
+change_module_state() {
+  debug_msg "change_module_state ($@)"
+
+  awk -F: -v mod="$1" -v state="$2" 'BEGIN {OFS=FS ; ret=0} ; $1==mod {{$3=gensub(/(^|\+)('"$3"'\+)+|((^|\+)'"$3"')+$/,"\\1","g",$3) ; if ($3=="") {$3=state} ; if ($3 !~ /(^|\+)'"$2"'(\+|$)/) {$3=$3"+"state}} ret=1} ; {print} ; END {exit ret}' "$MODULE_STATUS" > $MODULE_STATUS_BACKUP &&
+  echo "$MODULE::$2::" >> $MODULE_STATUS_BACKUP
+  cp $MODULE_STATUS_BACKUP $MODULE_STATUS
+}
+
+
+# function: has_module_state
+# usage   : has_module_state <module_name> <state>
+# purpose : checks for the presence of <state> the MODULE_STATUS file
+has_module_state() {
+  debug_msg "has_module_state ($@)"
+
+  grep -q "^$1:[[:digit:]]*:\\([^:]\\++\\)\\?$2\\(+[^:]\\+\\)\\?:" "$MODULE_STATUS"
+}
+
+
+# function: get_module_state
+# usage   : get_module_state <module_name> <state>
+# purpose : get the state of the module leaving out <state>
+get_module_state() {
+  debug_msg "get_module_state ($@)"
+
+  awk -F: -v mod="$1" '$1==mod {print gensub(/(^|\+)('"$2"'\+)+|((^|\+)'"$2"')+$/,"\\1","g",$3)}' "$MODULE_STATUS"
+}
+
+
 # function : purge_modules
 # usage    : purge_modules
 # purpose  : purge modules that were removed from moonbase
@@ -538,7 +661,7 @@ purge_modules() {
     error_message "${PROBLEM_COLOR}Error: ${DEFAULT_COLOR}${MESSAGE_COLOR} your moonbase seems damaged. Re-lin moonbase to fix.${DEFAULT_COLOR}"
     exit 1
   fi
-  for MODULE in $(list_installed | grep -v "^moonbase$") ; do
+  for MODULE in $(list_installed | fgrep -v -x moonbase) ; do
   (
     if ! run_details $MODULE &> /dev/null ; then
       message "${MODULE_COLOR}$MODULE${DEFAULT_COLOR}${MESSAGE_COLOR} was removed from ${FILE_COLOR}${MOONBASE}${DEFAULT_COLOR}"
@@ -560,10 +683,13 @@ module_is_expired() {
     if [ -z "$MODULE" ] ; then
       MODULE=$1
     fi
-    LINE=$(grep "^$MODULE:" "$MODULE_STATUS" | grep -v "^moonbase" | awk -F: '{print "IDATE="$2" STATUS="$3" IVERSION="$4}')
-    eval $LINE
-    if run_details $MODULE &> /dev/null ; then
-      if [[ "$STATUS" == "installed" ]] ; then
+    if [ "$MODULE" == moonbase ] ; then
+      return 255
+    fi
+    LINE=$(awk -F: -v mod=$MODULE '$1==mod && $3 ~ /(^|\+)installed(\+|$)/ {print "IDATE="$2" IVERSION="$4}' "$MODULE_STATUS")
+    if [ -n "$LINE" ] ; then
+      eval $LINE
+      if run_details $MODULE &> /dev/null ; then
         if [[ "$VERSION" != "$IVERSION" ]] || [[ -z "$IDATE" ]] ||
 	  (( "$UPDATED" > "$IDATE" )) ; then
 	  return 0
--- a/libs/recovery.lunar
+++ b/libs/recovery.lunar
@@ -51,12 +51,18 @@ rebuild_status_files() {
         VERSION=$(echo $MODULE_NAME | cut -d "-" -f "$COUNTS"-)
         SIZE=$(find_module_size $REAL_NAME $VERSION)
         DATE=$(ls -l $INSTALL_LOGS/$REAL_NAME-$VERSION --time-style=+%Y%m%d | awk '{print $6}')
-        remove_module "$REAL_NAME" &&
         # adjusted add_module code that echos the DATE field ;^)
         lock_file $MODULE_STATUS &&
         lock_file $MODULE_STATUS_BACKUP &&
-        echo "$REAL_NAME:$DATE:installed:$VERSION:$SIZE" >>$MODULE_STATUS &&
-        cat "$MODULE_STATUS" >$MODULE_STATUS_BACKUP &&
+        {
+          OLD_STATE=$(get_module_state $REAL_NAME "installed")
+          grep -v "^$REAL_NAME:" "$MODULE_STATUS" > $MODULE_STATUS_BACKUP
+          if [ -n "$OLD_STATE" ]; then
+            OLD_STATE="+$OLD_STATE"
+          fi
+          echo "$REAL_NAME:$DATE:installed$OLD_STATE:$VERSION:$SIZE" >> $MODULE_STATUS_BACKUP     &&
+          cp $MODULE_STATUS_BACKUP $MODULE_STATUS
+        }
         unlock_file $MODULE_STATUS_BACKUP &&
         unlock_file $MODULE_STATUS &&
 
--- a/libs/sizes.lunar
+++ b/libs/sizes.lunar
@@ -27,7 +27,7 @@ find_module_size() {
       local SIZE
       unset SIZE
       [ -e "$MODULE_STATUS" ] &&
-      SIZE=`grep  "^$1\:" "$MODULE_STATUS" | cut -d ":" -f 5-5`
+      SIZE=$(sed -n "s/^$1:.*://p" "$MODULE_STATUS")
       [ -n "$SIZE" ] && echo ${SIZE} || false
    }
 
@@ -42,14 +42,14 @@ find_module_size() {
    module_size $1 $VERSION && return
 
    # no :( lets dig through logs
-   [ -e "$INSTALL_LOGS/$MODULE-$VERSION" ]  &&
+   [ -e "$INSTALL_LOGS/$1-$VERSION" ]  &&
    while read LINE
    do
       [ -f "$LINE" ]            &&
       SIZE0=`du "$LINE"         | 
              cut -f 1-1`        &&
       SIZE=$((SIZE0+SIZE))
-   done <$INSTALL_LOGS/$MODULE-$VERSION     &&
+   done <$INSTALL_LOGS/$1-$VERSION     &&
    echo ${SIZE}KB                      ||
    message  "${PROBLEM_COLOR}Install log for $1 is not found${DEFAULT_COLOR}"
 }
--- a/man/lunar.8
+++ b/man/lunar.8
@@ -6,7 +6,7 @@ lunar \- menu\-driven software package management utility
 -d|--debug|-h|--help|-v|--verbose
 .PP
 .B lunar
-[prune|renew|update|rebuild|optimize|fix|nofix|fixdepends|resurrect|install|remove|hold|unhold|exile|unexile]
+[prune|renew|update|rebuild|optimize|fix|nofix|fixdepends|resurrect|install|remove|hold|unhold|exile|unexile|enforce|unenforce]
 .SH "COPYRIGHT"
 .if n lunar(8) is Copyright (C) 2002-2003 Terry Chan with portions copyrighted by previous authors 2001\-2002
 .if t lunar(8) is Copyright \(co 2002-2003 Terry Chan with portions copyrighted by previous authors 2001\-2002
@@ -107,6 +107,14 @@ Prevents a module from being installed or resurrected. Perhaps because you've in
 .IP 
 Removes a module from exiled status.
 .PP
+.I enforce
+.IP 
+Automatically select yes for optional dependency to this module.
+.PP
+.I unenforce
+.IP 
+Removes a module from enforce list.
+.PP
 .SH "REQUIREMENTS"
 .I lunar
 requires a connection to the Internet
--- a/prog/lunar
+++ b/prog/lunar
@@ -61,6 +61,8 @@ hold       module(s)   Place a hold on a checklist of modules
 unhold     module(s)   Remove a hold on a checklist of modules
 exile      module(s)   Remove a module a/o prevent it from being resurrected
 unexile    module(s)   Allows a module to be compiled|resurrected again
+enforce    module(s)   Enforce optinal selection on a list of modules
+unenforce  module(s)   Remove enforce  on a list of modules
 EOF
   exit  1
 }
@@ -274,20 +276,18 @@ select_pkgs()  {
 
 
 make_hold_checklist()  {
-  for LINE in $(sort "$MODULE_STATUS_BACKUP") ; do
+  for LINE in $(grep -E '[:+](installed|held)[:+]' "$MODULE_STATUS_BACKUP" | sort) ; do
   (
     MODULE=$(echo "$LINE" | cut -d: -f1)
     STATUS=$(echo "$LINE" | cut -d: -f3)
     VERSION=$(echo "$LINE" | cut -d: -f4)
-    if [ "$STATUS" == "installed" ] || [ "$STATUS" == "held" ] ; then
-      [ "$STATUS" == "held" ] && HELD="on" || HELD="off"
-      SHORT="Short description unavailable"
-      if run_details $MODULE &> /dev/null ; then
-        echo $MODULE
-        echo $VERSION
-        echo $HELD
-        echo $SHORT
-      fi
+    echo "$STATUS" | grep -q -E '[:+]held[:+]' && HELD="on" || HELD="off"
+    SHORT="Short description unavailable"
+    if run_details $MODULE &> /dev/null ; then
+      echo $MODULE
+      echo $VERSION
+      echo $HELD
+      echo $SHORT
     fi
   )
   done
@@ -848,6 +848,8 @@ else
     unhold     ) shift && unhold_modules $@             ;;
     exile      ) shift && exile_modules $@              ;;
     unexile    ) shift && unexile_modules $@            ;;
+    enforce    ) shift && enforce_modules $@            ;;
+    unenforce  ) shift && unenforce_modules $@          ;;
     *) main ;; 
   esac
 fi
--- a/prog/lvu
+++ b/prog/lvu
@@ -64,6 +64,7 @@ conflicts                  display conflicting files
 moonalyze                  analyze the current moonbase for common issues
 held                       display held modules
 exiled                     display exiled modules
+enforced                   display enforced modules
 expired                    display a list of modules which need an update
 info        module         display terse summary information about module
 
@@ -1259,7 +1260,7 @@ main()  {
 
     installed)
       if [ -z "$2" ] ; then
-        grep -E ':(installed|held):' "$MODULE_STATUS" | view_file
+        grep -E '[:+]installed[:+]' "$MODULE_STATUS" | view_file
       elif [ -n "$(installed_version $2)" ] ; then
         echo "$(installed_version $2)"
       else
@@ -1269,11 +1270,15 @@ main()  {
       ;;
 
     held)
-      grep ":held:" "$MODULE_STATUS" | cut -d: -f1
+      grep -E '[:+]held[:+]' "$MODULE_STATUS" | cut -d: -f1
       ;;
 
     exiled)
-      grep ":exiled:" "$MODULE_STATUS" | cut -d: -f1
+      grep -E '[:+]exiled[:+]' "$MODULE_STATUS" | cut -d: -f1
+      ;;
+
+    enforced)
+      grep -E '[:+]enforced[:+]' "$MODULE_STATUS" | cut -d: -f1
       ;;
 
     expired)




More information about the Lunar-commits mailing list