|
From: Zoltán K. <zo...@pr...> - 2025-07-06 15:26:42
|
On second thought, I think I misunderstood your intentions. Disregard my previous messages.
On Sunday, July 6th, 2025 at 5:13 PM, Zoltán Kéri via Factor-talk <fac...@li...> wrote:
> I made a mistake in the previous code, it does not print the unknown command. Both
>
> > [ swap drop "Unknown command: " swap append print nl flush help flush 1 exit ]
>
>
> and
>
> > [ "Unknown command: " prepend print nl flush help flush 1 exit ]
>
>
> prints it[1], although I am pretty sure there is a better way to achieve this. In fact, you could use "unclip" in other parts of the code, but this was just supposed to be a simple demonstration.
>
> Additionally, you could create a helper word for "unknown command" if it looks not-so-desirable.
>
> [1] Example output:
>
> zolk3ri@void foo $ ./foo.out
> Usage: foo [command]
> Available commands:
> greet - Print a greeting
> help - Show this message
> zolk3ri@void foo $ ./foo.out greet
> Hello from Factor!
> zolk3ri@void foo $ ./foo.out foo
> Unknown command: foo
>
> Usage: foo [command]
> Available commands:
> greet - Print a greeting
> help - Show this message
>
> Is this close to what you are trying to achieve?
>
> On Sunday, July 6th, 2025 at 4:08 PM, Zoltán Kéri zo...@pr... wrote:
>
> > I believe you are looking for something like this unless I am mistaken:
> >
> > USING: combinators command-line io kernel namespaces sequences ;
> > IN: foo
> >
> > ! Help text
> > : help ( -- )
> > "Usage: foo [command]" print
> > "Available commands:" print
> > " greet - Print a greeting" print
> > " help - Show this message" print ;
> >
> > ! Command: greet
> > : greet ( -- )
> > "Hello from Factor!" print ;
> >
> > ! Dispatch function: handles command and its arguments
> > : dispatch ( cmd rest -- )
> > {
> > { "greet" [ drop greet ] }
> > { "help" [ drop help ] }
> > [ drop "Unknown command: " swap append print help ]
> > } case ;
> >
> > ! Entry point
> > : run ( -- )
> > command-line get dup empty? [
> > drop help
> > ] [
> > dup rest swap first dispatch
> > ] if ;
> >
> > MAIN: run
> >
> > You can extend it to your liking.
> >
> > On Saturday, July 5th, 2025 at 9:34 PM, toastal to...@po... wrote:
> >
> > > > Are you trying to use something like a “sub command” feature?
> > >
> > > Yep. Like Cmdliner.
> > >
> > > https://ocaml.github.io/odoc/cmdliner/cmdliner/Cmdliner/Cmd/index.html
> > >
> > > The ability to call ./my-factor-script cmd sub-cmd --help.
> > >
> > > _______________________________________________
> > > Factor-talk mailing list
> > > Fac...@li...
> > > https://lists.sourceforge.net/lists/listinfo/factor-talk
>
>
>
> _______________________________________________
> Factor-talk mailing list
> Fac...@li...
> https://lists.sourceforge.net/lists/listinfo/factor-talk
|