On 03/22/12 14:27, Jose V Beneyto wrote:
Hi,

I wrote a patch for prt-get that provides a new feature: 'depupdate'.
sorry, I forgot to attach the patch

--
Jose V Beneyto | http://sepen.it.cx/


diff --git a/doc/prt-get.8 b/doc/prt-get.8
index 30d3d93..a19243b 100644
--- a/doc/prt-get.8
+++ b/doc/prt-get.8
@@ -85,6 +85,11 @@ from any directory
 install all packages in the listed order including their dependencies.
 Note that outdated packages won't be updated.
 
+.TP
+.B depupdate [\-\-margs] [\-\-aargs] [\-\-log] <package1> [<package2> ...]
+update all packages in the listed order including their missing
+dependencies.
+
 .TP 
 .B grpinst [\-\-margs] [\-\-aargs]  [\-\-log] <package1> [<package2> ...]
 install all packages in the listed order, but stop if installation of
diff --git a/misc/prt-get_complete b/misc/prt-get_complete
index 57dfc01..ec256b7 100644
--- a/misc/prt-get_complete
+++ b/misc/prt-get_complete
@@ -14,7 +14,7 @@ _prt-get()
 
        if [ $COMP_CWORD -eq 1 ]; then
                COMPREPLY=( $( compgen -W ' \
-                    install depinst update grpinst help \
+                    install depinst update depupdate grpinst help \
                     version readme list info path \
                     search dsearch fsearch printf cache \
                     dependent sysup current lock unlock \
@@ -28,7 +28,7 @@ _prt-get()
             if [[ "$cur" != -* ]]; then
                case ${COMP_WORDS[1]} in
                     "install" | "depinst" | "grpinst"  | "path" | "dependent" 
| \
-                    "depends" | "quickdep" | "info" | "readme" | \
+                    "depends" | "quickdep" | "info" | "readme" | "depupdate" | 
\
                     "ls" | "isinst" | "deptree" )
                            if [ -f /var/lib/pkg/prt-get.cache ]; then
                                plist=`prt-cache list`
diff --git a/src/argparser.cpp b/src/argparser.cpp
index b971212..30907ac 100644
--- a/src/argparser.cpp
+++ b/src/argparser.cpp
@@ -122,11 +122,12 @@ const string& ArgParser::alternateConfigFile() const
 */
 bool ArgParser::parse()
 {
-    const int commandCount = 35;
+    const int commandCount = 36;
     string commands[commandCount] = { "list", "search", "dsearch",
                                       "info",
                                       "depends", "install", "depinst",
                                       "help", "isinst", "dup", "update",
+                                      "depupdate",
                                       "quickdep", "diff", "quickdiff",
                                       "grpinst", "version", "cache",
                                       "path", "listinst", "printf", "readme",
@@ -138,7 +139,7 @@ bool ArgParser::parse()
 
     Type commandID[commandCount] = { LIST, SEARCH, DSEARCH, INFO,
                                      DEPENDS, INSTALL, DEPINST,
-                                     HELP, ISINST, DUP, UPDATE,
+                                     HELP, ISINST, DUP, UPDATE, DEPUPDATE,
                                      QUICKDEP, DIFF, QUICKDIFF,
                                      GRPINST, SHOW_VERSION, CREATE_CACHE,
                                      PATH, LISTINST, PRINTF, README,
diff --git a/src/argparser.h b/src/argparser.h
index c24e7bd..799196d 100644
--- a/src/argparser.h
+++ b/src/argparser.h
@@ -31,7 +31,7 @@ public:
 
     /*! Command type */
     enum Type { HELP, LIST, SEARCH, DSEARCH, INSTALL, DEPINST,
-                INFO, DEPENDS, ISINST, DUP, UPDATE,
+                INFO, DEPENDS, ISINST, DUP, UPDATE, DEPUPDATE,
                 QUICKDEP, DIFF, GRPINST, GRPUPDATE,
                 QUICKDIFF, SHOW_VERSION, CREATE_CACHE, PATH,
                 LISTINST, PRINTF, README, DEPENDENT, SYSUP,
diff --git a/src/main.cpp b/src/main.cpp
index d3eb097..ebb6955 100644
--- a/src/main.cpp
+++ b/src/main.cpp
@@ -101,6 +101,9 @@ int main( int argc, char** argv )
         case ArgParser::UPDATE:
             prtGet.install( true );
             break;
+        case ArgParser::DEPUPDATE:
+            prtGet.install(true, true, true);
+            break;
         case ArgParser::DIFF:
             prtGet.printDiff();
             break;
diff --git a/src/prtget.cpp b/src/prtget.cpp
index 3d9863f..4ea1e42 100644
--- a/src/prtget.cpp
+++ b/src/prtget.cpp
@@ -165,13 +165,15 @@ void PrtGet::printUsage()
          << "'pattern'" << endl;
 
     cout << "\nINSTALL, UPDATE and REMOVAL" << endl;
-    cout << "  install [opt] <port1 port2...>    install ports" << endl;
-    cout << "  update  [opt] <port1 port2...>    update ports" << endl;
-    cout << "  grpinst [opt] <port1 port2...>    install ports, stop on error"
+    cout << "  install   [opt] <port1 port2...>  install ports" << endl;
+    cout << "  update    [opt] <port1 port2...>  update ports" << endl;
+    cout << "  grpinst   [opt] <port1 port2...>  install ports, stop on error"
          << endl;
-    cout << "  depinst [opt] <port1 port2...>    install ports and their 
dependencies"
+    cout << "  depinst   [opt] <port1 port2...>  install ports and their 
dependencies"
          << endl;
-    cout << "  remove [opt] <port1 port2...>     remove ports"
+       cout << "  depupdate [opt] <port1 port2...>  update ports and install 
missing dependencies"
+         << endl;
+    cout << "  remove    [opt] <port1 port2...>  remove ports"
          << endl;
     cout << "          where opt can be:" << endl;
     cout << "                -f, -fi             force installation" << endl;
@@ -644,9 +646,21 @@ void PrtGet::install( bool update, bool group, bool 
dependencies )
                 deps.push_back(*it);
             }
         }
-
-        InstallTransaction transaction( deps, m_repo, m_pkgDB, m_config );
-        executeTransaction( transaction, update, group );
+        // update + dependencies == depupdate
+        if ( update ) {
+            // install missing deps
+            if (deps.size() > 0) {
+                InstallTransaction installTransaction( deps, m_repo, m_pkgDB, 
m_config);
+                executeTransaction( installTransaction, false, group );
+            }
+            // update port
+            InstallTransaction updateTransaction( m_parser->otherArgs(),
+                                       m_repo, m_pkgDB, m_config );
+            executeTransaction( updateTransaction, update, group );
+        } else {
+            InstallTransaction transaction( deps, m_repo, m_pkgDB, m_config );
+            executeTransaction( transaction, update, group );
+        }
     } else {
         InstallTransaction transaction( m_parser->otherArgs(),
                                         m_repo, m_pkgDB, m_config );
_______________________________________________
crux-devel mailing list
crux-devel@lists.crux.nu
http://lists.crux.nu/mailman/listinfo/crux-devel

Reply via email to