Advertisement
Guest User

Untitled

a guest
Mar 2nd, 2015
352
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
REBOL 1.77 KB | None | 0 0
  1. REBOL[
  2.     Tile: "Lest builder"
  3. ]
  4.  
  5. preprocess-script: func [
  6.     script-name     [file!]
  7.     /local cmd file files header script
  8. ] [
  9.     print ["Processing file:" script-name]
  10.     script: load/header/type script-name 'unbound
  11.     header: take script
  12. ;   files: make block! 10
  13.     ; preprocess files from header
  14.     needs: header/needs
  15.     if needs [
  16.         foreach file reverse needs [
  17.             file: to file! join file %.reb
  18.             print [header/name " == needs == " file]   
  19.             module-file: load/header/type file 'unbound
  20.             mod-header: take module-file
  21.             insert head script compose/deep [
  22.                 comment (rejoin ["Import file " file " for " script-name])
  23.                 import module [(body-of mod-header)] [(preprocess-script file module-file)]
  24.             ]
  25.         ]
  26.     ]
  27.     ; preprocess files loaded with DO
  28.     parse script [
  29.         some [
  30.             set cmd 'do
  31.             set file file!
  32.             pos:
  33.             (
  34.                 print [header/name " == loads == " file]
  35. ;               append files file
  36.                 replace script reduce [cmd file] preprocess-script file
  37.             )
  38.             :pos
  39.         |   skip
  40.         ]
  41.     ]
  42.     script
  43. ]
  44.  
  45. ps: :preprocess-script
  46.  
  47. script: ps %lest.reb
  48.  
  49. ; process plugins
  50.  
  51. plugins: read %plugins/
  52. plugin-cache: make block! 2 * length? plugins
  53. foreach plugin plugins [
  54.     repend plugin-cache [
  55.         to word! first parse plugin #"."
  56.         load join %plugins/ plugin
  57.     ]
  58. ]
  59. insert script compose/deep [
  60.     comment "plugin cache"
  61.  
  62.     plugin-cache: [(plugin-cache)]
  63.    
  64.     comment "/plugin cache"
  65. ]
  66.  
  67. ;save/header %dist/lest.reb script [
  68. ;   Title: "Lest (preprocessed)"
  69. ;]
  70.  
  71. build-number: load %build-number
  72. ++ build-number
  73. save %build-number build-number
  74.  
  75. write %dist/lest.reb mold/only head insert script compose/deep [
  76.     rebol [
  77.         Title: "Lest (processed)"
  78.         Date: (now)
  79.         Build: (build-number)
  80.     ]
  81.  
  82.     debug-print: none ; FIXME: makes problem on server (debug-print no-value), not sure why
  83. ]
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement