Revision
70311
Author
jrozner@macports.org
Date
2010-08-05 15:57:41 -0700 (Thu, 05 Aug 2010)

Log Message

Updated syncing script to properly sync and remove the need for category seed data. Also added messages when no categories or ports are in the db

Modified Paths

Diff

Modified: branches/gsoc10-mpwa/bin/add_ports (70310 => 70311)


--- branches/gsoc10-mpwa/bin/add_ports	2010-08-05 22:47:40 UTC (rev 70310)
+++ branches/gsoc10-mpwa/bin/add_ports	2010-08-05 22:57:41 UTC (rev 70311)
@@ -3,9 +3,10 @@
 require 'trac4r'
 
 TIME_FILE = "/var/tmp/mpwa-sync"
-NEW_PORTS = "/Users/joe/Dev/gsoc10-mpwa/bin/new-ports"
+ROOT = File.expand_path(File.dirname(__FILE__) + "/../") 
+NEW_PORTS = "#{ROOT}/bin/new_ports"
 PORT_INDEX = "/opt/local/var/macports/sources/rsync.macports.org/release/ports"
-RAILS_ROOT = "/Users/joe/Dev/gsoc10-mpwa/mpwa"
+RAILS_ROOT = "#{ROOT}/mpwa"
 OPEN_STATUSES = ['new', 'reopened', 'assigned']
 TRAC_URL = "http://192.168.1.135/svn-helloworld/xmlrpc"
 TRAC_USER = "admin"
@@ -22,6 +23,8 @@
   $mtime = 0
 end
 
+FileUtils.touch(TIME_FILE)
+
 $ports = Array.new
 $hashed_data = Hash.new
 
@@ -31,8 +34,11 @@
 
 fp = IO.popen("#{NEW_PORTS} -m #{$mtime} #{PORT_INDEX}")
 new_ports = fp.read.split("\n")
-new_ports << ""
 
+if new_ports.count > 0
+  new_ports << "" #add last blank line
+end
+
 new_ports.each do |line|
   unless (line == "")
     data = line.match(/(\S+):\s+\{?(.+)\}?$/)
@@ -40,18 +46,29 @@
       $hashed_data[data[1].to_sym] = data[2]
     end
   else
-    port = Port.new({
-      :name => $hashed_data[:name],
-      :path => $hashed_data[:portdir],
-      :version => $hashed_data[:version],
-      :description => $hashed_data[:description],
-      :licenses => $hashed_data[:license],
-      :category_id => Category.find_by_name($hashed_data[:categories].split(" ")[0]).id,
-      :variants => $hashed_data[:variants],
-      :maintainers => $hashed_data[:maintainers],
-      :platforms => $hashed_data[:platforms],
-      :categories => $hashed_data[:categories]
-    })
+    category_name = $hashed_data[:categories].try(:split, " ").try(:[], 0)
+    $category = Category.find_by_name(category_name)
+    if $category.nil?
+      $category = Category.new({:name => category_name})
+      $category.save
+    end
+
+    port = Port.find_by_name($hashed_data[:name])
+    if port.nil?
+      port = Port.new
+    end
+
+    port[:name] = $hashed_data[:name]
+    port[:path] = $hashed_data[:portdir]
+    port[:version] = $hashed_data[:version]
+    port[:description] = $hashed_data[:description]
+    port[:licenses] = $hashed_data[:license]
+    port[:category_id] = $category.id
+    port[:variants] = $hashed_data[:variants]
+    port[:maintainers] = $hashed_data[:maintainers]
+    port[:platforms] = $hashed_data[:platforms]
+    port[:categories] = $hashed_data[:categories]
+
     $ports << [$hashed_data, port]
     port.save
     $hashed_data = {}

Modified: branches/gsoc10-mpwa/mpwa/app/controllers/application_controller.rb (70310 => 70311)


--- branches/gsoc10-mpwa/mpwa/app/controllers/application_controller.rb	2010-08-05 22:47:40 UTC (rev 70310)
+++ branches/gsoc10-mpwa/mpwa/app/controllers/application_controller.rb	2010-08-05 22:57:41 UTC (rev 70311)
@@ -20,4 +20,6 @@
   $bz2_tarball = "#{$downloads_url}MacPorts-#{$latest_version}.tar.bz2"
   $gz_tarball = "#{$downloads_url}MacPorts-#{$latest_version}.tar.gz"
   $checksums = "#{$downloads_url}MacPorts-#{$latest_version}.chk.txt"
+
+  $updated = Port.all(:order => 'updated_at DESC', :limit => 1).try(:first).try(:updated_at) || Time.at(0)
 end

Modified: branches/gsoc10-mpwa/mpwa/app/controllers/categories_controller.rb (70310 => 70311)


--- branches/gsoc10-mpwa/mpwa/app/controllers/categories_controller.rb	2010-08-05 22:47:40 UTC (rev 70310)
+++ branches/gsoc10-mpwa/mpwa/app/controllers/categories_controller.rb	2010-08-05 22:57:41 UTC (rev 70311)
@@ -1,6 +1,5 @@
 class CategoriesController < ApplicationController
   def index
     @categories = Category.all(:order => 'name ASC')
-    @updated = Port.all(:order => 'updated_at DESC', :limit => 1).first.updated_at
   end
 end

Modified: branches/gsoc10-mpwa/mpwa/app/controllers/ports_controller.rb (70310 => 70311)


--- branches/gsoc10-mpwa/mpwa/app/controllers/ports_controller.rb	2010-08-05 22:47:40 UTC (rev 70310)
+++ branches/gsoc10-mpwa/mpwa/app/controllers/ports_controller.rb	2010-08-05 22:57:41 UTC (rev 70311)
@@ -5,7 +5,6 @@
     else
       @ports = Port.paginate :page => params[:page], :order => 'name ASC', :per_page => 50
     end
-    @updated = Port.all(:order => 'updated_at DESC', :limit => 1).first.updated_at
     @page = params[:page] || 1
 
     respond_to do |format|
@@ -24,7 +23,6 @@
 
   def search
     @ports = Port.search(params[:criteria], params[:val], params[:page])
-    @updated = Port.all(:order => 'updated_at DESC', :limit => 1).first.updated_at
     @page = params[:page] || 1
 
     respond_to do |format|

Modified: branches/gsoc10-mpwa/mpwa/app/views/categories/index.html.erb (70310 => 70311)


--- branches/gsoc10-mpwa/mpwa/app/views/categories/index.html.erb	2010-08-05 22:47:40 UTC (rev 70310)
+++ branches/gsoc10-mpwa/mpwa/app/views/categories/index.html.erb	2010-08-05 22:57:41 UTC (rev 70311)
@@ -3,11 +3,17 @@
   <%= render :partial => '/partials/port_search' %>
 
   <h3>Port Categories</h3>
+
   <div id="categories">
+
+  <% unless @categories.empty? %>
     <ul>
       <% @categories.each do |category| %>
         <li><%= link_to category.name, category_ports_path(category.id) %></li>
       <% end %>
     </ul>
+  <% else %>
+    <p>No Categories found.</p>
+  <% end %>
   </div>
 </div>
\ No newline at end of file

Modified: branches/gsoc10-mpwa/mpwa/app/views/partials/_port_search.html.erb (70310 => 70311)


--- branches/gsoc10-mpwa/mpwa/app/views/partials/_port_search.html.erb	2010-08-05 22:47:40 UTC (rev 70310)
+++ branches/gsoc10-mpwa/mpwa/app/views/partials/_port_search.html.erb	2010-08-05 22:57:41 UTC (rev 70311)
@@ -1,6 +1,6 @@
 <h2 class="hdr">MacPorts Portfiles</h2> 
 
-<p>The MacPorts Project currently distributes <b><%= Port.count %></b> ports, organized across 92 different categories and available below for viewing. This form allows you to search the MacPorts software index, last updated on <b><%= @updated.strftime("%Y-%m-%d") %></b> at <b><%= @updated.strftime("%H:%M:%S %Z") %></b>.</p> 
+<p>The MacPorts Project currently distributes <b><%= Port.count %></b> ports, organized across 92 different categories and available below for viewing. This form allows you to search the MacPorts software index, last updated on <b><%= $updated.strftime("%Y-%m-%d") %></b> at <b><%= $updated.strftime("%H:%M:%S %Z") %></b>.</p> 
 
 <br />
 

Modified: branches/gsoc10-mpwa/mpwa/app/views/ports/index.html.erb (70310 => 70311)


--- branches/gsoc10-mpwa/mpwa/app/views/ports/index.html.erb	2010-08-05 22:47:40 UTC (rev 70310)
+++ branches/gsoc10-mpwa/mpwa/app/views/ports/index.html.erb	2010-08-05 22:57:41 UTC (rev 70311)
@@ -3,6 +3,7 @@
 
   <h3>Query Results</h3>
 
+<% unless @ports.empty? %>
   <p>
     <%= ((@page.to_i - 1) * 50) + 1 %> - <%= @page.to_i * 50 %> of <%= Port.count %> Portfiles Selected
   </p>
@@ -44,6 +45,9 @@
       </dd>
     </dl>
   <% end %>
+<% else %>
+  <p>No ports found.</p>
+<% end %>
 
   <p>
     <%= will_paginate @ports %>

Modified: branches/gsoc10-mpwa/mpwa/db/seeds.rb (70310 => 70311)


--- branches/gsoc10-mpwa/mpwa/db/seeds.rb	2010-08-05 22:47:40 UTC (rev 70310)
+++ branches/gsoc10-mpwa/mpwa/db/seeds.rb	2010-08-05 22:57:41 UTC (rev 70311)
@@ -5,6 +5,3 @@
 #   
 #   cities = City.create([{ :name => 'Chicago' }, { :name => 'Copenhagen' }])
 #   Major.create(:name => 'Daley', :city => cities.first)
-require 'active_record/fixtures'
-
-Fixtures.create_fixtures("#{Rails.root}/test/fixtures", "categories")
\ No newline at end of file

Modified: branches/gsoc10-mpwa/mpwa/test/fixtures/categories.yml (70310 => 70311)


--- branches/gsoc10-mpwa/mpwa/test/fixtures/categories.yml	2010-08-05 22:47:40 UTC (rev 70310)
+++ branches/gsoc10-mpwa/mpwa/test/fixtures/categories.yml	2010-08-05 22:57:41 UTC (rev 70311)
@@ -1,184 +0,0 @@
-0:
-  id: 0
-  name: aqua
-
-1:
-  id: 1
-  name: archivers
-
-2:
-  id: 2
-  name: audio
-
-3:
-  id: 3
-  name: benchmarks
-
-4:
-  id: 4
-  name: cad
-
-5:
-  id: 5
-  name: comms
-
-6:
-  id: 6
-  name: cross
-
-7:
-  id: 7
-  name: databases
-
-8:
-  id: 8
-  name: devel
-
-9:
-  id: 9
-  name: editors
-
-10:
-  id: 10
-  name: emulators
-
-11:
-  id: 11
-  name: erlang
-
-12:
-  id: 12
-  name: finance
-
-13:
-  id: 13
-  name: fuse
-
-14:
-  id: 14
-  name: games
-
-15:
-  id: 15
-  name: genealogy
-
-16:
-  id: 16
-  name: gis
-
-17:
-  id: 17
-  name: gnome
-
-18:
-  id: 18
-  name: gnustep
-
-19:
-  id: 19
-  name: graphics
-
-20:
-  id: 20
-  name: irc
-
-21:
-  id: 21
-  name: java
-
-22:
-  id: 22
-  name: kde
-
-23:
-  id: 23
-  name: lang
-
-24:
-  id: 24
-  name: mail
-
-25:
-  id: 25
-  name: math
-
-26:
-  id: 26
-  name: multimedia
-
-27:
-  id: 27
-  name: net
-
-28:
-  id: 28
-  name: news
-
-29:
-  id: 29
-  name: office
-
-30:
-  id: 30
-  name: palm
-
-31:
-  id: 31
-  name: perl
-
-32:
-  id: 32
-  name: php
-
-33:
-  id: 33
-  name: print
-
-34:
-  id: 34
-  name: python
-
-35:
-  id: 35
-  name: ruby
-
-36:
-  id: 36
-  name: science
-
-37:
-  id: 37
-  name: security
-
-38:
-  id: 38
-  name: shells
-
-39:
-  id: 39
-  name: sysutils
-
-40:
-  id: 40
-  name: tex
-
-41:
-  id: 41
-  name: textproc
-
-42:
-  id: 42
-  name: www
-
-43:
-  id: 43
-  name: x11
-
-44:
-  id: 44
-  name: xfce
-
-45:
-  id: 45
-  name: zope
-

Modified: branches/gsoc10-mpwa/mpwa/test/fixtures/comments.yml (70310 => 70311)


--- branches/gsoc10-mpwa/mpwa/test/fixtures/comments.yml	2010-08-05 22:47:40 UTC (rev 70310)
+++ branches/gsoc10-mpwa/mpwa/test/fixtures/comments.yml	2010-08-05 22:57:41 UTC (rev 70311)
@@ -1,9 +0,0 @@
-# Read about fixtures at http://ar.rubyonrails.org/classes/Fixtures.html
-
-one:
-  port_id: 1
-  body: MyText
-
-two:
-  port_id: 1
-  body: MyText

Modified: branches/gsoc10-mpwa/mpwa/test/fixtures/port_dependencies.yml (70310 => 70311)


--- branches/gsoc10-mpwa/mpwa/test/fixtures/port_dependencies.yml	2010-08-05 22:47:40 UTC (rev 70310)
+++ branches/gsoc10-mpwa/mpwa/test/fixtures/port_dependencies.yml	2010-08-05 22:57:41 UTC (rev 70311)
@@ -1,9 +0,0 @@
-# Read about fixtures at http://ar.rubyonrails.org/classes/Fixtures.html
-
-one:
-  port_id: 1
-  dependency_id: 1
-
-two:
-  port_id: 1
-  dependency_id: 1

Modified: branches/gsoc10-mpwa/mpwa/test/fixtures/ports.yml (70310 => 70311)


--- branches/gsoc10-mpwa/mpwa/test/fixtures/ports.yml	2010-08-05 22:47:40 UTC (rev 70310)
+++ branches/gsoc10-mpwa/mpwa/test/fixtures/ports.yml	2010-08-05 22:57:41 UTC (rev 70311)
@@ -1,19 +0,0 @@
-# Read about fixtures at http://ar.rubyonrails.org/classes/Fixtures.html
-
-one:
-  name: MyString
-  path: MyString
-  version: MyString
-  description: MyText
-  licenses: MyString
-  categories: MyString
-  variants: MyString
-
-two:
-  name: MyString
-  path: MyString
-  version: MyString
-  description: MyText
-  licenses: MyString
-  categories: MyString
-  variants: MyString

Modified: branches/gsoc10-mpwa/mpwa/test/fixtures/tickets.yml (70310 => 70311)


--- branches/gsoc10-mpwa/mpwa/test/fixtures/tickets.yml	2010-08-05 22:47:40 UTC (rev 70310)
+++ branches/gsoc10-mpwa/mpwa/test/fixtures/tickets.yml	2010-08-05 22:57:41 UTC (rev 70311)
@@ -1,9 +0,0 @@
-# Read about fixtures at http://ar.rubyonrails.org/classes/Fixtures.html
-
-one:
-  port_id: 1
-  ticket: 1
-
-two:
-  port_id: 1
-  ticket: 1