[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