[24001] users/jberry/mpwa

source_changes at macosforge.org source_changes at macosforge.org
Sat Apr 14 07:44:13 PDT 2007


Revision: 24001
          http://trac.macosforge.org/projects/macports/changeset/24001
Author:   jberry at macports.org
Date:     2007-04-14 07:44:12 -0700 (Sat, 14 Apr 2007)

Log Message:
-----------
mpwa: auto tag ports and portpkgs with categories on submit

Modified Paths:
--------------
    users/jberry/mpwa/app/models/port.rb
    users/jberry/mpwa/app/models/port_pkg.rb
    users/jberry/mpwa/app/models/tag.rb
    users/jberry/mpwa/doc/TODO.txt
    users/jberry/mpwa/doc/design.txt

Modified: users/jberry/mpwa/app/models/port.rb
===================================================================
--- users/jberry/mpwa/app/models/port.rb	2007-04-14 14:40:24 UTC (rev 24000)
+++ users/jberry/mpwa/app/models/port.rb	2007-04-14 14:44:12 UTC (rev 24001)
@@ -26,10 +26,21 @@
                 end
             end
             
+            categories = info['categories']
+            categories.each { |c| port.add_tag c } if !categories.nil?
+
             # Save the port
             port.save
         end
         return port
     end    
     
+    def has_tag(name)
+        !self.tags.select { |t| t.name == name }.empty?
+    end
+
+    def add_tag(name)
+        self.tags.build('name' => name) unless has_tag name
+    end
+    
 end

Modified: users/jberry/mpwa/app/models/port_pkg.rb
===================================================================
--- users/jberry/mpwa/app/models/port_pkg.rb	2007-04-14 14:40:24 UTC (rev 24000)
+++ users/jberry/mpwa/app/models/port_pkg.rb	2007-04-14 14:44:12 UTC (rev 24001)
@@ -26,12 +26,12 @@
         
         # Validate the portpkg, bailing on error
         (expandedPkgPath + "Portfile").file? or raise "badpkg"
-        infoOut = `#{MPWA::PORTTOOL} info --name --category --epoch --version --revision --variants --maintainers --short_desc --long_description --description --homepage #{expandedPkgPath}`
+        infoOut = `#{MPWA::PORTTOOL} info --name --categories --epoch --version --revision --variants --maintainers --short_desc --long_description --description --homepage #{expandedPkgPath}`
         $?.exitstatus or raise "badpkg"
         
         # Extract:
         # => name
-        # => category
+        # => categories
         # => epoch, version, revision
         # => homepage
         # => description
@@ -47,7 +47,7 @@
                 value = m[2]
 
                 case token
-                    when 'maintainers'
+                    when 'categories', 'maintainers'
                         info[token] = value.split(/,\s*/)
                     else
                         info[token] = value
@@ -71,8 +71,12 @@
         port_pkg.version = info['version']
         port_pkg.revision = info['revision']
 
+        # Tag with categories
+        categories = info['categories']
+        categories.each { |c| port_pkg.add_tag c } if !categories.nil?
+        
         # Save unpacked data into a file
-        port_pkg.files << PortPkgFile.from_path(pkgPath, tempDirPath)  
+        port_pkg.files << PortPkgFile.from_path(pkgPath, tempDirPath)
         
         # Save files from the expanded package
         expandedPkgPath.find do |p|
@@ -100,4 +104,12 @@
         file_by_path("portpkg.xar")
     end
     
+    def has_tag(name)
+        !self.tags.select { |t| t.name == name }.empty?
+    end
+
+    def add_tag(name)
+        self.tags.build('name' => name) unless has_tag name
+    end
+    
 end

Modified: users/jberry/mpwa/app/models/tag.rb
===================================================================
--- users/jberry/mpwa/app/models/tag.rb	2007-04-14 14:40:24 UTC (rev 24000)
+++ users/jberry/mpwa/app/models/tag.rb	2007-04-14 14:44:12 UTC (rev 24001)
@@ -1,4 +1,21 @@
 class Tag < ActiveRecord::Base
     has_and_belongs_to_many :ports
     has_and_belongs_to_many :port_pkgs
+    
+    def Tag.by_name(name)
+        Tag.find(:first, :conditions => "name = '#{name}'")
+    end
+    
+    def Tag.ensure_tag(name, info)
+        tag = Tag.by_name(name)
+        if tag.nil?
+            # build a new tag
+            tag = Tag.new
+            tag.name = name
+            
+            # Save the tag
+            tag.save
+        end
+        return tag
+    end    
 end

Modified: users/jberry/mpwa/doc/TODO.txt
===================================================================
--- users/jberry/mpwa/doc/TODO.txt	2007-04-14 14:40:24 UTC (rev 24000)
+++ users/jberry/mpwa/doc/TODO.txt	2007-04-14 14:44:12 UTC (rev 24001)
@@ -1,14 +1,10 @@
 Short Term:
 
-	- Links to emit files
-	- Standard routing & urls for files
-	- Parse categories from portpkg and turn into tags
-	
 Medium Term:
 
 	- Wrapper or port(1) extensions to create/submit portpkgs
 	- Wrapper needs to create and write portpkg metadata
 	- mpwa should read metadata from the portpkg rather than parsing the Portfile as it does now.
 	
-	- Improve the UI for port browsing
+	- Improve (drastically) the UI for port browsing
 	- Implement port searching
\ No newline at end of file

Modified: users/jberry/mpwa/doc/design.txt
===================================================================
--- users/jberry/mpwa/doc/design.txt	2007-04-14 14:40:24 UTC (rev 24000)
+++ users/jberry/mpwa/doc/design.txt	2007-04-14 14:44:12 UTC (rev 24001)
@@ -144,7 +144,7 @@
 		http://db.macports.org/portpkg/<pkgid>
 		
 			// Access to portpkg files
-		http://db.macports.org/portpkg/<pkgid>/path_to_file
+		http://db.macports.org/portpkg/<pkgid>/<path_to_file>
 		
 			// A portpkg defined by a query instead of a pkgid
 			// (will 301 redirect to http://db.macports.org/portpkg/<pkgid>)

-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.macosforge.org/pipermail/macports-changes/attachments/20070414/0ffc1287/attachment.html


More information about the macports-changes mailing list