MobileBlur

Hex Artifact Content
Login

Artifact 71631089571438deb79ad799d78636dc6c8816bd:


0000: 23 21 2f 75 73 72 2f 62 69 6e 2f 65 6e 76 20 70  #!/usr/bin/env p
0010: 79 74 68 6f 6e 0a 0a 66 72 6f 6d 20 64 69 73 74  ython..from dist
0020: 75 74 69 6c 73 2e 63 6f 72 65 20 69 6d 70 6f 72  utils.core impor
0030: 74 20 73 65 74 75 70 0a 66 72 6f 6d 20 67 6c 75  t setup.from glu
0040: 6f 6e 2e 66 69 6c 65 75 74 69 6c 73 20 69 6d 70  on.fileutils imp
0050: 6f 72 74 20 74 61 72 2c 20 75 6e 74 61 72 2c 20  ort tar, untar, 
0060: 72 65 61 64 5f 66 69 6c 65 2c 20 77 72 69 74 65  read_file, write
0070: 5f 66 69 6c 65 0a 69 6d 70 6f 72 74 20 74 61 72  _file.import tar
0080: 66 69 6c 65 0a 69 6d 70 6f 72 74 20 73 79 73 0a  file.import sys.
0090: 0a 64 65 66 20 74 61 72 28 66 69 6c 65 2c 20 66  .def tar(file, f
00a0: 69 6c 65 6c 69 73 74 2c 20 65 78 70 72 65 73 73  ilelist, express
00b0: 69 6f 6e 3d 27 5e 2e 2b 24 27 29 3a 0a 20 20 20  ion='^.+$'):.   
00c0: 20 22 22 22 0a 20 20 20 20 74 61 72 73 20 64 69   """.    tars di
00d0: 72 2f 66 69 6c 65 73 20 69 6e 74 6f 20 66 69 6c  r/files into fil
00e0: 65 2c 20 6f 6e 6c 79 20 74 61 72 73 20 66 69 6c  e, only tars fil
00f0: 65 20 74 68 61 74 20 6d 61 74 63 68 20 65 78 70  e that match exp
0100: 72 65 73 73 69 6f 6e 0a 20 20 20 20 22 22 22 0a  ression.    """.
0110: 0a 20 20 20 20 74 61 72 20 3d 20 74 61 72 66 69  .    tar = tarfi
0120: 6c 65 2e 54 61 72 46 69 6c 65 28 66 69 6c 65 2c  le.TarFile(file,
0130: 20 27 77 27 29 0a 20 20 20 20 74 72 79 3a 0a 20   'w').    try:. 
0140: 20 20 20 20 20 20 20 66 6f 72 20 65 6c 65 6d 65         for eleme
0150: 6e 74 20 69 6e 20 66 69 6c 65 6c 69 73 74 3a 0a  nt in filelist:.
0160: 20 20 20 20 20 20 20 20 20 20 20 20 74 72 79 3a              try:
0170: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
0180: 20 66 6f 72 20 66 69 6c 65 20 69 6e 20 6c 69 73   for file in lis
0190: 74 64 69 72 28 65 6c 65 6d 65 6e 74 2c 20 65 78  tdir(element, ex
01a0: 70 72 65 73 73 69 6f 6e 2c 20 61 64 64 5f 64 69  pression, add_di
01b0: 72 73 3d 54 72 75 65 29 3a 0a 20 20 20 20 20 20  rs=True):.      
01c0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74 61                ta
01d0: 72 2e 61 64 64 28 6f 73 2e 70 61 74 68 2e 6a 6f  r.add(os.path.jo
01e0: 69 6e 28 65 6c 65 6d 65 6e 74 2c 20 66 69 6c 65  in(element, file
01f0: 29 2c 20 66 69 6c 65 2c 20 46 61 6c 73 65 29 0a  ), file, False).
0200: 20 20 20 20 20 20 20 20 20 20 20 20 65 78 63 65              exce
0210: 70 74 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20  pt:.            
0220: 20 20 20 20 74 61 72 2e 61 64 64 28 65 6c 65 6d      tar.add(elem
0230: 65 6e 74 29 0a 20 20 20 20 66 69 6e 61 6c 6c 79  ent).    finally
0240: 3a 0a 20 20 20 20 20 20 20 20 74 61 72 2e 63 6c  :.        tar.cl
0250: 6f 73 65 28 29 0a 0a 64 65 66 20 73 74 61 72 74  ose()..def start
0260: 28 29 3a 0a 20 20 20 20 69 66 20 27 73 64 69 73  ():.    if 'sdis
0270: 74 27 20 69 6e 20 73 79 73 2e 61 72 67 76 3a 0a  t' in sys.argv:.
0280: 20 20 20 20 20 20 20 20 74 61 72 28 27 67 6c 75          tar('glu
0290: 6f 6e 2f 65 6e 76 2e 74 61 72 27 2c 5b 27 61 70  on/env.tar',['ap
02a0: 70 6c 69 63 61 74 69 6f 6e 73 27 2c 27 56 45 52  plications','VER
02b0: 53 49 4f 4e 27 2c 27 73 70 6c 61 73 68 6c 6f 67  SION','splashlog
02c0: 6f 2e 67 69 66 27 5d 29 0a 0a 20 20 20 20 73 65  o.gif'])..    se
02d0: 74 75 70 28 6e 61 6d 65 3d 27 77 65 62 32 70 79  tup(name='web2py
02e0: 27 2c 0a 20 20 20 20 20 20 20 20 20 20 76 65 72  ',.          ver
02f0: 73 69 6f 6e 3d 72 65 61 64 5f 66 69 6c 65 28 22  sion=read_file("
0300: 56 45 52 53 49 4f 4e 22 29 2e 73 70 6c 69 74 28  VERSION").split(
0310: 29 5b 31 5d 2c 0a 20 20 20 20 20 20 20 20 20 20  )[1],.          
0320: 64 65 73 63 72 69 70 74 69 6f 6e 3d 22 22 22 66  description="""f
0330: 75 6c 6c 2d 73 74 61 63 6b 20 66 72 61 6d 65 77  ull-stack framew
0340: 6f 72 6b 20 66 6f 72 20 72 61 70 69 64 20 64 65  ork for rapid de
0350: 76 65 6c 6f 70 6d 65 6e 74 20 61 6e 64 20 70 72  velopment and pr
0360: 6f 74 6f 74 79 70 69 6e 67 0a 20 20 20 20 20 20  ototyping.      
0370: 20 20 6f 66 20 73 65 63 75 72 65 20 64 61 74 61    of secure data
0380: 62 61 73 65 2d 64 72 69 76 65 6e 20 77 65 62 2d  base-driven web-
0390: 62 61 73 65 64 20 61 70 70 6c 69 63 61 74 69 6f  based applicatio
03a0: 6e 73 2c 20 77 72 69 74 74 65 6e 20 61 6e 64 0a  ns, written and.
03b0: 20 20 20 20 20 20 20 20 70 72 6f 67 72 61 6d 6d          programm
03c0: 61 62 6c 65 20 69 6e 20 50 79 74 68 6f 6e 2e 22  able in Python."
03d0: 22 22 2c 0a 20 20 20 20 20 20 20 20 20 20 6c 6f  "",.          lo
03e0: 6e 67 5f 64 65 73 63 72 69 70 74 69 6f 6e 3d 22  ng_description="
03f0: 22 22 0a 20 20 20 20 20 20 20 20 45 76 65 72 79  "".        Every
0400: 74 68 69 6e 67 20 69 6e 20 6f 6e 65 20 70 61 63  thing in one pac
0410: 6b 61 67 65 20 77 69 74 68 20 6e 6f 20 64 65 70  kage with no dep
0420: 65 6e 64 65 6e 63 69 65 73 2e 20 44 65 76 65 6c  endencies. Devel
0430: 6f 70 6d 65 6e 74 2c 20 64 65 70 6c 6f 79 6d 65  opment, deployme
0440: 6e 74 2c 0a 20 20 20 20 20 20 20 20 64 65 62 75  nt,.        debu
0450: 67 67 69 6e 67 2c 20 74 65 73 74 69 6e 67 2c 20  gging, testing, 
0460: 64 61 74 61 62 61 73 65 20 61 64 6d 69 6e 69 73  database adminis
0470: 74 72 61 74 69 6f 6e 20 61 6e 64 20 6d 61 69 6e  tration and main
0480: 74 65 6e 61 6e 63 65 20 6f 66 20 61 70 70 6c 69  tenance of appli
0490: 63 61 74 69 6f 6e 73 20 63 61 6e 0a 20 20 20 20  cations can.    
04a0: 20 20 20 20 62 65 20 64 6f 6e 65 20 76 69 61 20      be done via 
04b0: 74 68 65 20 70 72 6f 76 69 64 65 64 20 77 65 62  the provided web
04c0: 20 69 6e 74 65 72 66 61 63 65 2e 20 77 65 62 32   interface. web2
04d0: 70 79 20 68 61 73 20 6e 6f 20 63 6f 6e 66 69 67  py has no config
04e0: 75 72 61 74 69 6f 6e 20 66 69 6c 65 73 2c 0a 20  uration files,. 
04f0: 20 20 20 20 20 20 20 72 65 71 75 69 72 65 73 20         requires 
0500: 6e 6f 20 69 6e 73 74 61 6c 6c 61 74 69 6f 6e 2c  no installation,
0510: 20 63 61 6e 20 72 75 6e 20 6f 66 66 20 61 20 55   can run off a U
0520: 53 42 20 64 72 69 76 65 2e 20 77 65 62 32 70 79  SB drive. web2py
0530: 20 75 73 65 73 20 50 79 74 68 6f 6e 20 66 6f 72   uses Python for
0540: 20 74 68 65 0a 20 20 20 20 20 20 20 20 4d 6f 64   the.        Mod
0550: 65 6c 2c 20 74 68 65 20 56 69 65 77 73 20 61 6e  el, the Views an
0560: 64 20 74 68 65 20 43 6f 6e 74 72 6f 6c 6c 65 72  d the Controller
0570: 73 2c 20 68 61 73 20 61 20 62 75 69 6c 74 2d 69  s, has a built-i
0580: 6e 20 74 69 63 6b 65 74 69 6e 67 20 73 79 73 74  n ticketing syst
0590: 65 6d 20 74 6f 20 6d 61 6e 61 67 65 0a 20 20 20  em to manage.   
05a0: 20 20 20 20 20 65 72 72 6f 72 73 2c 20 61 6e 20       errors, an 
05b0: 69 6e 74 65 72 6e 61 74 69 6f 6e 61 6c 69 7a 61  internationaliza
05c0: 74 69 6f 6e 20 65 6e 67 69 6e 65 2c 20 77 6f 72  tion engine, wor
05d0: 6b 73 20 77 69 74 68 20 53 51 4c 69 74 65 2c 20  ks with SQLite, 
05e0: 50 6f 73 74 67 72 65 53 51 4c 2c 20 4d 79 53 51  PostgreSQL, MySQ
05f0: 4c 2c 0a 20 20 20 20 20 20 20 20 4d 53 53 51 4c  L,.        MSSQL
0600: 2c 20 46 69 72 65 42 69 72 64 2c 20 4f 72 61 63  , FireBird, Orac
0610: 6c 65 2c 20 49 42 4d 20 44 42 32 2c 20 49 6e 66  le, IBM DB2, Inf
0620: 6f 72 6d 69 78 2c 20 49 6e 67 72 65 73 2c 20 73  ormix, Ingres, s
0630: 79 62 61 73 65 20 61 6e 64 20 47 6f 6f 67 6c 65  ybase and Google
0640: 20 41 70 70 20 45 6e 67 69 6e 65 20 76 69 61 20   App Engine via 
0650: 61 0a 20 20 20 20 20 20 20 20 44 61 74 61 62 61  a.        Databa
0660: 73 65 20 41 62 73 74 72 61 63 74 69 6f 6e 20 4c  se Abstraction L
0670: 61 79 65 72 2e 20 77 65 62 32 70 79 20 69 6e 63  ayer. web2py inc
0680: 6c 75 64 65 73 20 6c 69 62 72 61 72 69 65 73 20  ludes libraries 
0690: 74 6f 20 68 61 6e 64 6c 65 0a 20 20 20 20 20 20  to handle.      
06a0: 20 20 48 54 4d 4c 2f 58 4d 4c 2c 20 52 53 53 2c    HTML/XML, RSS,
06b0: 20 41 54 4f 4d 2c 20 43 53 56 2c 20 52 54 46 2c   ATOM, CSV, RTF,
06c0: 20 4a 53 4f 4e 2c 20 41 4a 41 58 2c 20 58 4d 4c   JSON, AJAX, XML
06d0: 52 50 43 2c 20 57 49 4b 49 20 6d 61 72 6b 75 70  RPC, WIKI markup
06e0: 2e 20 50 72 6f 64 75 63 74 69 6f 6e 0a 20 20 20  . Production.   
06f0: 20 20 20 20 20 72 65 61 64 79 2c 20 63 61 70 61       ready, capa
0700: 62 6c 65 20 6f 66 20 75 70 6c 6f 61 64 2f 64 6f  ble of upload/do
0710: 77 6e 6c 6f 61 64 20 73 74 72 65 61 6d 69 6e 67  wnload streaming
0720: 20 6f 66 20 76 65 72 79 20 6c 61 72 67 65 20 66   of very large f
0730: 69 6c 65 73 2c 20 61 6e 64 20 61 6c 77 61 79 73  iles, and always
0740: 0a 20 20 20 20 20 20 20 20 62 61 63 6b 77 61 72  .        backwar
0750: 64 20 63 6f 6d 70 61 74 69 62 6c 65 2e 0a 20 20  d compatible..  
0760: 20 20 20 20 20 20 22 22 22 2c 0a 20 20 20 20 20        """,.     
0770: 20 20 20 20 20 61 75 74 68 6f 72 3d 27 4d 61 73       author='Mas
0780: 73 69 6d 6f 20 44 69 20 50 69 65 72 72 6f 27 2c  simo Di Pierro',
0790: 0a 20 20 20 20 20 20 20 20 20 20 61 75 74 68 6f  .          autho
07a0: 72 5f 65 6d 61 69 6c 3d 27 6d 64 69 70 69 65 72  r_email='mdipier
07b0: 72 6f 40 63 73 2e 64 65 70 61 75 6c 2e 65 64 75  ro@cs.depaul.edu
07c0: 27 2c 0a 20 20 20 20 20 20 20 20 20 20 6c 69 63  ',.          lic
07d0: 65 6e 73 65 20 3d 20 27 68 74 74 70 3a 2f 2f 77  ense = 'http://w
07e0: 65 62 32 70 79 2e 63 6f 6d 2f 65 78 61 6d 70 6c  eb2py.com/exampl
07f0: 65 73 2f 64 65 66 61 75 6c 74 2f 6c 69 63 65 6e  es/default/licen
0800: 73 65 27 2c 0a 20 20 20 20 20 20 20 20 20 20 63  se',.          c
0810: 6c 61 73 73 69 66 69 65 72 73 20 3d 20 5b 22 44  lassifiers = ["D
0820: 65 76 65 6c 6f 70 6d 65 6e 74 20 53 74 61 74 75  evelopment Statu
0830: 73 20 3a 3a 20 35 20 2d 20 50 72 6f 64 75 63 74  s :: 5 - Product
0840: 69 6f 6e 2f 53 74 61 62 6c 65 22 5d 2c 0a 20 20  ion/Stable"],.  
0850: 20 20 20 20 20 20 20 20 75 72 6c 3d 27 68 74 74          url='htt
0860: 70 3a 2f 2f 77 65 62 32 70 79 2e 63 6f 6d 27 2c  p://web2py.com',
0870: 0a 20 20 20 20 20 20 20 20 20 20 70 6c 61 74 66  .          platf
0880: 6f 72 6d 73 20 3d 27 57 69 6e 64 6f 77 73 2c 20  orms ='Windows, 
0890: 4c 69 6e 75 78 2c 20 4d 61 63 2c 20 55 6e 69 78  Linux, Mac, Unix
08a0: 2c 57 69 6e 64 6f 77 73 20 4d 6f 62 69 6c 65 27  ,Windows Mobile'
08b0: 2c 0a 20 20 20 20 20 20 20 20 20 20 70 61 63 6b  ,.          pack
08c0: 61 67 65 73 3d 5b 27 67 6c 75 6f 6e 27 2c 0a 20  ages=['gluon',. 
08d0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
08e0: 20 20 20 27 67 6c 75 6f 6e 2f 63 6f 6e 74 72 69     'gluon/contri
08f0: 62 27 2c 0a 20 20 20 20 20 20 20 20 20 20 20 20  b',.            
0900: 20 20 20 20 20 20 20 20 27 67 6c 75 6f 6e 2f 63          'gluon/c
0910: 6f 6e 74 72 69 62 2f 67 61 74 65 77 61 79 73 27  ontrib/gateways'
0920: 2c 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ,.              
0930: 20 20 20 20 20 20 27 67 6c 75 6f 6e 2f 63 6f 6e        'gluon/con
0940: 74 72 69 62 2f 6c 6f 67 69 6e 5f 6d 65 74 68 6f  trib/login_metho
0950: 64 73 27 2c 0a 20 20 20 20 20 20 20 20 20 20 20  ds',.           
0960: 20 20 20 20 20 20 20 20 20 27 67 6c 75 6f 6e 2f           'gluon/
0970: 63 6f 6e 74 72 69 62 2f 6d 61 72 6b 64 6f 77 6e  contrib/markdown
0980: 27 2c 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ',.             
0990: 20 20 20 20 20 20 20 27 67 6c 75 6f 6e 2f 63 6f         'gluon/co
09a0: 6e 74 72 69 62 2f 6d 61 72 6b 6d 69 6e 27 2c 0a  ntrib/markmin',.
09b0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
09c0: 20 20 20 20 27 67 6c 75 6f 6e 2f 63 6f 6e 74 72      'gluon/contr
09d0: 69 62 2f 6d 65 6d 63 61 63 68 65 27 2c 0a 20 20  ib/memcache',.  
09e0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
09f0: 20 20 27 67 6c 75 6f 6e 2f 63 6f 6e 74 72 69 62    'gluon/contrib
0a00: 2f 70 79 66 70 64 66 27 2c 0a 20 20 20 20 20 20  /pyfpdf',.      
0a10: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 27 67                'g
0a20: 6c 75 6f 6e 2f 63 6f 6e 74 72 69 62 2f 70 79 6d  luon/contrib/pym
0a30: 79 73 71 6c 27 2c 0a 20 20 20 20 20 20 20 20 20  ysql',.         
0a40: 20 20 20 20 20 20 20 20 20 20 20 27 67 6c 75 6f             'gluo
0a50: 6e 2f 63 6f 6e 74 72 69 62 2f 70 79 72 74 66 27  n/contrib/pyrtf'
0a60: 2c 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ,.              
0a70: 20 20 20 20 20 20 27 67 6c 75 6f 6e 2f 63 6f 6e        'gluon/con
0a80: 74 72 69 62 2f 70 79 73 69 6d 70 6c 65 73 6f 61  trib/pysimplesoa
0a90: 70 27 2c 0a 20 20 20 20 20 20 20 20 20 20 20 20  p',.            
0aa0: 20 20 20 20 20 20 20 20 27 67 6c 75 6f 6e 2f 63          'gluon/c
0ab0: 6f 6e 74 72 69 62 2f 73 69 6d 70 6c 65 6a 73 6f  ontrib/simplejso
0ac0: 6e 27 2c 0a 20 20 20 20 20 20 20 20 20 20 20 20  n',.            
0ad0: 20 20 20 20 20 20 20 20 27 67 6c 75 6f 6e 2f 74          'gluon/t
0ae0: 65 73 74 73 27 2c 0a 20 20 20 20 20 20 20 20 20  ests',.         
0af0: 20 20 20 20 20 20 20 20 20 20 20 5d 2c 0a 20 20             ],.  
0b00: 20 20 20 20 20 20 20 20 70 61 63 6b 61 67 65 5f          package_
0b10: 64 61 74 61 20 3d 20 7b 27 67 6c 75 6f 6e 27 3a  data = {'gluon':
0b20: 5b 27 65 6e 76 2e 74 61 72 27 5d 7d 2c 0a 20 20  ['env.tar']},.  
0b30: 20 20 20 20 20 20 20 20 73 63 72 69 70 74 73 20          scripts 
0b40: 3d 20 5b 27 77 32 70 5f 61 70 70 73 27 2c 27 77  = ['w2p_apps','w
0b50: 32 70 5f 72 75 6e 27 2c 27 77 32 70 5f 63 6c 6f  2p_run','w2p_clo
0b60: 6e 65 27 5d 2c 0a 20 20 20 20 20 20 20 20 20 20  ne'],.          
0b70: 29 0a 20 20 20 20 0a 69 66 20 5f 5f 6e 61 6d 65  ).    .if __name
0b80: 5f 5f 20 3d 3d 20 27 5f 5f 6d 61 69 6e 5f 5f 27  __ == '__main__'
0b90: 3a 0a 20 20 20 20 23 70 72 69 6e 74 20 22 77 65  :.    #print "we
0ba0: 62 32 70 79 20 64 6f 65 73 20 6e 6f 74 20 72 65  b2py does not re
0bb0: 71 75 69 72 65 20 69 6e 73 74 61 6c 6c 61 74 69  quire installati
0bc0: 6f 6e 20 61 6e 64 22 0a 20 20 20 20 23 70 72 69  on and".    #pri
0bd0: 6e 74 20 22 79 6f 75 20 73 68 6f 75 6c 64 20 6a  nt "you should j
0be0: 75 73 74 20 73 74 61 72 74 20 69 74 20 77 69 74  ust start it wit
0bf0: 68 3a 22 0a 20 20 20 20 23 70 72 69 6e 74 20 0a  h:".    #print .
0c00: 20 20 20 20 23 70 72 69 6e 74 20 22 24 20 70 79      #print "$ py
0c10: 74 68 6f 6e 20 77 65 62 32 70 79 2e 70 79 22 0a  thon web2py.py".
0c20: 20 20 20 20 23 70 72 69 6e 74 20 0a 20 20 20 20      #print .    
0c30: 23 70 72 69 6e 74 20 22 61 72 65 20 79 6f 75 20  #print "are you 
0c40: 73 75 72 65 20 79 6f 75 20 77 61 6e 74 20 74 6f  sure you want to
0c50: 20 69 6e 73 74 61 6c 6c 20 69 74 20 61 6e 79 77   install it anyw
0c60: 61 79 20 28 79 2f 6e 29 3f 22 0a 20 20 20 20 23  ay (y/n)?".    #
0c70: 73 20 3d 20 72 61 77 5f 69 6e 70 75 74 28 27 3e  s = raw_input('>
0c80: 27 29 0a 20 20 20 20 23 69 66 20 73 2e 6c 6f 77  ').    #if s.low
0c90: 65 72 28 29 5b 3a 31 5d 3d 3d 27 79 27 3a 0a 20  er()[:1]=='y':. 
0ca0: 20 20 20 73 74 61 72 74 28 29 0a 20 20 20 20 20     start().     
0cb0: 20 20 20 0a                                         .