    log = require './log'
    utils = require './utils'

Create a directory based on the configured or default skeelton, then replace all instanaces of `APPNAME` in the skeleton app with our new application name.      

    app = (opts, cb) ->

      if opts.template
      
        baseApp = "#{process.env.HOME}/.pages/skeleton"

        log.info generator: "Using configured Pages skeleton at #{baseApp} to generate Pages Application."

      else 

        baseApp = "#{(path.join path.dirname fs.realpathSync(__filename))}/generate/skeleton"

      to = "#{process.cwd()}/#{opts.APPNAME}"

      utils.copyDir 
        from: baseApp
        to: to
      , () -> utils.replaceStringInFiles to, 'APPNAME', opts.APPNAME, cb

    ###

    angular_module = (opts, cb) ->

      if opts.template

        baseFile = "#{process.env.HOME}/.pages/angular_module.litcoffee"

        log.info generator: "Using configured Pages angular_module.litcoffee at #{baseFile} to generate AngularJS Module."

      else 

        baseFile = "#{(path.join path.dirname fs.realpathSync(__filename))}/generate/angular_module.litcoffee"

      utils.copyFile
        from: XXXXXX
        to: "#{process.cwd()}/angular_modules/#{opts.NAME}.litcoffee"
      , () -> utils.replaceStringInFile "#{process.cwd()}/angular_modules/#{opts.NAME}.litcoffee", 'NAME', opts.NAME, cb

    page = (opts, cb) ->

      if opts.template

        baseFile = "#{process.env.HOME}/.pages/page.litcoffee"

        log.info generator: "Using configured Pages page.litcoffee at #{baseFile} to generate Page."
      
      else 

        baseFile = "#{(path.join path.dirname fs.realpathSync(__filename))}/generate/page.litcoffee"

      utils.copyFile
        from: XXXXX
        to: "#{process.cwd()}/pages/{opts.NAME}"
      , () -> utils.replaceStringInFile "#{process.cwd()}/pages/#{opts.NAME}.litcoffee", 'NAME', opts.NAME, cb

    ###

    server_module = (opts, cb) ->

      if opts.template

        baseFile = "#{process.env.HOME}/.pages/server_module.litcoffee"

        log.info generator: "Using configured Pages server_module.litcoffee at #{baseFile} to generate Node.js Server Module."
      
      else 

        baseFile = "#{(path.join path.dirname fs.realpathSync(__filename))}/generate/server_module.litcoffee"
  
      to = "#{process.cwd()}/server_modules/#{opts.NAME}.litcoffee"

In case we don't have `server_modules/` yet.

      utils.runWithCb "mkdir #{process.cwd()}/server_modules", () -> 

        utils.copyFile
          from: baseFile
          to: to
        , () -> cb()

## Public API ##

    publicFns = 

      app: app 
      'server_module': server_module

    ###

    'angular_module': angular_module 
    page: page 
    'server_module': server_module

    ###

    module.exports = publicFns