R/q.scheduler.R

Defines functions q.schedule

Documented in q.schedule

# powerful time base executor

q.schedule <- function(wday,
                       hour,
                       script=NULL,
                       name = NULL,
                       code=NULL,
                       wdir=NULL,
                       recurrent=TRUE,
                       params=NULL,
                       jparams=FALSE,
                       outputfile=NULL)
{

  jid    = UUIDgenerate()

  if(is.null(name))
    name = jid

  if (is.null(script) && is.null(code))
    stop('no job to do')

  # create temp rmarkdown, insert code
  if (!is.null(code)) {
    template <- q.template(type='simple')

    script <- sprintf('%s/%s.Rmd',.pkg.log$script.dir, jid)
    RMD <- sprintf(template, script, code)

    sink(file=script)
    cat(RMD)
    sink()
  }

  if(is.null(params))
    params <- list(jid = jid) else
      params$jid <- jid

    if (!is.null(script))
    {
      ticket <- list()
      ticket$jid    = jid
      ticket$script = script
      ticket$wdir   = wdir
      ticket$params = params
      ticket$jparams = jparams
      ticket$output.dir  = .pkg.log$output.dir
      ticket$output.file = outputfile
      ticket$status = q.status$waiting
      ticket$recurrent = recurrent
      ticket$log    = ""
      ticket$mtime  = Sys.time()
      ticket$ctime  = NA
      ticket$secs   = NA
      ticket$name   = name
      ticket$wday = wday
      ticket$hour = hour
    } else
      stop('no valid rmarkdown script file')

    fpath = sprintf('%s/schedule/%s',.pkg.log$log.dir, jid)
    save(ticket, file=fpath)
    return(fpath)
}
okux/qrmarkdown documentation built on Dec. 22, 2021, 4:17 a.m.