github.com/lmorg/murex@v0.0.0-20240217211045-e081c89cd4ef/builtins/core/processes/jobs.go (about) 1 package processes 2 3 import ( 4 "github.com/lmorg/murex/lang" 5 "github.com/lmorg/murex/lang/state" 6 "github.com/lmorg/murex/lang/types" 7 ) 8 9 func cmdJobs(p *lang.Process) error { 10 var dt, dtLine string 11 if p.Stdout.IsTTY() { 12 dt = types.Generic 13 dtLine = types.Columns 14 } else { 15 dt = types.JsonLines 16 dtLine = types.Json 17 } 18 p.Stdout.SetDataType(dt) 19 20 aw, err := p.Stdout.WriteArray(dt) 21 if err != nil { 22 return err 23 } 24 25 b, err := lang.MarshalData(p, dtLine, []interface{}{ 26 "PID", 27 "State", 28 "Background", 29 "Process", 30 "Parameters", 31 }) 32 if err != nil { 33 return err 34 } 35 err = aw.Write(b) 36 if err != nil { 37 return err 38 } 39 40 procs := lang.GlobalFIDs.ListAll() 41 for _, process := range procs { 42 if process.Background.Get() || process.State.Get() == state.Stopped { 43 b, err := lang.MarshalData(p, dtLine, []interface{}{ 44 process.Id, 45 process.State.String(), 46 process.Background.Get(), 47 process.Name.String(), 48 getParams(process), 49 }) 50 if err != nil { 51 return err 52 } 53 err = aw.Write(b) 54 if err != nil { 55 return err 56 } 57 } 58 } 59 60 return aw.Close() 61 }