рдЧреНрд░реВрд╡реА рдПрдВрдб рдЧреНрд░рд┐рд▓реНрд╕ рдореЗрдВ рдЕрдкрдиреЗ рд▓рд┐рдП рдПрдХ рдЫреЛрдЯреА рд╕реА рдкрд░рд┐рдпреЛрдЬрдирд╛ рд▓рд┐рдЦрдиреЗ рдХреА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдореЗрдВ, рд╕рднреА рд╡рд┐рднрд┐рдиреНрди рд╢реЗрд▓ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рддрддреНрдХрд╛рд▓ рдЖрд╡рд╢реНрдпрдХрддрд╛ рдереАред рдпрд╛ рддреЛ рд╕рд░реНрд╡рд░ рдХреЛ рдкреБрдирд░рд╛рд░рдВрдн рдХрд░реЗрдВ, рдирдП рдмрдирд╛рдП рдЧрдП рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХреЛ рдлрд┐рд░ рд╕реЗ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, рдлрд┐рд░ рд╣рд░ рдЬрдЧрд╣ рд╕реЗ рд▓реЙрдЧ рдЗрдХрдЯреНрдард╛ рдХрд░реЗрдВ, рдлрд┐рд░ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдХреЗ рдирдП рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рдХреЛ рднрд░реЗрдВ рдФрд░ рдЗрд╕реА рддрд░рд╣ред рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ рдореИрдВрдиреЗ рдмреИрд╢ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдореЗрдВ рд╕рдм рдХреБрдЫ рд▓рд┐рдЦрд╛ рдерд╛, рд▓реЗрдХрд┐рди рдЗрд╕ рддрдереНрдп рдХреЗ рдХрд╛рд░рдг рдХрд┐ рдореИрдВ рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реВрдВ, рдЕрдкрдиреЗ рдкрд╛рд▓рддреВ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдпрд╣ рдмрд╣реБрдд рджреБрд░реНрд▓рдн рд╣реИ рд╣рд░ рдмрд╛рд░ рдЬрдм рдореИрдВ рдЖрд╡рд╢реНрдпрдХ рдХрд╛рд░реНрдпреЛрдВ, рд╡рд╛рдХреНрдпрд╡рд┐рдиреНрдпрд╛рд╕ рдирд┐рдпрдореЛрдВ рдЖрджрд┐ рдХреЗ рдЗрдВрдЯрд░рдиреЗрдЯ рдкрд░ рдПрдХ рд▓рдВрдмреА рдЦреЛрдЬ рдореЗрдВ рдЖрдпрд╛ рд╣реВрдВ, рдЬреЛ рдирд┐рд╕реНрд╕рдВрджреЗрд╣ рд╣реИред , рдмрд╣реБрдд рд╣реА рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЗ рд╡рд┐рдХрд╛рд╕ рдХреЛ рдзреАрдорд╛ рдХрд░ рджрд┐рдпрд╛ред
рдФрд░ рдЪреВрдВрдХрд┐ рдЧреНрд░реВрд╡реА рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рднрд╛рд╖рд╛ рд╕реЗ рдкрд╣рд▓реЗ рд╕реЗ рдкрд░рд┐рдЪрд┐рдд рдереЗ, рдЗрд╕рд▓рд┐рдП рдореИрдВрдиреЗ рдЗрд╕ рдкрд░ рд▓рд┐рдЦрдиреЗ рдХрд╛ рдлреИрд╕рд▓рд╛ рдХрд┐рдпрд╛ред рд▓реЗрдХрд┐рди рдореИрдВ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ * .groovy рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреА рдПрдХ рдмрдбрд╝реА рд╕рдВрдЦреНрдпрд╛ рдХреЛ рдЙрддреНрдкрдиреНрди рдирд╣реАрдВ рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рдерд╛, рд▓реЗрдХрд┐рди рдореИрдВ рдЗрд╕рдХреЗ рд╡рд┐рдкрд░реАрдд рдЪрд╛рд╣рддрд╛ рдерд╛ - рдПрдХ рдмреИрдХ-рдПрдВрдб рдирд┐рдпрдВрддреНрд░рдг рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдЬрд┐рд╕рдореЗрдВ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рд╕рднреА рдЖрд╡рд╢реНрдпрдХ рдХрдорд╛рдВрдб рд╢рд╛рдорд┐рд▓ рд╣реЛрдВрдЧреЗ рддрд╛рдХрд┐ рдЖрдкрдХреЗ рдкрд╛рд╕ "рд╡рдпрд╕реНрдХ" рдХрдВрд╕реЛрд▓ рдкреНрд░реЛрдЧреНрд░рд╛рдо рд╣реЛ рд╕рдХреЗ рдпрджрд┐ рдЖрд╡рд╢реНрдпрдХ рд╣реЛ, рддреЛ рдирдП рдХреЛ рд╕реЗрдЯ рдХрд░рдиреЗ рдФрд░ рдЬреЛрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП рдХреНрд░рдорд┐рдХ рд░реВрдк рд╕реЗ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдЖрджреЗрд╢реЛрдВ рдХреЛ рджреЗрдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдХрдорд╛рдВрдб рдХреА рдХреНрд╖рдорддрд╛ рдФрд░ рдЗрддрд┐рд╣рд╛рд╕ред рдпрд╣ рд╡рд┐рд╢рд▓рд┐рд╕реНрдЯ рдЕрднреА рднреА рджрд┐рдЦрд╛рдИ рджреА рдХреНрдпреЛрдВрдХрд┐ рдореБрдЭреЗ cmd рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдпрд╛рдж рдерд╛, рдЬрд┐рд╕реЗ рдореИрдВрдиреЗ рдПрдХ рдмрд╛рд░ рдкрд╛рдпрдерди рдореЗрдВ рдорд╣рд╛рд░рдд рд╣рд╛рд╕рд┐рд▓ рдХрд░рддреЗ рд╕рдордп рдЗрд╕реНрддреЗрдорд╛рд▓ рдХрд┐рдпрд╛ рдерд╛ред рд▓реЗрдХрд┐рди рдпрд╣ рдкрддрд╛ рдЪрд▓рд╛ рдХрд┐ рдХрд┐рд╕реА рдиреЗ рдЧреНрд░реВрд╡реА рдХреЗ рд▓рд┐рдП рдРрд╕рд╛ рдХреЛрдИ рд╕реАрдПрдордбреА рдирд╣реАрдВ рд▓рд┐рдЦрд╛ рдерд╛ (рдмрд╛рдж рдореЗрдВ рдореБрдЭреЗ рднреА рд╕рдордЭ рдореЗрдВ рдЖрдпрд╛ рдХрд┐ рдХреНрдпреЛрдВ), рдЬрд┐рд╕рдиреЗ рдореБрдЭреЗ рдЕрдЧрд▓реА рд╕рд╛рдЗрдХрд┐рд▓ рдирд┐рд░реНрдорд╛рдг
рдЙрджреНрдпреЛрдЧ рдХреЗ рд▓рд┐рдП рдкреНрд░реЗрд░рд┐рдд рдХрд┐рдпрд╛, рдЕрд░реНрдерд╛рддреН рдЧреНрд░реВрд╡реА рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рдПрдХ рдЫреЛрдЯрд╛ рдХреНрд▓реА рдлреНрд░реЗрдорд╡рд░реНрдХ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдПред
рдЗрд╕ рдкреЛрд╕реНрдЯ рдХрд╛ рдЙрджреНрджреЗрд╢реНрдп рдореЗрд░реЗ "рдлреНрд░реЗрдорд╡рд░реНрдХ" рдХреЗ рдкреВрд░рдХ рдХреЗ рд▓рд┐рдП рдЙрджреНрджреЗрд╢реНрдп рдЖрд▓реЛрдЪрдирд╛ рдФрд░ рд╕реБрдЭрд╛рд╡ рдкреНрд░рд╛рдкреНрдд рдХрд░рдирд╛ рд╣реИ, рд╢рд╛рдпрдж рдХреЛрдИ рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдореИрдВрдиреЗ рдЕрдкрдиреЗ
рдмрд┐рдЯрдХреЙрдЗрди рдЦрд╛рддреЗ рдкрд░ рд╕рднреА рдХреЛрдб рдФрд░ рд╕рднреА рджрд╕реНрддрд╛рд╡реЗрдЬ рдкреЛрд╕реНрдЯ рдХрд┐рдП
рд╣реИрдВ ред
рдореВрд▓ рдмрд╛рддреЗрдВ
рдпрд╣ рд╕рдм рдПрдХ
рд▓реЗрдЦ рдХреЗ рд╕рд╛рде рд╢реБрд░реВ рд╣реБрдЖ, рдЬрд╣рд╛рдВ рд▓реЗрдЦрдХ рдиреЗ рд╡рд░реНрдгрд┐рдд рдХрд┐рдпрд╛ рдХрд┐ рдкрд╛рдпрдерди рдХреЗ рд╕реАрдПрдордбреА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХреИрд╕реЗ рдХрд┐рдпрд╛ рдЬрд╛рдП, рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдореИрдВ рдЕрдкрдиреЗ рдкреНрд░рдпрд╛рд╕ рдореЗрдВ рдмрд╣реБрдд рджреВрд░ рдирд╣реАрдВ рдЧрдпрд╛ рдерд╛ рдФрд░ рдЙрд╕реА рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдерд╛ рдЬрд╣рд╛рдВ рдЕрдореВрд░реНрдд рд╡рд░реНрдЧ
Cmd.groovy рдореМрдЬреВрдж рд╣реИ , рдЬрд┐рд╕рд╕реЗ рд╡рд┐рд░рд╛рд╕рдд рдореЗрдВ рд╣рдорд╛рд░реЗ рдЖрд╡реЗрджрди рдХрд╛ рд░рдирдЯрд╛рдЗрдо рдорд┐рд▓рддрд╛ рд╣реИред рдПрдХ рд╕рд░рд▓ рдЙрджрд╛рд╣рд░рдг:
cli.groovy рдлрд╝рд╛рдЗрд▓:
class MyCli extends Cmd { boolean do_hello(String[] args) { if (args.length == 0) { println('Hello world!'); } else { args.each { println("Hello ${it}!"); } } return true; } } def cli = new MyCli(); if (this.args.length > 0) { cli.execute(this.args); } else { cli.start(); }
рдкреНрд░рддреНрдпреЗрдХ рд╡рд┐рдзрд┐ рдЬрд┐рд╕реЗ рд╣рдо рдХрдВрд╕реЛрд▓ рдХрдорд╛рдВрдб рдХреЗ рд░реВрдк рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рдЙрд╕рдХреЗ рдкрд╛рд╕ рдПрдХ рд╕рдЦреНрдд рд╣рд╕реНрддрд╛рдХреНрд╖рд░ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП:
- рд╡рд╛рдкрд╕реА рдкреНрд░рдХрд╛рд░ рдмреВрд▓рд┐рдпрди рд╣реИ ред рдпрд╣ рдЯреАрдореЛрдВ рдХреЛ рдЬрдВрдЬреАрд░реЛрдВ рдореЗрдВ рд╕рдВрдпреЛрдЬрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддрд╛рдХрд┐ рдпрджрд┐ рдХрдо рд╕реЗ рдХрдо рдПрдХ рдХрдорд╛рдВрдб рдЧрд▓рдд рддрд░реАрдХреЗ рд╕реЗ рдкреВрд░реА рд╣реЛ (рдЭреВрдареЗ рд░рд┐рдЯрд░реНрди), рддреЛ рд╢реНрд░реГрдВрдЦрд▓рд╛ рдмрд╛рдзрд┐рдд рд╣реЛрддреА рд╣реИ;
- рд╡рд┐рдзрд┐ рдХрд╛ рдирд╛рдо рдЙрдкрд╕рд░реНрдЧ " do_ " рд╕реЗ рд╢реБрд░реВ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП, рдЬреИрд╕рд╛ рдХрд┐ рдкрд╛рдпрдерди рдХреЗ рд▓рд┐рдП cmd рдореЗрдВ рд╣реИ;
- рд╡рд┐рдзрд┐ рддрд░реНрдХ рдХреЗрд╡рд▓ рдПрдХ рдФрд░ " рд╕реНрдЯреНрд░рд┐рдВрдЧ [] " рдкреНрд░рдХрд╛рд░ рдХрд╛ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред
рдпрджрд┐ рд╡рд┐рдзрд┐ рдЙрдкрд╕рд░реНрдЧ "
do_ " рд╕реЗ рд╢реБрд░реВ рд╣реЛрддреА рд╣реИ, рд▓реЗрдХрд┐рди рдЙрдкрд░реЛрдХреНрдд рд╢рд░реНрддреЛрдВ рдореЗрдВ рд╕реЗ рдПрдХ рдХреЛ рдкреВрд░рд╛ рдирд╣реАрдВ рдХрд░рддреА рд╣реИ, рддреЛ рдкреНрд░реЛрдЧреНрд░рд╛рдо рдПрдХ рдЪреЗрддрд╛рд╡рдиреА рдЬрд╛рд░реА рдХрд░реЗрдЧрд╛ рдЬреЛ
рдмрддрд╛рдПрдЧрд╛ рдХрд┐ рд╡рд┐рдзрд┐ рдХреЛ рдХрдорд╛рдВрдб рдХреА рд╕реВрдЪреА рдореЗрдВ рдХреНрдпреЛрдВ рд╢рд╛рдорд┐рд▓ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ рдФрд░ рдЗрд╕реЗ рдХреИрд╕реЗ рдареАрдХ рдХрд┐рдпрд╛ рдЬрд╛рдПред
рд╣рдорд╛рд░реА рдХрдХреНрд╖рд╛ рдХрд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдг рдмрдирд╛рдиреЗ рдХреЗ рдмрд╛рдж, рдЖрдк рдЗрд╕реЗ рджреЛ рддрд░реАрдХреЛрдВ рд╕реЗ рд╢реБрд░реВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:
1) "
рдирд┐рд╖реНрдкрд╛рджрд┐рдд (рд╕реНрдЯреНрд░рд┐рдВрдЧ []) " рд╡рд┐рдзрд┐ рдХреЛ рдХреЙрд▓ рдХрд░рдХреЗ, рд╡рд╣рд╛рдВ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЗ рддрд░реНрдХреЛрдВ рдХреЛ рдкрд╛рд░рд┐рдд рдХрд░рдирд╛ред рдЗрд╕ рд╕реНрдерд┐рддрд┐ рдореЗрдВ, рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЙрд▓ рдХреЗ рджреМрд░рд╛рди рдкреНрд░рд╛рдкреНрдд рд╕рднреА рдХрдорд╛рдВрдб рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░реЗрдЧрд╛ рдФрд░ рдирд┐рд╖реНрдкрд╛рджрди рдХреЛ рдкреВрд░рд╛ рдХрд░реЗрдЧрд╛;
$ groovy -cp . cli.groovy help List of all available commands: (for reference on command print "help <command_name>") history - prints history of commands hello - No description help - prints commands info exit - for exit from CMD
2) "
рдкреНрд░рд╛рд░рдВрдн () " рд╡рд┐рдзрд┐ рдХреЛ рдХреЙрд▓ рдХрд░рдХреЗ рдЗрдВрдЯрд░реЗрдХреНрдЯрд┐рд╡ рдЗрдирдкреБрдЯ рд▓реВрдк рд▓реЙрдиреНрдЪ рдХрд░рдХреЗред рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ, рдПрдХ рдХрдорд╛рдВрдб рдореЗрдВ рдкреНрд░рд╡реЗрд╢ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдЧреНрд░реАрдЯрд┐рдВрдЧ рдФрд░ рдПрдХ "рдирд┐рдордВрддреНрд░рдг" рдЯрд░реНрдорд┐рдирд▓ рдореЗрдВ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рджреНрд╡рд╛рд░рд╛ "
рдирд┐рдХрд╛рд╕ " рдореЗрдВ рдкреНрд░рд╡реЗрд╢ рдХрд░рдиреЗ рддрдХ рдЗрдирдкреБрдЯ рдЪрдХреНрд░ рдХрд╛ рдирд┐рд╖реНрдкрд╛рджрди рдЬрд╛рд░реА рд░рд╣реЗрдЧрд╛ред
$ groovy -cp . cli.groovy Welcome Print "help" for reference cmd:> help List of all available commands: (for reference on command print "help <command_name>") history - prints history of commands hello - No description help - prints commands info exit - for exit from CMD cmd:> exit Goodbye! $ _
рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдЖрдк рд╣рдорд╛рд░реА рд╡рд┐рдзрд┐ рдореЗрдВ
@ рдбрд┐рд╕реНрдХреНрд░рд┐рдкреНрд╢рди рдПрдиреЛрдЯреЗрд╢рди рдЬреЛрдбрд╝ рд╕рдХрддреЗ рд╣реИрдВ, рдЬрд┐рд╕рдореЗрдВ рд╡рд┐рдзрд┐ рдХрд╛ рд╕рдВрдХреНрд╖рд┐рдкреНрдд рдФрд░ рдкреВрд░реНрдг рд╡рд┐рд╡рд░рдг рд╣реЛрдЧрд╛:
class MyCli extends Cmd { @Description( brief='prints greetings', full='prints greetins for all setted arguments, if arguments list is empty prints default message "Hello world!"' ) boolean do_hello(String[] args) { if (args.length == 0) { println('Hello world!'); } else { args.each { println("Hello ${it}!"); } } return true; } }
рдЗрд╕ рддрд░рд╣ рдХреЗ рдХрд╛рд░реНрдпрдХреНрд░рдо рдХреЛ рдЪрд▓рд╛рдиреЗ рд╕реЗ, рдЖрдк рдХрдорд╛рдВрдб рдХреЗ рд▓рд┐рдП рд╕рдВрдХреЗрдд рджреЗрдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдВрдЧреЗ:
cmd:> help hello Command info ('hello'): prints greetins for all setted arguments, if arguments list is empty prints default message "Hello world!"
рд╢реНрд░реГрдВрдЦрд▓рд╛ рдЖрджреЗрд╢
рдпрджрд┐ рд╡рд╛рдВрдЫрд┐рдд рд╣реИ, рддреЛ рдЯреАрдореЛрдВ рдХреЛ рдХреЗрд╡рд▓ рдЙрдирдХреЗ рдмреАрдЪ "
+ " рдЪрд┐рд╣реНрди рдЬреЛрдбрд╝рдХрд░ рдПрдХ рд╢реНрд░реГрдВрдЦрд▓рд╛ рдореЗрдВ рдЬреЛрдбрд╝рд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ:
cmd:> hello Liza + hello Artem Hello Liza! Hello Artem! cmd:> _
"
+ " рд╕рдВрдХреЗрдд рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рдиреЗ рд▓рдЧрд╛, рд╡рд┐рд╣рд┐рдд рджреЛрд╣рд░реЗ рдПрдореНрдкрд░рд╕реЗрдВрдб рдХреЗ рдмрдЬрд╛рдп рдЗрд╕ рддрдереНрдп рдХреЗ рдХрд╛рд░рдг рдХрд┐ рдЬрдм рдореИрдВрдиреЗ рддреБрд░рдВрдд рдХрд╛рд░реНрдпрдХреНрд░рдо рд╢реБрд░реВ рдХрд┐рдпрд╛, рддреЛ
рд╢реЗрд▓ рдиреЗ рд╕реЛрдЪрд╛ рдХрд┐ рдореИрдВ рдПрдХ рдФрд░ рдЖрджреЗрд╢ рдХреЛ рдХреЙрд▓ рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ, рдФрд░ рди рдХреЗрд╡рд▓ рддрд░реНрдХ рд╕реЗрдЯ рдХрд░реЗрдВ:
// , shell hello $ groovy -cp . cli.groovy hello Liza && hello Artem // $ groovy -cp . cli.groovy hello Liza + hello Artem
рдпрд╣ рдЙрдореНрдореАрдж рдХреА рдЬрд╛рддреА рд╣реИ рдХрд┐ рдЬрдм рдЖрджреЗрд╢
рдЧрд▓рдд рд╡рд╛рдкрд╕ рдЖрдПрдЧрд╛, рддреЛ рд╢реНрд░реГрдВрдЦрд▓рд╛ рдЯреВрдЯ рдЬрд╛рдПрдЧреА
$ groovy -cp . cli.groovy hello Liza + popa + hello Artem Hello Liza! ERROR: No such command 'popa' List of all available commands: (for reference on command print "help <command_name>") history - prints history of commands hello - No description help - prints commands info exit - for exit from CMD
"рд╣реИрд▓реЛ рдЖрд░реНрдЯреЗрдо!" рдЗрд╕ рддрд░рд╣ рдХреЗ рдПрдХ рд▓реЙрдиреНрдЪ рдЖрдЙрдЯрдкреБрдЯ рдирд╣реАрдВ рд╣реЛрдЧрд╛ред
рд╕реНрдерд╛рдиреАрдпрдХрд░рдг
рдЖрдЙрдЯрдкреБрдЯ рдХреЗ рдкреВрд░реЗ рдкрд╛рда рдХреЛ рдЪрд░ рдореЗрдВ рд╕рдореЗрдЯрд╛ рдЧрдпрд╛ рд╣реИ рдФрд░, рдпрджрд┐ рд╡рд╛рдВрдЫрд┐рдд рд╣реИ, рддреЛ рдЙрдирдХреЗ рдореВрд▓реНрдпреЛрдВ рдХреЛ рдмрджрд▓рд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП рдпрд╣рд╛рдВ:
class MyCli extends Cmd { MyCli() { super(); PROMPT = '$> '; } boolean do_hello(String[] args) { if (args.length == 0) { println('Hello world!'); } else { args.each { println("Hello ${it}!"); } } return true; } } def cli = new MyCli(); if (this.args.length > 0) { cli.execute(this.args); } else { cli.start(); }
рдЗрд╕ рддрд░рд╣ рдХреЗ рдХрд╛рд░реНрдпрдХреНрд░рдо рдХреЛ рд▓реЙрдиреНрдЪ рдХрд░рдиреЗ рд╕реЗ, рд╣рдореЗрдВ рдПрдХ рд╕рдВрд╢реЛрдзрд┐рдд рдЙрдкрд╕рд░реНрдЧ рдорд┐рд▓рддрд╛ рд╣реИ рдЬреЛ рдЖрдкрдХреЛ рдкреНрд░рд╡реЗрд╢ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрдордВрддреНрд░рд┐рдд рдХрд░рддрд╛ рд╣реИ, рди рдХрд┐ рдорд╛рдирдХ "
cmd:> ", рд▓реЗрдХрд┐рди "
$> ":
$ groovy -cp . cli.groovy Welcome Print "help" for reference $> _
рд╕реНрдерд╛рдиреАрдпрдХрд░рдг рдХреЗ рд▓рд┐рдП рдХреМрди рд╕реЗ рдЪрд░ рдореМрдЬреВрдж рд╣реИрдВ, рдЗрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЕрдзрд┐рдХ рд╡рд┐рд╡рд░рдг рдФрд░ рдПрдХ
рд╡рд┐рд╢реЗрд╖ рд╡рд┐рдХреА рдкреГрд╖реНрда рдкрд░ рдЙрдирдХреЗ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдорд╛рди рдХреНрдпрд╛ рд╣реИрдВред
рд╢реЗрд▓ рдХрдорд╛рдВрдб рдирд┐рд╖реНрдкрд╛рджрди
рд╢реЗрд▓ рд╣реЗрд▓реНрдкрд░ рдХреНрд▓рд╛рд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рднреА рд╕рдВрднрд╡ рд╣реИ, рдЬрд┐рд╕рдореЗрдВ рдХреЗрд╡рд▓ рдПрдХ рд╕реНрдерд┐рд░
рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдирд┐рд╖реНрдкрд╛рджрди (рд╕реНрдЯреНрд░рд┐рдВрдЧ) рд╡рд┐рдзрд┐ рд╣реИред рдХрдХреНрд╖рд╛ рдХреЗ рдЗрд╕ рддрд░реАрдХреЗ рд╕реЗ рдПрдХ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдкрд╛рд╕ рдХрд░рдирд╛, рдЬрд╡рд╛рдм рдореЗрдВ рд╣рдореЗрдВ
рд░рд┐рд╕реНрдкреЙрдиреНрд╕ рдХреНрд▓рд╛рд╕ рдХрд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдг рдорд┐рд▓рддрд╛ рд╣реИ, рдЬрд┐рд╕рдореЗрдВ рджреЛ рдлрд╝реАрд▓реНрдб рд╣реИрдВ:
- hasError - рд╢реЗрд▓ рдореЗрдВ рдХрдорд╛рдВрдб рдХреА рд╕рдлрд▓рддрд╛ рдХреЛ рджрд░реНрд╢рд╛рддрд╛ рдПрдХ рдзреНрд╡рдЬ
- рдмрд╛рд╣рд░ - рдЖрджреЗрд╢ рдХрд╛ рдкрд░рд┐рдгрд╛рдо
рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдпрд╣ рд╡рд░реНрддрдорд╛рди рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдореЗрдВ рдкрде рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдХрдорд╛рдВрдб рдХреА рддрд░рд╣ рд▓рдЧ рд╕рдХрддрд╛ рд╣реИ:
boolean do_pwd(String[] args) { if (args.length != 0) { println('ERROR: this method doesn\'t have any arguments'); return false; } Response response = Shell.execute('pwd'); if (!response.hasError) { println(response.out); return true; } else { println("ERROR: ${response.out}"); return false; } }
рдХрдорд╛рдВрдб рдПрдВрдЯреНрд░реА рд╣рд┐рд╕реНрдЯреНрд░реА
рдпрд╣ рд╕рдмрд╕реЗ рдХрдард┐рди рдерд╛ред рдЬрд╣рд╛рдВ рддрдХ тАЛтАЛрдореИрдВ рд╕рдордЭрддрд╛ рд╣реВрдВ, рдЬрд╛рд╡рд╛ (рдФрд░, рддрджрдиреБрд╕рд╛рд░, рдЧреНрд░реВрд╡реА) рдХреЗ рдкрд╛рд╕, рдЗрд╕рд▓рд┐рдП рдмреЛрд▓рдиреЗ рдХреЗ рд▓рд┐рдП, рдЯрд░реНрдорд┐рдирд▓ рдореЗрдВ рдЖрдИ / рдУ рдХреЗ рд╕рд╛рде рдмрд╣реБрдд рддрдирд╛рд╡рдкреВрд░реНрдг рд╕рдВрдмрдВрдз рд╣реИрдВ, рдХрдо рд╕реЗ рдХрдо рдЬреЗрд╡реАрдПрдо рдХреЗ рд▓рд┐рдирдХреНрд╕ рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рдкрд░ (рдореИрдВрдиреЗ рдЗрд╕реЗ рджреВрд╕рд░реЛрдВ рдкрд░ рдХреЛрд╢рд┐рд╢ рдирд╣реАрдВ рдХреА рд╣реИ)ред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдорд╛рдирдХ рдорд╛рдзреНрдпрдо рд╕реЗ рдХреАрдмреЛрд░реНрдб рдкрд░ рддреАрд░ рдХреЗ рд╕рд╛рде рдЗрдирдкреБрдЯ рдХрд░реНрд╕рд░ рдХреЛ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░рдирд╛ рдЕрд╕рдВрднрд╡ рд╣реИ, рдХрдЪрд░рд╛ рдкреНрд░рд┐рдВрдЯ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ "^ [[рд╕реА ^ [[рдбреА ^ [[рдП ^ [[рдмреА]", рдЬрдм рдЖрдк рджрдмрд╛рддреЗ рд╣реИрдВ, рддреЛ рдЙрд╕реА рдЪреАрдЬ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЗрдВрддрдЬрд╛рд░ рдХрд░рддреЗ рд╣реИрдВ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЯреИрдм рдФрд░ рдЕрдиреНрдп рдЪреАрдЬреЗрдВред
рд╕рднреА рд╡рд┐рднрд┐рдиреНрди рдЬрд╛рд╡рд╛ рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдХреЗ рд░реВрдк рдореЗрдВ рдПрдХ рд╡рд░реНрдХрдЕрд░рд╛рдЙрдВрдб рд╣реИ, рдЬреЛ рдХрд┐ рдЬреИрд╕рд╛ рдХрд┐ рдореИрдВ рд╕рдордЭрддрд╛ рд╣реВрдВ, рдЗрд╕рдореЗрдВ рдЯрд░реНрдорд┐рдирд▓ рдЗрдирдкреБрдЯ рдФрд░ рдЬрд╛рд╡рд╛ рдЖрд╡рд░рдг рдХрдХреНрд╖рд╛рдУрдВ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдмрд╕ C / C ++ рдХреЛрдб рд╣реИред рдЫреЛрдЯреА рд╕реНрдХреНрд░рд┐рдкреНрдЯреНрд╕ рдХреЗ рд▓рд┐рдП, OS рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреА рдПрдХ рдЬрд╛рд░ рдлрд╝рд╛рдЗрд▓ рдХреЛ рдЦреАрдВрдЪрдирд╛ рдмрд╣реБрдд рдЕрдзрд┐рдХ рд╣реИ, рд▓реЗрдХрд┐рди рд╕рд╛рде рд╣реА рдореИрдВ рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рднреА рдЪрд╛рд╣рддрд╛ рдерд╛, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдХрдорд╛рдВрдбреЛрдВ рдХреЗ рдЗрддрд┐рд╣рд╛рд╕ рдХреЛ рджреЗрдЦрдирд╛ рдФрд░ рдЗрддрд┐рд╣рд╛рд╕ рд╕реЗ рдЪрдпрдирд┐рдд рдХрдорд╛рдВрдб рдореЗрдВ рддрд░реНрдХреЛрдВ рдХреА рд╕реВрдЪреА рдХреЛ рдмрджрд▓рдирд╛ред рдЗрд╕рдХреЗ рд▓рд┐рдП рдореИрдВрдиреЗ рдПрдХ рд╕рд╛рдЗрдХрд┐рд▓ рдореЗрдВ рд╕рд╛рдЗрдХрд┐рд▓ рд▓рд┐рдЦреАред
Welcome Print "help" for reference cmd:> help List of all available commands: (for reference on command print "help <command_name>") help - prints commands info exit - for exit from CMD cmd:> !! <- nix', cmd:> help | _
"
| " рд╕рд╛рдЗрди рдмрддрд╛рддрд╛ рд╣реИ рдХрд┐ рд╣рдо рдХрдорд╛рдВрдб рддрд░реНрдХ рд╕реВрдЪреА рдХреЛ рд╕рдВрдкрд╛рджрд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рд╣рдо рд╕рд┐рд░реНрдл рдПрдВрдЯрд░ рджрдмрд╛ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдлрд┐рд░ рджреБрднрд╛рд╖рд┐рдпрд╛ рдХрдорд╛рдВрдб рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░реЗрдЧрд╛ред рд╣рдо "
q " рджрд░реНрдЬ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдлрд┐рд░ рд╕рдВрдкрд╛рджрди рд░рджреНрдж рдХрд░ рджрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред рдФрд░ рд╣рдо рдпрд╣ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:
cmd:> help | exit <- cmd:> help exit | +1=hello <- cmd:> help hello | -1 <-
рддрд░реНрдХреЛрдВ рдХреЛ рдмрджрд▓рдиреЗ рдХреЗ рд╕рд╛рде рдкрд░реНрдпрд╛рдкреНрдд рдЦреЗрд▓рдиреЗ рдХреЗ рдмрд╛рдж, рдЖрдк рдЕрдВрдд рдореЗрдВ Enter рджрдмрд╛ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рджреБрднрд╛рд╖рд┐рдпрд╛ рдХрдорд╛рдВрдб рдХреЛ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░реЗрдЧрд╛, рдЗрд╕реЗ рдХрдорд╛рдВрдб рдЗрддрд┐рд╣рд╛рд╕ рдореЗрдВ рднреА рд▓рд┐рдЦреЗрдВрдЧреЗред
рдЗрд╕ рдкрд░ рдореИрдВ рдЗрд╕ рдЕрд╕реАрдо рд░реВрдк рд╕реЗ рд▓рдВрдмреЗ рдкреЛрд╕реНрдЯ рдХреЛ рд╕рдорд╛рдкреНрдд рдХрд░ рджреВрдВрдЧрд╛, рдореИрдВ рдХреЗрд╡рд▓ рдпрд╣ рдХрд╣реВрдВрдЧрд╛ рдХрд┐ рд╕реНрдХреИрдорд░реНрд╕
рд╕рдВрджрд░реНрдн рджреНрд╡рд╛рд░рд╛ рдореЗрд░реА рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рдореЗрдВ рд╕реНрд╡рддрдВрддреНрд░ рд░реВрдк рд╕реЗ рдЙрдкрд▓рдмреНрдз рд╣реИрдВред
рдореИрдВ рдЖрдкрдХреЛ рдЙрджреНрджреЗрд╢реНрдпрдкреВрд░реНрдг рдЖрд▓реЛрдЪрдирд╛ рдФрд░ рд╕рдВрднрд╡рддрдГ "рдлреНрд░реЗрдорд╡рд░реНрдХ" рдХреЗ рдкреВрд░рдХ рдХреЗ рд▓рд┐рдП рд╕реБрдЭрд╛рд╡ рд╕реБрдирдирд╛ рдкрд╕рдВрдж рдХрд░реВрдВрдЧрд╛ред
рдкреБрдирд╢реНрдЪ: рд╡реИрд╕реЗ, рдореИрдВрдиреЗ рдЗрд╕ "рдлреНрд░реЗрдорд╡рд░реНрдХ" рдХреА рдорджрдж рд╕реЗ рди рдХреЗрд╡рд▓ рдЕрдкрдиреЗ рд╕рд░реНрд╡рд░ рдХреЗ рдкреНрд░рдмрдВрдзрди рдХреЗ рд▓рд┐рдП рдПрдХ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд▓рд┐рдЦреА, рдмрд▓реНрдХрд┐ рдХрд╛рдо рдореЗрдВ рднреА рд╕рдорд╛рди рдХрд╛рд░реНрдпреЛрдВ рдХреЗ рд▓рд┐рдП рдХрд╛рдо рдЖрдпрд╛ред
PSS: рдпрджрд┐ рдХреЛрдИ рдЬрд╛рдирддрд╛ рд╣реИ рдХрд┐ рд▓рд┐рдирдХреНрд╕ рдХреЗ рд▓рд┐рдП рдЬрд╛рд╡рд╛ рдкрд░ рдХрдВрд╕реЛрд▓ рд╕реЗ рдЗрдирдкреБрдЯ рд╕рдорд╕реНрдпрд╛ рдХреЛ рдХреИрд╕реЗ рд╣рд▓ рдХрд┐рдпрд╛ рдЬрд╛рдП, рддреЛ рдХреГрдкрдпрд╛ рд╕рд╛рдЭрд╛ рдХрд░реЗрдВред