MCPcopy Create free account
hub / github.com/diillson/chatcli / parseWaitArgs

Function parseWaitArgs

cli/scheduler_command.go:755–800  ·  view source on GitHub ↗
(args []string)

Source from the content-addressed store, hash-verified

753}
754
755func parseWaitArgs(args []string) (scheduler.ToolInput, error) {
756 in := scheduler.ToolInput{Tags: map[string]string{}}
757 for i := 0; i < len(args); i++ {
758 switch args[i] {
759 case "--until":
760 in.Until, i = takeString(args, i)
761 case "--then":
762 in.Do, i = takeString(args, i)
763 case "--every":
764 in.PollInterval, i = takeString(args, i)
765 case "--timeout":
766 in.WaitTimeout, i = takeString(args, i)
767 case "--max-polls":
768 val, ni := takeString(args, i)
769 if n, err := strconv.Atoi(val); err == nil {
770 in.MaxPolls = n
771 }
772 i = ni
773 case "--async":
774 in.Async = true
775 case "--on-timeout":
776 in.OnTimeout, i = takeString(args, i)
777 case "--name":
778 in.Name, i = takeString(args, i)
779 default:
780 if strings.HasPrefix(args[i], "--") {
781 return in, fmt.Errorf("wait: unknown flag %s", args[i])
782 }
783 return in, fmt.Errorf("wait: unexpected positional %q (did you forget to quote a multi-word value?)", args[i])
784 }
785 }
786 if in.Until == "" {
787 return in, fmt.Errorf("wait: --until is required")
788 }
789 if in.When == "" {
790 in.When = "when-ready"
791 }
792 if in.Do == "" {
793 in.Do = "noop"
794 }
795 if in.Name == "" {
796 host, _ := os.Hostname()
797 in.Name = fmt.Sprintf("wait-%s-%d", host, time.Now().UnixNano()%100000)
798 }
799 return in, nil
800}
801
802func takeString(args []string, i int) (string, int) {
803 if i+1 >= len(args) {

Callers 1

handleWaitCommandMethod · 0.85

Calls 2

takeStringFunction · 0.85
ErrorfMethod · 0.80

Tested by

no test coverage detected