Skip to content

Commit

Permalink
Comment Service
Browse files Browse the repository at this point in the history
  • Loading branch information
peachpit-site committed Dec 15, 2024
1 parent c8f75df commit e1a9dca
Show file tree
Hide file tree
Showing 3 changed files with 154 additions and 76 deletions.
59 changes: 29 additions & 30 deletions source/hub/hub.go
Original file line number Diff line number Diff line change
Expand Up @@ -51,7 +51,7 @@ func New(in io.Reader, out io.Writer) *Hub {
lastRun: []string{},
}
appDir, _ := filepath.Abs(filepath.Dir(os.Args[0]))
hub.pipefishHomeDirectory = appDir + "/"
hub.pipefishHomeDirectory = appDir + "/"
return &hub
}

Expand All @@ -70,7 +70,7 @@ func (hub *Hub) hasDatabase() bool {

func (hub *Hub) getDB() (string, string, string, int, string, string) {
dbStruct := hub.getSV("database").V.([]pf.Value)
driver := hub.services["hub"].Literal(dbStruct[0])
driver := hub.services["hub"].ToLiteral(dbStruct[0])
return driver, dbStruct[1].V.(string), dbStruct[2].V.(string), dbStruct[3].V.(int), dbStruct[4].V.(string), dbStruct[5].V.(string)
}

Expand Down Expand Up @@ -151,7 +151,7 @@ func (hub *Hub) Do(line, username, password, passedServiceName string) (string,
return passedServiceName, false
}
if len(hubWords) == 3 && hubWords[1] == "cd" { // Because cd changes the directory for the current
os.Chdir(hubWords[2]) // process, if we did it with exec it would do it for
os.Chdir(hubWords[2]) // process, if we did it with exec it would do it for
hub.WriteString(GREEN_OK) // that process and not for Pipefish.
return passedServiceName, false
}
Expand Down Expand Up @@ -222,9 +222,9 @@ func (hub *Hub) Do(line, username, password, passedServiceName string) (string,
var out string
v, _ := hub.services["hub"].GetVariable("display")
if v.V.(int) == 0 || hub.currentServiceName() == "#snap" {
out = serviceToUse.Literal(val)
out = serviceToUse.ToLiteral(val)
} else {
out = serviceToUse.String(val)
out = serviceToUse.ToString(val)
}
hub.WriteString(out)
if hub.currentServiceName() == "#snap" {
Expand Down Expand Up @@ -427,7 +427,7 @@ func (hub *Hub) DoHubCommand(username, password, verb string, args []string) boo
hub.setLive(false)
return false
case "log":
tracking, _ := hub.services[hub.currentServiceName()].GetTracking()
tracking, _ := hub.services[hub.currentServiceName()].GetTrackingReport()
hub.WritePretty(tracking)
hub.WriteString("\n")
return false
Expand Down Expand Up @@ -705,9 +705,9 @@ func (hub *Hub) DoHubCommand(username, password, verb string, args []string) boo
}
for _, v := range hub.ers[0].Values {
if v.T == pf.BLING {
hub.WritePretty(BULLET_SPACING + hub.services[hub.currentServiceName()].Literal(v))
hub.WritePretty(BULLET_SPACING + hub.services[hub.currentServiceName()].ToLiteral(v))
} else {
hub.WritePretty(BULLET + hub.services[hub.currentServiceName()].Literal(v))
hub.WritePretty(BULLET + hub.services[hub.currentServiceName()].ToLiteral(v))
}
}
hub.WriteString("\n")
Expand Down Expand Up @@ -826,7 +826,6 @@ var helpStrings = map[string]string{}

var helpTopics = []string{}


// This is replicated in the settings file and any changes made here must be reflected there.
var StandardLibraries = map[string]struct{}{} // TODO, start using the official Go sets.

Expand Down Expand Up @@ -958,12 +957,12 @@ func StartServiceFromCli() {
}
val, _ := newService.CallMain()
if val.T == pf.UNDEFINED_TYPE {
s := "\nScript " + Cyan("'" + filename) + " has no " + Cyan("'main'") + " command.\n\n"
s := "\nScript " + Cyan("'"+filename) + " has no " + Cyan("'main'") + " command.\n\n"
fmt.Println(pf.PrettyString(s, 0, 92))
fmt.Print("\n\nClosing Pipefish.\n\n")
os.Exit(4)
}
fmt.Println(newService.Literal(val) + "\n")
fmt.Println(newService.ToLiteral(val) + "\n")
os.Exit(0)
}

Expand Down Expand Up @@ -1013,21 +1012,21 @@ func (hub *Hub) saveHubFile() string {
}
buf.WriteString(")\n\n")
buf.WriteString("currentService string? = ")
cs := hubService.Literal(hub.getSV("currentService"))
cs := hubService.ToLiteral(hub.getSV("currentService"))
if len(cs) > 0 && cs[1] == '#' {
buf.WriteString("NULL")
} else {
buf.WriteString(cs)
}
buf.WriteString("\n\n")
buf.WriteString("isLive = ")
buf.WriteString(hubService.Literal(hub.getSV("isLive")))
buf.WriteString(hubService.ToLiteral(hub.getSV("isLive")))
buf.WriteString("\n")
buf.WriteString("display = ")
buf.WriteString(hubService.Literal(hub.getSV("display")))
buf.WriteString(hubService.ToLiteral(hub.getSV("display")))
buf.WriteString("\n")
buf.WriteString("width = ")
buf.WriteString(hubService.Literal(hub.getSV("width")))
buf.WriteString(hubService.ToLiteral(hub.getSV("width")))
buf.WriteString("\n\n")
buf.WriteString("database Database? = ")
dbVal := hub.getSV("database")
Expand All @@ -1036,22 +1035,22 @@ func (hub *Hub) saveHubFile() string {
} else {
args := dbVal.V.([]pf.Value)
buf.WriteString("Database with (driver::")
buf.WriteString(hubService.Literal(args[0]))
buf.WriteString(hubService.ToLiteral(args[0]))
buf.WriteString(",\n")
buf.WriteString(" .. name::")
buf.WriteString(hubService.Literal(args[1]))
buf.WriteString(hubService.ToLiteral(args[1]))
buf.WriteString(",\n")
buf.WriteString(" .. host::")
buf.WriteString(hubService.Literal(args[2]))
buf.WriteString(hubService.ToLiteral(args[2]))
buf.WriteString(",\n")
buf.WriteString(" .. port::")
buf.WriteString(hubService.Literal(args[3]))
buf.WriteString(hubService.ToLiteral(args[3]))
buf.WriteString(",\n")
buf.WriteString(" .. username::")
buf.WriteString(hubService.Literal(args[4]))
buf.WriteString(hubService.ToLiteral(args[4]))
buf.WriteString(",\n")
buf.WriteString(" .. password::")
buf.WriteString(hubService.Literal(args[5]))
buf.WriteString(hubService.ToLiteral(args[5]))
buf.WriteString(")\n")
}

Expand Down Expand Up @@ -1253,7 +1252,7 @@ func (hub *Hub) playTest(testFilepath string, diffOn bool) {
func valToString(srv *pf.Service, val pf.Value) string {
// TODO --- the exact behavior of this function should depend on service variables but I haven't put them in the VM yet.
// Alternately we can leave it as it is and have the vm's Describe method take care of it.
return srv.Literal(val)
return srv.ToLiteral(val)
}

func (h *Hub) StartHttp(path, port string) {
Expand Down Expand Up @@ -1469,20 +1468,20 @@ func ServiceDo(serviceToUse *pf.Service, line string) pf.Value {
}

var (
MARGIN = 92
GREEN_OK = ("\033[32mOK\033[0m")
WAS = Green("was") + ": "
GOT = Red("got") + ": "
TEST_PASSED = Green("Test passed!") + "\n"
MARGIN = 92
GREEN_OK = ("\033[32mOK\033[0m")
WAS = Green("was") + ": "
GOT = Red("got") + ": "
TEST_PASSED = Green("Test passed!") + "\n"
VERSION = "0.5.9"
BULLET = " ▪ "
BULLET_SPACING = " " // I.e. whitespace the same width as BULLET.
GOOD_BULLET = Green(" ▪ ")
BROKEN = Red(" ✖ ")
PROMPT = "→ "
ERROR = "$Error$"
RT_ERROR = "$Error$"
HUB_ERROR = "$Hub error$"
ERROR = "$Error$"
RT_ERROR = "$Error$"
HUB_ERROR = "$Hub error$"
)

const HELP = "\nUsage: pipefish [-v | --version] [-h | --help]\n" +
Expand Down
19 changes: 9 additions & 10 deletions source/hub/snap.go
Original file line number Diff line number Diff line change
Expand Up @@ -72,16 +72,15 @@ func (sn *Snap) Save(st string) string {
return "Created test as file " + Cyan("'"+testFilepath+"'") + "."
}


func MakeSnapIo(sv *pf.Service, out io.Writer, sn *Snap) (*snapInHandler, *snapOutHandler) {
iH := snapInHandler{stdIn: pf.MakeStandardInHandler(""), snap: sn}
oH := snapOutHandler{stdOut: sv.MakeLiteralWritingOutHandler(out), snap: sn}
return &iH, &oH
}

type snapInHandler struct {
stdIn *pf.StandardInHandler
snap *Snap
stdIn *pf.StandardInHandler
snap *Snap
prompt string
}

Expand All @@ -99,21 +98,21 @@ func (iH *snapInHandler) Get() string {
}

func (oH *snapOutHandler) Out(v pf.Value) {
oH.snap.AppendOutput(oH.sv.Literal(v))
oH.snap.AppendOutput(oH.sv.ToLiteral(v))
oH.stdOut.Out(v)
}

func (oH *snapOutHandler) Write(s string) {
oH.stdOut.Write(s)
}

func snapFunctionMaker(sv *pf.Service) func(pf.Value)[]byte {
return func (v pf.Value) []byte {
func snapFunctionMaker(sv *pf.Service) func(pf.Value) []byte {
return func(v pf.Value) []byte {
var out bytes.Buffer
vals := v.V.([]pf.Value) // A snap always returns a tuple.
elements := []string{}
for _, e := range vals {
elements = append(elements, sv.Literal(e))
elements = append(elements, sv.ToLiteral(e))
}
out.WriteString(strings.Join(elements, ", "))
out.WriteRune('\n')
Expand Down Expand Up @@ -146,8 +145,8 @@ type TestOutHandler struct {
func (iH *TestInHandler) Get() string {
iH.scanner.Scan()
prompt := iH.scanner.Text()
if iH.testOutputType == SHOW_ALL{
iH.out.Write([]byte(prompt + "\n"))
if iH.testOutputType == SHOW_ALL {
iH.out.Write([]byte(prompt + "\n"))
}
iH.scanner.Scan()
input := iH.scanner.Text()
Expand All @@ -162,7 +161,7 @@ func (oH *TestOutHandler) Out(v pf.Value) {
vals := v.V.([]pf.Value) // We make sure it is always passed a tuple.
elements := []string{}
for _, e := range vals {
elements = append(elements, string(oH.sv.Literal(e)))
elements = append(elements, string(oH.sv.ToLiteral(e)))
}
out.WriteString(strings.Join(elements, ", "))
oH.scanner.Scan()
Expand Down
Loading

0 comments on commit e1a9dca

Please sign in to comment.