package main

import (
	
	
	
	

	
	amhelp 
	am 
	
	
)

var ss = states.ReplStates
var randomId = false

func init() {
	// amhelp.EnableDebugging(false)
	// amhelp.EnableDebugging(true)
}

type S = am.S
type T = am.Time

func main() {
	 := context.Background()

	var  []string
	var  []string

	 := os.Args[1:]
	for ,  := range  {
		if  == "--" && len(os.Args) > +1 {
			 = os.Args[+2:]
			 = os.Args[1 : +1]
			break
		}
	}

	// repl
	 := "repl"
	if randomId {
		 = "repl-" + utils.RandId(4)
	}
	,  := repl.New(, )
	if  != nil {
		panic()
	}
	 := repl.NewRootCommand(, , )
	if len() > 0 {
		.SetArgs()
	}
	.Cmd = 

	// cobra
	 = .Execute()
	if  != nil {
		if amhelp.IsTelemetry() {
			time.Sleep(time.Second)
			os.Exit(1)
		}
	}

	 := make(chan os.Signal, 1)
	signal.Notify(, os.Interrupt)

	// waits
	select {

	// signal
	case <-:
		.Mach.Add1(ss.Disposing, nil)
	// CLI
	case <-.Mach.WhenNot1(ss.ReplMode, nil):
	// exit
	case <-.Mach.When1(ss.Disposed, nil):
	}

	// fmt.Println("bye")
	.Mach.Dispose()

	if amhelp.IsTelemetry() {
		time.Sleep(time.Second)
	}

	os.Exit(0)
}