рдЧреНрд░реЛрд╡реА рдХреЗ рд▓рд┐рдП рдкрд╛рдпрдерди рд╕реАрдПрдордбреА рдПрдирд╛рд▓реЙрдЧ

рдЧреНрд░реВрд╡реА рдПрдВрдб рдЧреНрд░рд┐рд▓реНрд╕ рдореЗрдВ рдЕрдкрдиреЗ рд▓рд┐рдП рдПрдХ рдЫреЛрдЯреА рд╕реА рдкрд░рд┐рдпреЛрдЬрдирд╛ рд▓рд┐рдЦрдиреЗ рдХреА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдореЗрдВ, рд╕рднреА рд╡рд┐рднрд┐рдиреНрди рд╢реЗрд▓ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рддрддреНрдХрд╛рд▓ рдЖрд╡рд╢реНрдпрдХрддрд╛ рдереАред рдпрд╛ рддреЛ рд╕рд░реНрд╡рд░ рдХреЛ рдкреБрдирд░рд╛рд░рдВрдн рдХрд░реЗрдВ, рдирдП рдмрдирд╛рдП рдЧрдП рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХреЛ рдлрд┐рд░ рд╕реЗ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, рдлрд┐рд░ рд╣рд░ рдЬрдЧрд╣ рд╕реЗ рд▓реЙрдЧ рдЗрдХрдЯреНрдард╛ рдХрд░реЗрдВ, рдлрд┐рд░ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдХреЗ рдирдП рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рдХреЛ рднрд░реЗрдВ рдФрд░ рдЗрд╕реА рддрд░рд╣ред рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ рдореИрдВрдиреЗ рдмреИрд╢ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдореЗрдВ рд╕рдм рдХреБрдЫ рд▓рд┐рдЦрд╛ рдерд╛, рд▓реЗрдХрд┐рди рдЗрд╕ рддрдереНрдп рдХреЗ рдХрд╛рд░рдг рдХрд┐ рдореИрдВ рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реВрдВ, рдЕрдкрдиреЗ рдкрд╛рд▓рддреВ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдпрд╣ рдмрд╣реБрдд рджреБрд░реНрд▓рдн рд╣реИ рд╣рд░ рдмрд╛рд░ рдЬрдм рдореИрдВ рдЖрд╡рд╢реНрдпрдХ рдХрд╛рд░реНрдпреЛрдВ, рд╡рд╛рдХреНрдпрд╡рд┐рдиреНрдпрд╛рд╕ рдирд┐рдпрдореЛрдВ рдЖрджрд┐ рдХреЗ рдЗрдВрдЯрд░рдиреЗрдЯ рдкрд░ рдПрдХ рд▓рдВрдмреА рдЦреЛрдЬ рдореЗрдВ рдЖрдпрд╛ рд╣реВрдВ, рдЬреЛ рдирд┐рд╕реНрд╕рдВрджреЗрд╣ рд╣реИред , рдмрд╣реБрдд рд╣реА рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЗ рд╡рд┐рдХрд╛рд╕ рдХреЛ рдзреАрдорд╛ рдХрд░ рджрд┐рдпрд╛ред

рдФрд░ рдЪреВрдВрдХрд┐ рдЧреНрд░реВрд╡реА рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рднрд╛рд╖рд╛ рд╕реЗ рдкрд╣рд▓реЗ рд╕реЗ рдкрд░рд┐рдЪрд┐рдд рдереЗ, рдЗрд╕рд▓рд┐рдП рдореИрдВрдиреЗ рдЗрд╕ рдкрд░ рд▓рд┐рдЦрдиреЗ рдХрд╛ рдлреИрд╕рд▓рд╛ рдХрд┐рдпрд╛ред рд▓реЗрдХрд┐рди рдореИрдВ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ * .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_ " рд╕реЗ рд╢реБрд░реВ рд╣реЛрддреА рд╣реИ, рд▓реЗрдХрд┐рди рдЙрдкрд░реЛрдХреНрдд рд╢рд░реНрддреЛрдВ рдореЗрдВ рд╕реЗ рдПрдХ рдХреЛ рдкреВрд░рд╛ рдирд╣реАрдВ рдХрд░рддреА рд╣реИ, рддреЛ рдкреНрд░реЛрдЧреНрд░рд╛рдо рдПрдХ рдЪреЗрддрд╛рд╡рдиреА рдЬрд╛рд░реА рдХрд░реЗрдЧрд╛ рдЬреЛ рдмрддрд╛рдПрдЧрд╛ рдХрд┐ рд╡рд┐рдзрд┐ рдХреЛ рдХрдорд╛рдВрдб рдХреА рд╕реВрдЪреА рдореЗрдВ рдХреНрдпреЛрдВ рд╢рд╛рдорд┐рд▓ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ рдФрд░ рдЗрд╕реЗ рдХреИрд╕реЗ рдареАрдХ рдХрд┐рдпрд╛ рдЬрд╛рдПред

рд╣рдорд╛рд░реА рдХрдХреНрд╖рд╛ рдХрд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдг рдмрдирд╛рдиреЗ рдХреЗ рдмрд╛рдж, рдЖрдк рдЗрд╕реЗ рджреЛ рддрд░реАрдХреЛрдВ рд╕реЗ рд╢реБрд░реВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:

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 $> _ 


рд╕реНрдерд╛рдиреАрдпрдХрд░рдг рдХреЗ рд▓рд┐рдП рдХреМрди рд╕реЗ рдЪрд░ рдореМрдЬреВрдж рд╣реИрдВ, рдЗрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЕрдзрд┐рдХ рд╡рд┐рд╡рд░рдг рдФрд░ рдПрдХ рд╡рд┐рд╢реЗрд╖ рд╡рд┐рдХреА рдкреГрд╖реНрда рдкрд░ рдЙрдирдХреЗ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдорд╛рди рдХреНрдпрд╛ рд╣реИрдВред

рд╢реЗрд▓ рдХрдорд╛рдВрдб рдирд┐рд╖реНрдкрд╛рджрди


рд╢реЗрд▓ рд╣реЗрд▓реНрдкрд░ рдХреНрд▓рд╛рд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рднреА рд╕рдВрднрд╡ рд╣реИ, рдЬрд┐рд╕рдореЗрдВ рдХреЗрд╡рд▓ рдПрдХ рд╕реНрдерд┐рд░ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдирд┐рд╖реНрдкрд╛рджрди (рд╕реНрдЯреНрд░рд┐рдВрдЧ) рд╡рд┐рдзрд┐ рд╣реИред рдХрдХреНрд╖рд╛ рдХреЗ рдЗрд╕ рддрд░реАрдХреЗ рд╕реЗ рдПрдХ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдкрд╛рд╕ рдХрд░рдирд╛, рдЬрд╡рд╛рдм рдореЗрдВ рд╣рдореЗрдВ рд░рд┐рд╕реНрдкреЙрдиреНрд╕ рдХреНрд▓рд╛рд╕ рдХрд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдг рдорд┐рд▓рддрд╛ рд╣реИ, рдЬрд┐рд╕рдореЗрдВ рджреЛ рдлрд╝реАрд▓реНрдб рд╣реИрдВ:

  1. hasError - рд╢реЗрд▓ рдореЗрдВ рдХрдорд╛рдВрдб рдХреА рд╕рдлрд▓рддрд╛ рдХреЛ рджрд░реНрд╢рд╛рддрд╛ рдПрдХ рдзреНрд╡рдЬ
  2. рдмрд╛рд╣рд░ - рдЖрджреЗрд╢ рдХрд╛ рдкрд░рд┐рдгрд╛рдо


рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдпрд╣ рд╡рд░реНрддрдорд╛рди рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдореЗрдВ рдкрде рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдХрдорд╛рдВрдб рдХреА рддрд░рд╣ рд▓рдЧ рд╕рдХрддрд╛ рд╣реИ:

 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: рдпрджрд┐ рдХреЛрдИ рдЬрд╛рдирддрд╛ рд╣реИ рдХрд┐ рд▓рд┐рдирдХреНрд╕ рдХреЗ рд▓рд┐рдП рдЬрд╛рд╡рд╛ рдкрд░ рдХрдВрд╕реЛрд▓ рд╕реЗ рдЗрдирдкреБрдЯ рд╕рдорд╕реНрдпрд╛ рдХреЛ рдХреИрд╕реЗ рд╣рд▓ рдХрд┐рдпрд╛ рдЬрд╛рдП, рддреЛ рдХреГрдкрдпрд╛ рд╕рд╛рдЭрд╛ рдХрд░реЗрдВред

Source: https://habr.com/ru/post/In212457/


All Articles