88 "os"
99 "strconv"
1010
11- "github.com/c-bata/go-prompt"
1211 "github.com/mgnsk/balafon/interpreter"
1312 "github.com/mgnsk/balafon/lint"
1413 "github.com/mgnsk/balafon/player"
@@ -50,8 +49,6 @@ func main() {
5049 },
5150 }
5251
53- root .AddCommand (createCmdShell ())
54- root .AddCommand (createCmdLoad ())
5552 root .AddCommand (createCmdLive ())
5653 root .AddCommand (createCmdPlay ())
5754 root .AddCommand (createCmdLint ())
@@ -61,66 +58,6 @@ func main() {
6158 }
6259}
6360
64- func createCmdShell () * cobra.Command {
65- cmd := & cobra.Command {
66- Use : "shell" ,
67- Short : "Run a balafon shell" ,
68- SilenceErrors : true ,
69- SilenceUsage : true ,
70- RunE : func (c * cobra.Command , _ []string ) error {
71- out , err := openOut (c .Flag ("port" ).Value .String ())
72- if err != nil {
73- return err
74- }
75-
76- it := interpreter .New ()
77- seq := sequencer .New ()
78- runPrompt (out , it , seq )
79-
80- return nil
81- },
82- }
83- addPortFlag (cmd )
84- return cmd
85- }
86-
87- func createCmdLoad () * cobra.Command {
88- cmd := & cobra.Command {
89- Use : "load [file]" ,
90- Short : "Load a file and continue in a balafon shell" ,
91- Args : cobra .ExactArgs (1 ),
92- RunE : func (c * cobra.Command , args []string ) error {
93- file , err := ioutil .ReadFile (args [0 ])
94- if err != nil {
95- return err
96- }
97-
98- out , err := openOut (c .Flag ("port" ).Value .String ())
99- if err != nil {
100- return err
101- }
102-
103- it := interpreter .New ()
104- seq := sequencer .New ()
105-
106- if err := it .Eval (file ); err != nil {
107- return err
108- }
109-
110- fmt .Println (string (file ))
111-
112- seq .AddBars (it .Flush ()... )
113- seq .Flush ()
114-
115- runPrompt (out , it , seq )
116-
117- return nil
118- },
119- }
120- addPortFlag (cmd )
121- return cmd
122- }
123-
12461func createCmdLive () * cobra.Command {
12562 cmd := & cobra.Command {
12663 Use : "live [file]" ,
@@ -226,40 +163,6 @@ func createCmdLint() *cobra.Command {
226163 return cmd
227164}
228165
229- func runPrompt (out drivers.Out , it * interpreter.Interpreter , seq * sequencer.Sequencer ) {
230- p := player .New (out )
231-
232- pt := shell .NewBufferedPrompt (
233- prompt .NewStandardInputParser (),
234- prompt .NewStdoutWriter (),
235- func (in string ) {
236- if err := it .EvalString (in ); err != nil {
237- // Keep old input
238- fmt .Println (err )
239- return
240- }
241-
242- seq .AddBars (it .Flush ()... )
243-
244- events := seq .Flush ()
245-
246- if err := p .Play (events ... ); err != nil {
247- fmt .Println (err )
248- }
249-
250- return
251- },
252- func (in prompt.Document ) []prompt.Suggest {
253- // TODO: fix tab key overwrites existing text
254- return it .Suggest (in )
255- },
256- nil ,
257- )
258-
259- defer shell .RestoreTerminal ()
260- pt .Run ()
261- }
262-
263166func openInputFile (name string ) (io.ReadCloser , error ) {
264167 if name == "-" {
265168 return os .Stdin , nil
0 commit comments