[Checkins] SVN: hurry.yui/trunk/ Move the yui download functionality from hurry.zopeyui into this package.

Martijn Faassen faassen at infrae.com
Tue Oct 7 13:28:53 EDT 2008


Log message for revision 91874:
  Move the yui download functionality from hurry.zopeyui into this package.
  

Changed:
  A   hurry.yui/trunk/MANIFEST.in
  U   hurry.yui/trunk/setup.py
  _U  hurry.yui/trunk/src/hurry/yui/
  U   hurry.yui/trunk/src/hurry/yui/__init__.py
  A   hurry.yui/trunk/src/hurry/yui/prepare.py
  D   hurry.yui/trunk/src/hurry/yui/yui.py
  U   hurry.yui/trunk/src/hurry/yui/yuidepend.py
  A   hurry.yui/trunk/src/hurry/yui/yuidl.py

-=-
Copied: hurry.yui/trunk/MANIFEST.in (from rev 91867, hurry.zopeyui/trunk/MANIFEST.in)
===================================================================
--- hurry.yui/trunk/MANIFEST.in	                        (rev 0)
+++ hurry.yui/trunk/MANIFEST.in	2008-10-07 17:28:52 UTC (rev 91874)
@@ -0,0 +1,2 @@
+recursive-include src/hurry/yui/yui-build *
+include src/hurry/yui/yui yui.py

Modified: hurry.yui/trunk/setup.py
===================================================================
--- hurry.yui/trunk/setup.py	2008-10-07 16:57:55 UTC (rev 91873)
+++ hurry.yui/trunk/setup.py	2008-10-07 17:28:52 UTC (rev 91874)
@@ -1,9 +1,10 @@
 from setuptools import setup, find_packages
-import sys, os
 
+YUI_VERSION = '2.6.0'
+
 setup(
     name='hurry.yui',
-    version='0.1dev',
+    version=YUI_VERSION + 'dev',
     description="YUI for hurry.resource.",
     classifiers=[],
     keywords='',
@@ -21,6 +22,7 @@
         ],
     entry_points= {
     'console_scripts': [
+      'yuiprepare = hurry.yui.prepare:main',
       'yuidepend = hurry.yui.yuidepend:main',
       ]
     },


Property changes on: hurry.yui/trunk/src/hurry/yui
___________________________________________________________________
Name: svn:ignore
   + yui
yui-build



Modified: hurry.yui/trunk/src/hurry/yui/__init__.py
===================================================================
--- hurry.yui/trunk/src/hurry/yui/__init__.py	2008-10-07 16:57:55 UTC (rev 91873)
+++ hurry.yui/trunk/src/hurry/yui/__init__.py	2008-10-07 17:28:52 UTC (rev 91874)
@@ -1 +1,7 @@
-from hurry.yui.yui import *
+try:
+    from hurry.yui.yui import *
+except ImportError:
+    # nasty to ignore this, but can't self-prepare library if no yui.py is
+    # there yet
+    pass
+

Added: hurry.yui/trunk/src/hurry/yui/prepare.py
===================================================================
--- hurry.yui/trunk/src/hurry/yui/prepare.py	                        (rev 0)
+++ hurry.yui/trunk/src/hurry/yui/prepare.py	2008-10-07 17:28:52 UTC (rev 91874)
@@ -0,0 +1,33 @@
+import os, sys
+import shutil
+
+from hurry.yui.yuidepend import yuidepend
+from hurry.yui.yuidl import download
+
+def main():
+    try:
+        version = sys.argv[1]
+    except IndexError:
+        print "Usage: yuiprepare <YUI version>"
+        return
+
+    # download YUI library into package
+    package_dir = os.path.dirname(__file__)
+    yui_dest_path = os.path.join(package_dir, 'yui-build')
+
+    # remove previous yui library
+    shutil.rmtree(yui_dest_path, ignore_errors=True)
+
+    def copy_yui(ex_path):
+        """Copy YUI to location 'yui-build' in package."""
+        yui_build_path = os.path.join(ex_path, 'yui', 'build')
+        shutil.copytree(yui_build_path, yui_dest_path)
+
+    download(version, copy_yui)
+
+    # get dependency structure and create 'yui.py' into package
+    code = yuidepend(version)
+    yui_py_path = os.path.join(package_dir, 'yui.py')
+    f = open(yui_py_path, 'w')
+    f.write(code)
+    f.close()

Deleted: hurry.yui/trunk/src/hurry/yui/yui.py
===================================================================
--- hurry.yui/trunk/src/hurry/yui/yui.py	2008-10-07 16:57:55 UTC (rev 91873)
+++ hurry.yui/trunk/src/hurry/yui/yui.py	2008-10-07 17:28:52 UTC (rev 91874)
@@ -1,52 +0,0 @@
-from hurry.resource import Library, ResourceInclusion
-
-yui = Library('yui')
-
-fonts = ResourceInclusion(yui, 'fonts/fonts.css', minified='fonts/fonts-min.css')
-grids = ResourceInclusion(yui, 'grids/grids.css', depends=[fonts], minified='grids/grids-min.css')
-reset = ResourceInclusion(yui, 'reset/reset.css', minified='reset/reset-min.css')
-reset_fonts = ResourceInclusion(yui, 'reset-fonts/reset-fonts.css', supersedes=[reset, fonts], minified='reset-fonts/reset-fonts-min.css')
-reset_fonts_grids = ResourceInclusion(yui, 'reset-fonts-grids/reset-fonts-grids.css', supersedes=[reset, fonts, grids], minified='reset-fonts-grids/reset-fonts-grids-min.css')
-base = ResourceInclusion(yui, 'base/base.css', minified='base/base-min.css')
-yahoo = ResourceInclusion(yui, 'yahoo/yahoo.js', debug='yahoo/yahoo-debug.js', minified='yahoo/yahoo-min.js')
-dom = ResourceInclusion(yui, 'dom/dom.js', depends=[yahoo], debug='dom/dom-debug.js', minified='dom/dom-min.js')
-event = ResourceInclusion(yui, 'event/event.js', depends=[yahoo], debug='event/event-debug.js', minified='event/event-min.js')
-containercore = ResourceInclusion(yui, 'container/container_core.js', depends=[dom, event], debug='container/container_core-debug.js', minified='container/container_core-min.js')
-calendar = ResourceInclusion(yui, 'calendar/calendar.js', depends=[event, dom], debug='calendar/calendar-debug.js', minified='calendar/calendar-min.js')
-profiler = ResourceInclusion(yui, 'profiler/profiler.js', depends=[yahoo], debug='profiler/profiler-debug.js', minified='profiler/profiler-min.js')
-element = ResourceInclusion(yui, 'element/element-beta.js', depends=[dom, event], debug='element/element-beta-debug.js', minified='element/element-beta-min.js')
-paginator = ResourceInclusion(yui, 'paginator/paginator.js', depends=[element], debug='paginator/paginator-debug.js', minified='paginator/paginator-min.js')
-container = ResourceInclusion(yui, 'container/container.js', depends=[dom, event], supersedes=[containercore], debug='container/container-debug.js', minified='container/container-min.js')
-simpleeditor = ResourceInclusion(yui, 'editor/simpleeditor.js', depends=[element], debug='editor/simpleeditor-debug.js', minified='editor/simpleeditor-min.js')
-menu = ResourceInclusion(yui, 'menu/menu.js', depends=[containercore], debug='menu/menu-debug.js', minified='menu/menu-min.js')
-json = ResourceInclusion(yui, 'json/json.js', depends=[yahoo], debug='json/json-debug.js', minified='json/json-min.js')
-datasource = ResourceInclusion(yui, 'datasource/datasource.js', depends=[event], debug='datasource/datasource-debug.js', minified='datasource/datasource-min.js')
-charts = ResourceInclusion(yui, 'charts/charts-experimental.js', depends=[element, json, datasource], debug='charts/charts-experimental-debug.js', minified='charts/charts-experimental-min.js')
-button = ResourceInclusion(yui, 'button/button.js', depends=[element], debug='button/button-debug.js', minified='button/button-min.js')
-editor = ResourceInclusion(yui, 'editor/editor.js', depends=[menu, element, button], supersedes=[simpleeditor], debug='editor/editor-debug.js', minified='editor/editor-min.js')
-get = ResourceInclusion(yui, 'get/get.js', depends=[yahoo], debug='get/get-debug.js', minified='get/get-min.js')
-yuiloader_dom_event = ResourceInclusion(yui, 'yuiloader-dom-event/yuiloader-dom-event.js', supersedes=[yahoo, dom, event, get], debug='yuiloader-dom-event/yuiloader-dom-event-debug.js', minified='yuiloader-dom-event/yuiloader-dom-event-min.js')
-animation = ResourceInclusion(yui, 'animation/animation.js', depends=[dom, event], debug='animation/animation-debug.js', minified='animation/animation-min.js')
-dragdrop = ResourceInclusion(yui, 'dragdrop/dragdrop.js', depends=[dom, event], debug='dragdrop/dragdrop-debug.js', minified='dragdrop/dragdrop-min.js')
-carousel = ResourceInclusion(yui, 'carousel/carousel-beta.js', depends=[element], debug='carousel/carousel-beta-debug.js', minified='carousel/carousel-beta-min.js')
-yuiloader = ResourceInclusion(yui, 'yuiloader/yuiloader.js', supersedes=[yahoo, get], debug='yuiloader/yuiloader-debug.js', minified='yuiloader/yuiloader-min.js')
-logger = ResourceInclusion(yui, 'logger/logger.js', depends=[event, dom], debug='logger/logger-debug.js', minified='logger/logger-min.js')
-slider = ResourceInclusion(yui, 'slider/slider.js', depends=[dragdrop], debug='slider/slider-debug.js', minified='slider/slider-min.js')
-colorpicker = ResourceInclusion(yui, 'colorpicker/colorpicker.js', depends=[slider, element], debug='colorpicker/colorpicker-debug.js', minified='colorpicker/colorpicker-min.js')
-resize = ResourceInclusion(yui, 'resize/resize.js', depends=[dom, event, dragdrop, element], debug='resize/resize-debug.js', minified='resize/resize-min.js')
-imagecropper = ResourceInclusion(yui, 'imagecropper/imagecropper-beta.js', depends=[dom, event, dragdrop, element, resize], debug='imagecropper/imagecropper-beta-debug.js', minified='imagecropper/imagecropper-beta-min.js')
-yuitest = ResourceInclusion(yui, 'yuitest/yuitest.js', depends=[logger], debug='yuitest/yuitest-debug.js', minified='yuitest/yuitest-min.js')
-connection = ResourceInclusion(yui, 'connection/connection.js', depends=[event], debug='connection/connection-debug.js', minified='connection/connection-min.js')
-utilities = ResourceInclusion(yui, 'utilities/utilities.js', supersedes=[yahoo, event, dragdrop, animation, dom, connection, element, get], debug='utilities/utilities-debug.js', minified='utilities/utilities-min.js')
-cookie = ResourceInclusion(yui, 'cookie/cookie.js', depends=[yahoo], debug='cookie/cookie-debug.js', minified='cookie/cookie-min.js')
-uploader = ResourceInclusion(yui, 'uploader/uploader-experimental.js', depends=[element], debug='uploader/uploader-experimental-debug.js', minified='uploader/uploader-experimental-min.js')
-layout = ResourceInclusion(yui, 'layout/layout.js', depends=[dom, event, element], debug='layout/layout-debug.js', minified='layout/layout-min.js')
-profilerviewer = ResourceInclusion(yui, 'profilerviewer/profilerviewer-beta.js', depends=[profiler, yuiloader, element], debug='profilerviewer/profilerviewer-beta-debug.js', minified='profilerviewer/profilerviewer-beta-min.js')
-datatable = ResourceInclusion(yui, 'datatable/datatable.js', depends=[element, datasource], debug='datatable/datatable-debug.js', minified='datatable/datatable-min.js')
-selector = ResourceInclusion(yui, 'selector/selector-beta.js', depends=[yahoo, dom], debug='selector/selector-beta-debug.js', minified='selector/selector-beta-min.js')
-yahoo_dom_event = ResourceInclusion(yui, 'yahoo-dom-event/yahoo-dom-event.js', supersedes=[yahoo, event, dom], debug='yahoo-dom-event/yahoo-dom-event-debug.js', minified='yahoo-dom-event/yahoo-dom-event-min.js')
-tabview = ResourceInclusion(yui, 'tabview/tabview.js', depends=[element], debug='tabview/tabview-debug.js', minified='tabview/tabview-min.js')
-autocomplete = ResourceInclusion(yui, 'autocomplete/autocomplete.js', depends=[dom, event, datasource], debug='autocomplete/autocomplete-debug.js', minified='autocomplete/autocomplete-min.js')
-imageloader = ResourceInclusion(yui, 'imageloader/imageloader.js', depends=[event, dom], debug='imageloader/imageloader-debug.js', minified='imageloader/imageloader-min.js')
-treeview = ResourceInclusion(yui, 'treeview/treeview.js', depends=[event, dom], debug='treeview/treeview-debug.js', minified='treeview/treeview-min.js')
-history = ResourceInclusion(yui, 'history/history.js', depends=[event], debug='history/history-debug.js', minified='history/history-min.js')

Modified: hurry.yui/trunk/src/hurry/yui/yuidepend.py
===================================================================
--- hurry.yui/trunk/src/hurry/yui/yuidepend.py	2008-10-07 16:57:55 UTC (rev 91873)
+++ hurry.yui/trunk/src/hurry/yui/yuidepend.py	2008-10-07 17:28:52 UTC (rev 91874)
@@ -17,9 +17,11 @@
     except IndexError:
         print "Usage: yuidepend <YUI version>"
         return
+    print yuidepend(version)
+
+def yuidepend(version):
     d = load_json(version)
-    
-    convert_to_inclusions(d)
+    return convert_to_inclusions(d)
 
 def convert_to_inclusions(d):
     yui = Library('yui')
@@ -52,9 +54,9 @@
         for mode_name in get_modes(inclusion):
             inclusion.modes[mode_name] = mode_inclusion = convert_to_mode(
                 inclusion, mode_name)
-        
+
     # now generate code
-    print generate_code(**inclusion_map)
+    return generate_code(**inclusion_map)
     
 def normalize_name(n):
     return str(n.replace('-', '_'))

Copied: hurry.yui/trunk/src/hurry/yui/yuidl.py (from rev 91867, hurry.zopeyui/trunk/yuidl.py)
===================================================================
--- hurry.yui/trunk/src/hurry/yui/yuidl.py	                        (rev 0)
+++ hurry.yui/trunk/src/hurry/yui/yuidl.py	2008-10-07 17:28:52 UTC (rev 91874)
@@ -0,0 +1,45 @@
+import urllib2
+import tempfile, shutil
+import os
+
+SF_URL_TEMPLATE = 'http://sourceforge.net/project/downloading.php?group_id=165715&filename=yui_%s.zip'
+
+def download(version, callback):
+    """Download a yui of version.
+
+    When downloaded, call callback with path to directory
+    with an extracted YUI. The callback will then be able to copy
+    this to the appropriate location.
+    """
+    url = SF_URL_TEMPLATE % version
+    f = urllib2.urlopen(url)
+    data = f.read()
+    f.close()
+
+    download_url = find_a_href(data, 'direct link')
+
+    f = urllib2.urlopen(download_url)
+    file_data = f.read()
+    f.close()
+
+    dirpath = tempfile.mkdtemp()
+    try:
+        yui_path = os.path.join(dirpath, 'yui.zip')
+        ex_path = os.path.join(dirpath, 'yui_ex')
+        g = open(yui_path, 'wb')
+        g.write(file_data)
+        g.close()
+        os.system('unzip -qq "%s" -d "%s"' % (yui_path, ex_path))
+        callback(ex_path)
+    finally:
+        shutil.rmtree(dirpath, ignore_errors=True)
+
+def find_a_href(data, content):
+    """Given start of content of the <a href="">content</a> find href.
+    """
+    i = data.find(content)
+    a = '<a href="'
+    href_start = data.rfind(a, 0, i)
+    href_start += len(a)
+    href_end = data.find('"', href_start)
+    return data[href_start:href_end]



More information about the Checkins mailing list