Exemplo n.º 1
0
def build():
    sed = Sed()
    PH.replacer(sed)

    bootman = PH.getmanifest('jsboot')

    sed.add(
        '{JSBOOT}', bootman['jsbootstrap'].encode('latin-1').replace(
            'only.jsboot.js', 'only.jsboot-min.js'))
    sed.add('{MINIBOOT}', 'miniboot-min.js')

    sed.add('{PUKE-SERVICE-HOST}', Yak.service['host'])
    sed.add('{PUKE-SERVICE-PORT}', Yak.service['port'])

    # sed.add('{PUKE_ANALYTICS}', Yak.ACCESS['GA'])
    # sed.add('{PUKE_FBKEY}', Yak.ACCESS['FACEBOOK']['KEY'])
    # sed.add('{PUKE_KEY}', Yak.ACCESS['LXXL']['KEY'])
    # sed.add('{PUKE_SECRET}', Yak.ACCESS['LXXL']['SECRET'])

    BOOTSTRAP_BUILD = FileSystem.join(Yak.build_root)
    VERSIONED_ROOT = FileSystem.join(Yak.build_root, Yak.package['version'])

    # ================================
    # Bootstrap
    # ================================
    miniboot = FileList("src/miniboot/common/", filter="*.js")
    combine(miniboot, BOOTSTRAP_BUILD + '/miniboot.js', replace=sed)
    combine(miniboot, BOOTSTRAP_BUILD + '/miniboot-min.js', replace=sed)

    copyfile("src/miniboot/miniboot.ico", Yak.build_root + "/miniboot.ico")
    copyfile("src/miniboot/miniboot.png", Yak.build_root + "/miniboot.png")

    combine('src/miniboot/index.html',
            BOOTSTRAP_BUILD + '/index.html',
            replace=sed)

    # ================================
    # Modeling as an Ember application
    # ================================

    # ================================
    # Helpers libraries
    # ================================
    helpers = FileList('src', filter='*libs*')
    deepcopy(helpers, Yak.build_root)

    # ================================
    # Standalone activity viewer
    # ================================

    # spitman = PH.getmanifest('spitfire', '0.1', istrunk)
    # bootman = PH.getmanifest('jsboot', '0.1', istrunk)
    # actlist = [
    #   spitman['spitfire-lab'],
    #   'src/onegateisopening/boot.js',
    # ]
    # combine(spitfireList, Yak.BUILD_ROOT + "/there.is.only.jsboot.js", replace=sed)

    # ================================
    # Versioned part of the app
    # ================================
    lxxl = [
        'src/lxxl/data.js', 'src/lxxl/mutable.js',
        'src/lxxl/service/activities.js', 'src/lxxl/service/blob.js',
        'src/lxxl/service/user.js', 'src/lxxl/model/model.js',
        'src/lxxl/factories.js'
    ]
    combine(lxxl, VERSIONED_ROOT + "/lxxl-standalone-library.js", replace=sed)

    #js application
    js = FileList("src/app/common/helpers", filter="*.js")
    js.merge(FileList("src/app/common/", filter="*i18n.js"))
    js.merge(FileList("src/app/common/root", filter="*.js"))
    js.merge(FileList("src/app/common/states", filter="*.js"))
    js.merge(FileList("src/app/common/models", filter="*.js"))
    js.merge(FileList("src/app/common/controllers", filter="*.js"))
    js.merge(FileList("src/app/common/views", filter="*.js"))
    # js.merge(FileList("src/app/desktop/", filter = "*app.js"))
    # js.merge(FileList("src/app/desktop/states", filter = "*.js"))
    # js.merge(FileList("src/app/desktop/models", filter = "*.js"))
    # js.merge(FileList("src/app/desktop/controllers", filter = "*.js"))
    # js.merge(FileList("src/app/desktop/views", filter = "*.js"))

    js.merge("src/activity/apiwrapper.js")
    js.merge("src/activity/scoring.js")
    js.merge("src/activity/activity.js")

    combine(js, VERSIONED_ROOT + "/lxxl.js", replace=sed)

    deepcopy('src/activity/scorm/', VERSIONED_ROOT)

    # js.merge(FileList("src/app/desktop/", filter = "*routing.js"))
    # js.merge(FileList("src/app/desktop/", filter = "*hotkeys.js"))
    # js.merge(FileList("src/app/desktop/model/", filter = "*.js"))
    # js.merge(FileList("src/app/desktop/views/", filter = "*.js"))
    # js.merge(FileList("src/app/desktop/states/", filter = "*.js"))

    # css application
    css = FileList("src/assets/common/css", filter="*.css,*.scss")
    # css.merge("src/activity/activity.scss")
    # css.merge(FileList("src/assets/desktop/css", filter = "*.css,*.scss"))
    combine(css, VERSIONED_ROOT + "/lxxl.css", replace=sed)

    # fonts copy
    # fonts = FileList("src/assets/common/fonts/")
    # fonts.merge(FileList("src/assets/desktop/fonts/"))
    # deepcopy(fonts, VERSIONED_ROOT + '/fonts/')

    # images copy
    images = FileList('src/assets/common/images',
                      filter="*.jpg,*.png,*.gif,*.ico")
    # images.merge(FileList('src/assets/desktop/images', filter = "*.jpg,*.png,*.gif,*.ico"))
    deepcopy(images, VERSIONED_ROOT + "/images/")

    # templates merge
    templates = FileList('src/app/common/templates', filter="*.tpl")
    # templates.merge(FileList("src/app/desktop/templates/", filter = "*.tpl"))
    combine(templates, VERSIONED_ROOT + "/lxxl.tpl")

    # ================================
    # Versioned runner
    # ================================

    list = FileList('src', filter='*activity*')
    deepcopy(list, VERSIONED_ROOT, replace=sed)
    combine(lxxl,
            VERSIONED_ROOT + "/activity/lxxl-standalone-library.js",
            replace=sed)

    # combine("src/activity/activity.tpl", VERSIONED_ROOT + "/activity.tpl", replace=sed)
    # css.merge(FileList("src/assets/desktop/css", filter = "*.css,*.scss"))

    combine("src/activity/activity.scss",
            VERSIONED_ROOT + "/activity/activity.css",
            replace=sed)
    combine("src/activity/miniboot.js",
            VERSIONED_ROOT + "/activity/miniboot-min.js",
            replace=sed)

    # XXX new stuff
    deepcopy("src/miniapp", Yak.build_root + "/miniapp", replace=sed)
Exemplo n.º 2
0
def build():
  sed = Sed()
  PH.replacer(sed)

  bootman = PH.getmanifest('jsboot')

  sed.add('{JSBOOT}', bootman['jsbootstrap'].encode('latin-1').replace('only.jsboot.js', 'only.jsboot-min.js'))
  sed.add('{MINIBOOT}', 'miniboot-min.js')

  sed.add('{PUKE-SERVICE-HOST}', Yak.service['host'])
  sed.add('{PUKE-SERVICE-PORT}', Yak.service['port'])

  # sed.add('{PUKE_ANALYTICS}', Yak.ACCESS['GA'])
  # sed.add('{PUKE_FBKEY}', Yak.ACCESS['FACEBOOK']['KEY'])
  # sed.add('{PUKE_KEY}', Yak.ACCESS['LXXL']['KEY'])
  # sed.add('{PUKE_SECRET}', Yak.ACCESS['LXXL']['SECRET'])

  BOOTSTRAP_BUILD = FileSystem.join(Yak.build_root)
  VERSIONED_ROOT = FileSystem.join(Yak.build_root, Yak.package['version'])


  # ================================
  # Bootstrap
  # ================================
  miniboot = FileList("src/miniboot/common/" , filter="*.js")
  combine(miniboot, BOOTSTRAP_BUILD + '/miniboot.js', replace=sed)
  combine(miniboot, BOOTSTRAP_BUILD + '/miniboot-min.js', replace=sed)

  copyfile("src/miniboot/miniboot.ico", Yak.build_root + "/miniboot.ico")
  copyfile("src/miniboot/miniboot.png", Yak.build_root + "/miniboot.png")


  combine('src/miniboot/index.html', BOOTSTRAP_BUILD + '/index.html', replace=sed)



  # ================================
  # Modeling as an Ember application
  # ================================

  # ================================
  # Helpers libraries
  # ================================
  helpers = FileList('src', filter = '*libs*')
  deepcopy(helpers, Yak.build_root);


  # ================================
  # Standalone activity viewer
  # ================================

  # spitman = PH.getmanifest('spitfire', '0.1', istrunk)
  # bootman = PH.getmanifest('jsboot', '0.1', istrunk)
  # actlist = [
  #   spitman['spitfire-lab'],
  #   'src/onegateisopening/boot.js',
  # ]
  # combine(spitfireList, Yak.BUILD_ROOT + "/there.is.only.jsboot.js", replace=sed)




  # ================================
  # Versioned part of the app
  # ================================
  lxxl = [
    'src/lxxl/data.js',
    'src/lxxl/mutable.js',
    'src/lxxl/service/activities.js',
    'src/lxxl/service/blob.js',
    'src/lxxl/service/user.js',
    'src/lxxl/model/model.js',
    'src/lxxl/factories.js'
  ]
  combine(lxxl, VERSIONED_ROOT + "/lxxl-standalone-library.js", replace=sed)

  #js application
  js = FileList("src/app/common/helpers", filter = "*.js")
  js.merge(FileList("src/app/common/", filter = "*i18n.js"))
  js.merge(FileList("src/app/common/root", filter = "*.js"))
  js.merge(FileList("src/app/common/states", filter = "*.js"))
  js.merge(FileList("src/app/common/models", filter = "*.js"))
  js.merge(FileList("src/app/common/controllers", filter = "*.js"))
  js.merge(FileList("src/app/common/views", filter = "*.js"))
  # js.merge(FileList("src/app/desktop/", filter = "*app.js"))
  # js.merge(FileList("src/app/desktop/states", filter = "*.js"))
  # js.merge(FileList("src/app/desktop/models", filter = "*.js"))
  # js.merge(FileList("src/app/desktop/controllers", filter = "*.js"))
  # js.merge(FileList("src/app/desktop/views", filter = "*.js"))

  js.merge("src/activity/apiwrapper.js")
  js.merge("src/activity/scoring.js")
  js.merge("src/activity/activity.js")

  combine(js, VERSIONED_ROOT + "/lxxl.js", replace=sed)

  deepcopy('src/activity/scorm/', VERSIONED_ROOT);


  # js.merge(FileList("src/app/desktop/", filter = "*routing.js"))
  # js.merge(FileList("src/app/desktop/", filter = "*hotkeys.js"))
  # js.merge(FileList("src/app/desktop/model/", filter = "*.js"))
  # js.merge(FileList("src/app/desktop/views/", filter = "*.js"))
  # js.merge(FileList("src/app/desktop/states/", filter = "*.js"))


  # css application
  css = FileList("src/assets/common/css", filter = "*.css,*.scss")
  # css.merge("src/activity/activity.scss")
  # css.merge(FileList("src/assets/desktop/css", filter = "*.css,*.scss"))
  combine(css, VERSIONED_ROOT + "/lxxl.css", replace=sed)

  # fonts copy
  # fonts = FileList("src/assets/common/fonts/")
  # fonts.merge(FileList("src/assets/desktop/fonts/"))
  # deepcopy(fonts, VERSIONED_ROOT + '/fonts/')

  # images copy
  images = FileList('src/assets/common/images', filter = "*.jpg,*.png,*.gif,*.ico")
  # images.merge(FileList('src/assets/desktop/images', filter = "*.jpg,*.png,*.gif,*.ico"))
  deepcopy(images, VERSIONED_ROOT + "/images/")

  # templates merge
  templates = FileList('src/app/common/templates', filter = "*.tpl")
  # templates.merge(FileList("src/app/desktop/templates/", filter = "*.tpl"))
  combine(templates, VERSIONED_ROOT +  "/lxxl.tpl")


  # ================================
  # Versioned runner
  # ================================


  list = FileList('src', filter = '*activity*')
  deepcopy(list, VERSIONED_ROOT, replace=sed)
  combine(lxxl, VERSIONED_ROOT + "/activity/lxxl-standalone-library.js", replace=sed)
  
  # combine("src/activity/activity.tpl", VERSIONED_ROOT + "/activity.tpl", replace=sed)
  # css.merge(FileList("src/assets/desktop/css", filter = "*.css,*.scss"))

  combine("src/activity/activity.scss", VERSIONED_ROOT + "/activity/activity.css", replace=sed)
  combine("src/activity/miniboot.js", VERSIONED_ROOT + "/activity/miniboot-min.js", replace=sed)



  # XXX new stuff
  deepcopy("src/miniapp", Yak.build_root + "/miniapp", replace=sed)
Exemplo n.º 3
0
def build():
  # ============================
  # Basic stuff
  # ============================
  sed = Sed()
  PH.replacer(sed)

    # # Get the remoty shims first
    # remoty = Yak.links["jsboot"]["url"].split('/')
    # remoty.pop()
    # remoty = '/'.join(remoty)
    # yam = json.loads(http.get(Yak.links["jsboot"]["url"], verify=False).text)[Yak.links["jsboot"]["version"]]



  # ================================
  # Modeling as an Ember application
  # ================================

  # ================================
  # Bootstrap
  # ================================
  VERSIONED_ROOT = FileSystem.join(Yak.build_root, Yak.package['version']);

  # First, merge in bootstraps
  js = FileList("src/bootstrap/common/" , filter="*.js")
  # js.merge(FileList("src/bootstrap/desktop/", filter = "*.js"))

  # css = FileList("src/bootstrap/common/" , filter="*.css,*.scss")
  # css.merge(FileList("src/bootstrap/desktop/", filter = "*.css,*.scss"))

  # Now generate min and non min version

  sed.add('{PUKE-BOOT-ROOT}', Yak.package['version'])

  copyfile("src/bootstrap/miniboot.ico", Yak.build_root + "/miniboot.ico")
  copyfile("src/bootstrap/miniboot.png", Yak.build_root + "/miniboot.png")

  bootman = PH.getmanifest('jsboot', usemin = True)
  sed.add('{JSBOOT}', bootman['jsbootstrap'].encode('latin-1'))
  sed.add('{MINIBOOT}', 'miniboot-min.js')
  combine(js, Yak.build_root + "/miniboot-min.js", replace=sed)
  # combine(css, Yak.build_root + "/miniboot-min.css", replace=sed)

  combine('src/bootstrap/index.html', Yak.build_root + '/index.html', replace=sed)

  # copyfile('src/bootstrap/taupale.json', Yak.build_root)
  # copyfile('src/bootstrap/taupale.tpl', Yak.build_root)
  # XXX
  # combine('src/test.jqz', Yak.build_root + '/test.jqz', replace=sed)



  # ================================
  # Versioned part of the app
  # ================================

  #js application
  js = FileList("src/app/common/helpers", filter = "*.js")

  list = [
    "src/lib/closure.js",

    "src/lib/github/error.js",
    "src/lib/github/core.js",
    "src/lib/github/auth.js",
    "src/lib/github/users.js",
    "src/lib/github/organizations.js",
    "src/lib/github/teams.js",
    "src/lib/github/repositories.js",
    "src/lib/github/search.js",

    "src/lib/jscore/eventdispatcher.js",
    "src/lib/jscore/mutable.js",
    "src/lib/jscore/utils.js",

    "src/lib/gitbay/base.js",
    "src/lib/gitbay/user.js",
    "src/lib/gitbay/organization.js",
    "src/lib/gitbay/team.js",
    "src/lib/gitbay/repository.js",
    "src/lib/gitbay/search.js",
    "src/lib/gitbay/factory.js"
  ]
  js.merge(list)

  js.merge(FileList("src/app/common/", filter = "*i18n.js"))
  js.merge(FileList("src/app/common/root", filter = "*.js"))
  js.merge(FileList("src/app/common/states", filter = "*.js"))
  js.merge(FileList("src/app/common/models", filter = "*.js"))
  js.merge(FileList("src/app/common/controllers", filter = "*.js"))
  js.merge(FileList("src/app/common/views", filter = "*.js"))

  md = FileList('src/lib/markdown', filter="*.js")
  js.merge(md)

  # js.merge(FileList('src/lib/prettify', filter="*.js"))

  js.merge(FileList('src/lib/skimify', filter="*.js"))

  combine(js, VERSIONED_ROOT + "/gitbay.js", replace=sed)


  # css application
  css = FileList("src/assets/common/css", filter = "*.css,*.scss")

  # css.merge(FileList("src/assets/desktop/css", filter = "*.css,*.scss"))
  combine(css, VERSIONED_ROOT + "/gitbay.css", replace=sed)


  # images copy
  images = FileList('src/assets/common/images', filter = "*.jpg,*.png,*.gif,*.ico")
  # images.merge(FileList('src/assets/desktop/images', filter = "*.jpg,*.png,*.gif,*.ico"))
  deepcopy(images, VERSIONED_ROOT + "/images/")


  # images copy
  fonts = FileList('src/assets/common/fonts', filter = "*.eot,*.svg,*.ttf,*.woff")
  # images.merge(FileList('src/assets/desktop/images', filter = "*.jpg,*.png,*.gif,*.ico"))
  deepcopy(fonts, VERSIONED_ROOT + "/fonts/")

  # templates merge
  templates = FileList('src/app/common/templates', filter = "*.tpl")
  # templates.merge(FileList("src/app/desktop/templates/", filter = "*.tpl"))
  combine(templates, VERSIONED_ROOT +  "/gitbay.tpl")
Exemplo n.º 4
0
def build():
    
    sed = Sed()
    PH.replacer(sed)

    spitman = PH.getmanifest('spitfire')

    spitbase = spitman['spitfire'].split('/')
    spitbase.pop()
    spitbase = '/'.join(spitbase)

    sed.add('{SPIT-BASE}', spitbase.encode('latin-1'))
    # Our own internal boot path to resolve modules against... - XXX unlikely to work properly due to deploy root variations?
    # sed.add('{SPIT-BOOT}', Yak.links['self']['url'] + "/"+ Yak.package['name'] + "/" + Yak.package['version'])
    # Tricky!
    sed.add("'{SPIT-STATICS}'", json.dumps(PH.getstaticmanifest('*')))

    # ================================
    # Tests
    # ================================

    list = FileList("tests", filter="*.js,*.html")
    deepcopy(list, Yak.build_root + '/tests', replace=sed)

    # ================================
    # Spitfire loader, in many variants
    # ================================

    # Mini-loader
    combine([spitman['gulliver'], 'src/onegateisopening/b.js'], Yak.build_root + "/t.i.o.j.js", replace=sed)

    # Bootstrappers - we use lab by default
    spitfireList = [
      spitman['spitfire-lab'],
      'src/onegateisopening/boot.js',
      'src/gister/packman.js'
    ]
    combine(spitfireList, Yak.build_root + "/there.is.only.jsboot.js", replace=sed)

    # spitfireList = [
    #   spitman['spitfire'],
    #   'src/onegateisopening/boot.js',
    # ]
    # combine(spitfireList, Yak.build_root + "/there.is.only.jsboot.vanilla.js", replace=sed)

    # spitfireList = [
    #   spitman['spitfire-require'],
    #   'src/onegateisopening/boot.js',
    # ]
    # # combine(spitfireList, Yak.build_root + "/there.is.only.jsboot.require.js", replace=sed)
    # combine(spitfireList, Yak.build_root + "/there.is.only.jsboot.require.js", replace=sed)

    # spitfireList = [
    #   spitman['spitfire-head'],
    #   'src/onegateisopening/boot.js',
    # ]
    # combine(spitfireList, Yak.build_root + "/there.is.only.jsboot.head.js", replace=sed)

    # # These two don't support strict mode - the hell with them!
    # spitfireList = [
    #   spitman['spitfire-yahoo'],
    #   'src/onegateisopening/boot.js',
    # ]
    # combine(spitfireList, Yak.build_root + "/there.is.only.jsboot.yahoo.js", replace=sed)

    # spitfireList = [
    #   spitman['spitfire-yepnope'],
    #   'src/onegateisopening/boot.js',
    # ]
    # combine(spitfireList, Yak.build_root + "/there.is.only.jsboot.yepnope.js", replace=sed)



    # XXX Have unified XHR bundled to be safe (?)
    # spitman['xhr'],

    # ================================
    # Monolithic ember stack test
    # ================================
    # f = [
    #   PH.getstaticmanifest('jquery'),
    #   PH.getstaticmanifest('handlebars'),
    #   PH.getstaticmanifest('ember'),
    #   PH.getstaticmanifest('i18n')
    # ]
    # combine(f, Yak.build_root + "/stack.ember.js", replace=sed)


    # ================================
    # Css normalizer
    # ================================
    cssnorm = PH.getstaticmanifest('normalize', Yak.istrunk)
    combine([cssnorm], Yak.build_root + "/there.is.only.jsboot.css", replace=sed)

    # ================================
    # Build-up the gate framy
    # ================================
    # XXX this must die and be replaced by a proper postmessage shim
    postmessageshim = PH.getstaticmanifest('postmessage', Yak.istrunk)
    postmessageshim = 'src/mingus/postmessage.js';

    gateList = [
      spitman['loader-lab'],
      spitman['spitfire'],
      postmessageshim,
      'src/onegateisopening/gate.js'
    ]

    combine(gateList, Yak.build_root + '/toobsj.ylno.si.ereht.js', replace=sed)
    # FileSystem.copyfile(Yak.build_root + '/gates/gate-frame.js', Yak.build_root + '/gates/gate-frame-min.js')

    shortversion = Yak.package['version'].split('-').pop(0).split('.')
    shortversion = shortversion[0] + "." + shortversion[1]

    # Build-up the frame to deploy connect to
    # XXX whether this works is undefined... because of shortversion and selectable versioned deploy
    sed.add('{PUKE-GATE-OPENER}', Yak.links['self']['url'] + "/"+ Yak.package['name'] + "/" + shortversion + "/toobsj.ylno.si.ereht.js")
    combine('src/onegateisopening/gate.html', Yak.build_root + '/gate.html', replace=sed)



    # ================================
    # Standalone mingus
    # ================================

    mingusList = [
      "src/strict.js",
      # Have postmessage shit
      postmessageshim,
    # Better safe than sorry - always include that
      # "src/lib/com/wiu/mingus/shim-plus/console.js",
      # "src/lib/com/wiu/mingus/shim-plus/cookies.js",
      # "src/lib/com/wiu/mingus/shim-plus/string.js",
      # "src/lib/com/wiu/mingus/shim-plus/iegetset.js",
#      "src/lib/com/wiu/mingus/shim/postmessage.js",
    # Mingus NS
      "src/mingus/namespace.js",
    # Base dep
      "src/mingus/grammar/ABNF.js",
      # "src/lib/com/wiu/mingus/converters/entity.js",
      # "src/lib/com/wiu/mingus/converters/bencoder.js",
      # "src/lib/com/wiu/mingus/converters/wikimedia.js",
    # And parsers / grammars
      "src/mingus/grammar/IMF.js",
      "src/mingus/grammar/IRI.js",
      "src/mingus/grammar/HTTP.js",

    # Then md5 dep
      "src/mingus/crypto/md5.js",


    # Not necessary per-se, but darn useful
      "src/mingus/converters/entity.js",

    # Then bases
      "src/mingus/xhr/ungate.js",
      "src/mingus/xhr/appkey.js",
      "src/mingus/xhr/digest.js",
    # Then the final XHR
      "src/mingus/xhr/appkeydigestxhr.js"
    ]

    # Shimmy yeah
    combine(mingusList, Yak.build_root + "/mingus.js", replace=sed)


    # ================================
    # jsBoot modules
    # ================================

    list = FileList('src/jsboot/debug', filter = '*.js', exclude = '*xxx*');
    combine(list, Yak.build_root + "/debug.js", replace=sed)

    # list = FileList('src/jsboot/gister', filter = '*.js', exclude = '*xxx*')
    list = FileList('src/jsboot/core', filter = '*.js', exclude = '*xxx*');
    # list.merge(FileList('src/jsboot/gister', filter = '*.js', exclude = '*xxx*'));
    list.merge(['src/jsboot/types/eventdispatcher.js'])

    # Not exactly "core" per-se
    list.merge(['src/jsboot/types/mutable.js'])
    list.merge(['src/jsboot/controllers/idle.js'])
    list.merge(['src/jsboot/controllers/singleapp.js'])
    list.merge(['src/jsboot/utils/storage.js'])
    list.merge(['src/jsboot/utils/tweener.js'])


    combine(list, Yak.build_root + "/core.js", replace=sed)

    list = [
      'src/jsboot/service/errors.js',
      'src/jsboot/service/client.js',
      'src/jsboot/service/core.js',
      'src/jsboot/service/flaves/account.js',
      'src/jsboot/controllers/application.js'
    ]

    combine(list, Yak.build_root + "/service.js", replace=sed)

    list = FileList('src/jsboot/ui', filter = '*.js', exclude = '*xxx*');
    combine(list, Yak.build_root + "/ui.js", replace=sed)




    spitroot = Yak.package['name'] + "/" + shortversion

    description = {}
    description["mingus"] = "%s/mingus.js" % spitroot
    description["jsbootstrap"] = "%s/there.is.only.jsboot.js" % spitroot
    description["gate"] = "%s/gate.html" % spitroot
    description["cssbootstrap"] = "%s/there.is.only.jsboot.css" % spitroot

    # Link the yaml stuff

    # yamu = FileSystem.join(Yak.deploy_root, "jsboot.yaml")
    # description = yaml.load('\n'.join(description))
    # if FileSystem.exists(yamu):
    #   mama = yaml.load(FileSystem.readfile(yamu))
    #   mama[Yak.package['version']] = description
    # else:
    #   mama = {Yak.package['version']: description}

    # # Straight to service root instead - kind of hackish...
    # FileSystem.writefile(yamu, yaml.dump(mama))



    PH.describe(shortversion, "jsboot", description)