Files
herolib/manual/core/session.md
2024-12-25 08:40:56 +01:00

82 lines
2.1 KiB
Markdown

## play.session
```js
name string // unique id for session (session id), can be more than one per context
plbook playbook.PlayBook //is how heroscripts are being executed
interactive bool = true
params paramsparser.Params
start ourtime.OurTime
end ourtime.OurTime
context Context //link back to the context
```
### **The PlayArgs:**
- context ?&Context
- session ?&Session
- context_name string = 'default'
- session_name string //default will be based on a date when run
- interactive bool = true //can ask questions, default on true
- coderoot string //this will define where all code is checked out
- playbook_url string //url of heroscript to get and execute in current context
- playbook_path string //path of heroscript to get and execute
- playbook_text string //heroscript to execute
```golang
import freeflowuniverse.herolib.core.base
import freeflowuniverse.herolib.develop.gittools
mut session:=play.session_new(
coderoot:'/tmp/code'
interactive:true
)!
//THE next could be in a module which we call
pub fn play_git(mut session Session) ! {
for mut action in session.plbook.find(filter:'gittools.*')! {
mut p := action.params
mut repo := p.get_default('repo', '')!
... do whatever is required to
}
}
```
### use playbook
```golang
// add playbook heroscript (starting from path, text or git url)
//```
// path string
// text string
// prio int = 99
// url string
//```
fn (mut session Session) playbook_add(args_ PLayBookAddArgs) !
//show the sesstion playbook as heroscript
fn (mut session Session) heroscript()
// add priorities for the playbook, normally more internal per module
fn (mut self Session) playbook_priorities_add(prios map[int]string)
```
### use the kvs database
is stored on filesystem
```golang
// get db of the session, is unique per session
fn (mut self Session) db_get() !dbfs.DB {
// get the db of the config, is unique per context
fn (mut self Session) db_config_get() !dbfs.DB {
```