рдЬреВрд▓рд┐рдпрд╛ред рд▓рд┐рдкрд┐рдпреЛрдВ рдФрд░ рдкрд╛рд░реНрд╕рд┐рдВрдЧ рдХрдорд╛рдВрдб рд▓рд╛рдЗрди рддрд░реНрдХ


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


рд╢реБрд░реВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреИрд╕реЗ рдмрдирд╛рдИ рдЬрд╛рддреА рд╣реИ, рдЗрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреБрдЫ рд╢рдмреНрджред рдХреЛрдИ рднреА рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдПрдХ рд╡рд┐рд╢реЗрд╖ рдкреНрд░рд╛рд░реВрдк рдореЗрдВ рдПрдХ рдкрдВрдХреНрддрд┐ рд╕реЗ рд╢реБрд░реВ рд╣реЛрддреА рд╣реИ рдЬреЛ рджреБрднрд╛рд╖рд┐рдпрд╛ рдХреЛ рдЗрдВрдЧрд┐рдд рдХрд░рддреА рд╣реИред рд░реЗрдЦрд╛ рдХреА рд╢реБрд░реБрдЖрдд рдПрдХ рдХреНрд░рдо рд╕реЗ рд╣реЛрддреА рд╣реИ рдЬрд┐рд╕реЗ рд╢реЗрдмрдВрдЧ рдХреЗ рдирд╛рдо рд╕реЗ рдЬрд╛рдирд╛ рдЬрд╛рддрд╛ рд╣реИред рдЬреВрд▓рд┐рдпрд╛ рдХреЗ рд▓рд┐рдП, рдпрд╣ рдкрдВрдХреНрддрд┐ рд╣реИ:


#!/usr/bin/env julia 

рдмреЗрд╢рдХ, рдЖрдк рдРрд╕рд╛ рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗ, рд▓реЗрдХрд┐рди рддрдм рдЖрдкрдХреЛ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЛ рдХрдорд╛рдВрдб рд╕реЗ рдЪрд▓рд╛рдирд╛ рд╣реЛрдЧрд╛:


 julia .jl 

рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдХрд┐рд╕реА рднреА рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЛ рдПрдХ рдирдП рдЪрд░рд┐рддреНрд░ рдХреЗ рд╕рд╛рде рд╕рдорд╛рдкреНрдд рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред рдпрд╣ POSIX рдорд╛рдирдХ рдХреА рдПрдХ рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рдЬреЛ рдПрдХ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдХреА рдкрд░рд┐рднрд╛рд╖рд╛ рд╕реЗ рдПрдХ рдирдИ рд▓рд╛рдЗрди рд╡рд░реНрдг рджреНрд╡рд╛рд░рд╛ рд╕рдорд╛рдкреНрдд рдХрд┐рдП рдЧрдП рд╡рд░реНрдгреЛрдВ рдХреЗ рдЕрдиреБрдХреНрд░рдо рдХреЗ рд░реВрдк рдореЗрдВ рд╣реЛрддреА рд╣реИред


рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЛ рд╕реАрдзреЗ рдЪрд▓рд╛рдиреЗ рдХреЗ рд▓рд┐рдП, рдЗрд╕рдореЗрдВ executable рд╡рд┐рд╢реЗрд╖рддрд╛ рд╣реЛрдиреА рдЪрд╛рд╣рд┐рдПред рдЖрдк рдХрдорд╛рдВрдб рдХреЗ рд╕рд╛рде рдЯрд░реНрдорд┐рдирд▓ рдореЗрдВ рдРрд╕реА рд╡рд┐рд╢реЗрд╖рддрд╛ рдЬреЛрдбрд╝ рд╕рдХрддреЗ рд╣реИрдВ:


 chmod +x .jl 

рдпреЗ рдирд┐рдпрдо, рд╢рд╛рдпрдж, рдПрдордПрд╕ рд╡рд┐рдВрдбреЛрдЬ рдХреЛ рдЫреЛрдбрд╝рдХрд░, рд╕рднреА рдЖрдзреБрдирд┐рдХ рдСрдкрд░реЗрдЯрд┐рдВрдЧ рд╕рд┐рд╕реНрдЯрдо рдХреЗ рд▓рд┐рдП рдорд╛рдиреНрдп рд╣реИрдВред


ARGS рд╕рд░рдгреА


рдЖрдЗрдП рдорд╛рдкрджрдВрдбреЛрдВ рдХреЛ рдкрд╛рд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкрд╣рд▓реЗ рд╡рд┐рдХрд▓реНрдк рдкрд░ рдЬрд╛рдПрдВред рдХрдорд╛рдВрдб рд▓рд╛рдЗрди рддрд░реНрдХ рдЬреВрд▓рд┐рдпрд╛ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдореЗрдВ рд╕рд░рдгреА рд╕реНрдерд┐рд░рд╛рдВрдХ Base.ARGS рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЙрдкрд▓рдмреНрдз рд╣реИрдВред рдЖрдЗрдП рд╕рд░рд▓рддрдо рд╕реНрдХреНрд░рд┐рдкреНрдЯ рддреИрдпрд╛рд░ рдХрд░реЗрдВ:


 #!/usr/bin/env julia @show typeof(ARGS) @show ARGS 

рдпрд╣ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЗрд╡рд▓ ARGS рд╕рд░рдгреА рдХреЗ рдкреНрд░рдХрд╛рд░ рдФрд░ рд╕рд╛рдордЧреНрд░реА рдХреЛ рдХрдВрд╕реЛрд▓ рдХреЗ рд▓рд┐рдП рдкреНрд░рд┐рдВрдЯ рдХрд░рддреА рд╣реИред


рдмрд╣реБрдд рдмрд╛рд░, рдлрд╝рд╛рдЗрд▓ рдирд╛рдо рдХрдорд╛рдВрдб рд▓рд╛рдЗрди рддрд░реНрдХ рдХреЗ рд░реВрдк рдореЗрдВ рдкрд╛рд░рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдФрд░ рдпрд╣рд╛рдБ рдПрдХ рддрд░реНрдХ рдХреЗ рд░реВрдк рдореЗрдВ рдкрд╛рд░рд┐рдд рдлрд╝рд╛рдЗрд▓ рдЯреЗрдореНрдкрд▓реЗрдЯ рдХреЛ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд░рдиреЗ рдХреА рдПрдХ рдЦрд╝рд╛рд╕рд┐рдпрдд рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдХрдорд╛рдВрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╣рдорд╛рд░реА рд╕реНрдХреНрд░рд┐рдкреНрдЯ ./args.jl *.jl рдФрд░ рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВ:


 >./args.jl *.jl typeof(ARGS) = Array{String,1} ARGS = ["argparse.jl", "args.jl", "docopt.jl"] 

рдФрд░ рдЕрдм рдЪрд▓реЛ рдХрдорд╛рдВрдб рд▓рд╛рдЗрди рдкреИрд░рд╛рдореАрдЯрд░ рдХреЛ рдереЛрдбрд╝рд╛ рдмрджрд▓ рджреЗрдВ, рдЙрджреНрдзрд░рдг рдХреЗ рд╕рд╛рде рдореБрдЦреМрдЯрд╛ рдХреЗ рдЖрд╕рдкрд╛рд╕:
./args.jl "*.jl" рдирддреАрдЬрддрди, рд╣рдо рдкреНрд░рд╛рдкреНрдд рдХрд░рддреЗ рд╣реИрдВ:


 >./args.jl "*.jl" typeof(ARGS) = Array{String,1} ARGS = ["*.jl"] 

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


рдЯреЗрдореНрдкреНрд▓реЗрдЯреНрд╕ рдореЗрдВ, рдХрдИ рдХреИрд░реЗрдХреНрдЯрд░ рдХреЛ рдорд╛рд╕реНрдХ рдХрд░рдирд╛ рд╕рдВрднрд╡ рд╣реИ - *, рдПрдХ рдХреИрд░реЗрдХреНрдЯрд░ рдХреЛ рдорд╛рд╕реНрдХ рдХрд░реЗрдВ -? .. рд░реЗрдВрдЬ рджреНрд╡рд╛рд░рд╛ рдЦреЛрдЬреЗрдВ [...], рдФрд░, рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐, рдХреЙрдореНрдкреНрд▓реЗрдХреНрд╕ рдХреЙрдореНрдмрд┐рдиреЗрд╢рди рдХреЛ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рдиреЗ рдХреА рдХреНрд╖рдорддрд╛:


 >./args.jl {args,doc}* typeof(ARGS) = Array{String,1} ARGS = ["args.jl", "docopt.jl"] 

рдЕрдзрд┐рдХ рдЬрд╛рдирдХрд╛рд░реА рдХреЗ рд▓рд┐рдП GNU / Linux рдХрдорд╛рдВрдб-рд▓рд╛рдЗрди рдЯреВрд▓ рд╕рд╛рд░рд╛рдВрд╢ рджреЗрдЦреЗрдВред


рдпрджрд┐, рдХрд┐рд╕реА рдХрд╛рд░рдг рд╕реЗ, рд╣рдо рдмреИрд╢ рджреНрд╡рд╛рд░рд╛ рдкреНрд░рджрд╛рди рдХрд┐рдП рдЧрдП рдЧреНрд▓рдмреНрд╕ рддрдВрддреНрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рддреЛ рдЖрдк рдЧреНрд▓рдмреНрд╕.рдЬреНрд▓ рдкреИрдХреЗрдЬ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд╕реЗ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдорд╛рд╕реНрдХ рджреНрд╡рд╛рд░рд╛ рдлрд╛рдЗрд▓реЗрдВ рдкрд╛ рд╕рдХрддреЗ рд╣реИрдВред
рдирд┐рдореНрди рдХреЛрдб рддрд░реНрдХ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдореЗрдВ рдкрд╛рдИ рдЧрдИ рд╕рднреА рдЪреАрдЬрд╝реЛрдВ рдХреЛ рдлрд╝рд╛рдЗрд▓ рдирд╛рдореЛрдВ рдХреЗ рдПрдХрд▓ рд╕рд░рдгреА рдореЗрдВ рд░реВрдкрд╛рдВрддрд░рд┐рдд рдХрд░рддрд╛ рд╣реИред рдпрд╣реА рд╣реИ, рдЪрд╛рд╣реЗ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдиреЗ рдЙрджреНрдзрд░рдг рдЪрд┐рд╣реНрдиреЛрдВ рдХреЗ рдмрд┐рдирд╛ рдЙрджреНрдзрд░рдг рдЪрд┐рд╣реНрдиреЛрдВ рдореЗрдВ рдореБрдЦреМрдЯрд╛ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд┐рдпрд╛ рд╣реЛ, рдпрд╛ рдХреЗрд╡рд▓ рдореМрдЬреВрджрд╛ рдпрд╛ рдЧреИрд░-рдореМрдЬреВрдж рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЗ рдирд╛рдореЛрдВ рдХреЛ рд╕реВрдЪреАрдмрджреНрдз рдХрд┐рдпрд╛ рд╣реЛ, рдкрд░рд┐рдгрд╛рдореА filelist рд╕рд░рдгреА рдореЗрдВ рдХреЗрд╡рд▓ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдлрд╝рд╛рдЗрд▓реЛрдВ рдпрд╛ рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛рдУрдВ рдХреЗ рдирд╛рдо рд╣реА рд░рд╣реЗрдВрдЧреЗред


 using Glob filelist = unique(collect(Iterators.flatten(map(arg -> glob(arg), ARGS)))) 

рдпреЗ рд╕рд░рд▓ рдЙрджрд╛рд╣рд░рдг, рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, ARGS рд╕рд░рдгреА рдХреЗ рдЙрдкрдпреЛрдЧ рдХрд╛ рдПрдХ рдкреНрд░рджрд░реНрд╢рди рд╣реИрдВ, рдЬрд╣рд╛рдВ рдкреНрд░реЛрдЧреНрд░рд╛рдорд░ рддрд░реНрдХреЛрдВ рдХреЛ рдкрд╛рд░реНрд╕ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рднреА рддрд░реНрдХ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рддрд╛ рд╣реИред рдпрд╣ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдЕрдХреНрд╕рд░ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдЬрдм рддрд░реНрдХреЛрдВ рдХрд╛ рд╕реЗрдЯ рдмреЗрд╣рдж рд╕рд░рд▓ рд╣реЛрддрд╛ рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдлрд╝рд╛рдЗрд▓ рдирд╛рдореЛрдВ рдХреА рдПрдХ рд╕реВрдЪреАред рдпрд╛ рдПрдХ рдпрд╛ рджреЛ рд╡рд┐рдХрд▓реНрдк рдЬрд┐рдиреНрд╣реЗрдВ рд╕рд░рд▓ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдСрдкрд░реЗрд╢рди рджреНрд╡рд╛рд░рд╛ рдирд┐рдпрдВрддреНрд░рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред ARGS рддрддреНрд╡реЛрдВ рддрдХ рдкрд╣реБрдВрдЪ рдХрд┐рд╕реА рднреА рдЕрдиреНрдп рд╕рд░рдгреА рдХреЗ рддрддреНрд╡реЛрдВ рдХреЗ рд╕рдорд╛рди рд╣реИред рдХреЗрд╡рд▓ рдпрд╛рдж рд░рдЦреЗрдВ рдХрд┐ рдЬреВрд▓рд┐рдпрд╛ рдореЗрдВ рд╕рд░рдгреА рдХреЗ рдкрд╣рд▓реЗ рддрддреНрд╡ рдХрд╛ рд╕реВрдЪрдХрд╛рдВрдХ 1 рд╣реИред


рдкреИрдХреЗрдЬ ArgParse.jl


рдпрд╣ рдкрд╛рд░реНрд╕рд┐рдВрдЧ рд▓реЙрдЬрд┐рдХ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдХреЗ рдмрд┐рдирд╛ рдХрдорд╛рдВрдб рд▓рд╛рдЗрди рдХреА рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рдФрд░ рд╡рд┐рдХрд▓реНрдкреЛрдВ рдХрд╛ рд╡рд░реНрдгрди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд▓рдЪреАрд▓рд╛ рдЙрдкрдХрд░рдг рд╣реИред
рд╣рдо рдкреИрдХреЗрдЬ рдкреНрд░рд▓реЗрдЦрди рд╕реЗ рдереЛрдбрд╝рд╛ рд╕рдВрд╢реЛрдзрд┐рдд рдЙрджрд╛рд╣рд░рдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВрдЧреЗ - http://carlobaldassi.imtqy.com/ArgParse.jl/stable/ :


 #!/usr/bin/env julia using ArgParse function parse_commandline() s = ArgParseSettings() @add_arg_table s begin "--opt1" help = "an option with an argument" "--opt2", "-o" help = "another option with an argument" arg_type = Int default = 0 "--flag1" help = "an option without argument, ie a flag" action = :store_true "arg1" help = "a positional argument" required = true end return parse_args(s) end function main() @show parsed_args = parse_commandline() println("Parsed args:") for (arg,val) in parsed_args print(" $arg => ") show(val) println() end end main() 

рдЕрдЧрд░ рд╣рдо рдЗрд╕ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЛ рдмрд┐рдирд╛ рддрд░реНрдХ рдХреЗ рдЪрд▓рд╛рддреЗ рд╣реИрдВ, рддреЛ рд╣рдореЗрдВ рдЙрдирдХреА рд░рдЪрдирд╛ рдкрд░ рд╕рдВрджрд░реНрдн рдЬрд╛рдирдХрд╛рд░реА рдХрд╛ рдЖрдЙрдЯрдкреБрдЯ рдорд┐рд▓рддрд╛ рд╣реИ:


 >./argparse.jl required argument arg1 was not provided usage: argparse.jl [--opt1 OPT1] [-o OPT2] [--flag1] arg1 

рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рд╡рд░реНрдЧ рдХреЛрд╖реНрдардХ рдореЗрдВ рд╣рдо рд╡реИрдХрд▓реНрдкрд┐рдХ рддрд░реНрдХ рджреЗрдЦрддреЗ рд╣реИрдВред рдЬрдмрдХрд┐ arg1 рдХреЗ рд░реВрдк рдореЗрдВ рдЪрд┐рд╣реНрдирд┐рдд рддрд░реНрдХ (рдЕрд░реНрдерд╛рдд, рд╣рдо рдЗрд╕рдХреЗ рд▓рд┐рдП рдХреНрдпрд╛ рд╡рд┐рдХрд▓реНрдк рджреЗрддреЗ рд╣реИрдВ) рдЕрдирд┐рд╡рд╛рд░реНрдп рд╣реИред


рдЗрд╕реЗ рдлрд┐рд░ рд╕реЗ рдЪрд▓рд╛рдПрдБ, рд▓реЗрдХрд┐рди рдЖрд╡рд╢реНрдпрдХ рд╡рд┐рд╢реЗрд╖рддрд╛ arg1 рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░реЗрдВред


 >./argparse.jl test parsed_args = parse_commandline() = Dict{String,Any}("flag1"=>false,"arg1"=>"test","opt1"=>nothing,"opt2"=>0) Parsed args: flag1 => false arg1 => "test" opt1 => nothing opt2 => 0 

рд╣рдо рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ parsed_args рдПрдХ рд╕рд╛рд╣рдЪрд░реНрдп рд╕рд╛рд░рдгреА рд╣реИ, рдЬрд╣рд╛рдБ рдЪрд╛рдмрд┐рдпрд╛рдБ parse_commandline рдлрд╝рдВрдХреНрд╢рди рдореЗрдВ рдХреА рдЧрдИ рдШреЛрд╖рдгрд╛ рдХреЗ рдЕрдиреБрд╕рд╛рд░ рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рдХреЗ рдирд╛рдо рд╣реИрдВ, рдФрд░ рдЙрдирдХреЗ рдорд╛рди рд╡рд╣реА рд╣реИрдВ рдЬреЛ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ рд╕реЗрдЯ рдХрд┐рдП рдЧрдП рдереЗ рдпрд╛ рдХрдорд╛рдВрдб рд▓рд╛рдЗрди рддрд░реНрдХреЛрдВ рдХреЗ рдорд╛рди рдХреЗ рд░реВрдк рдореЗрдВ рдкрд╛рд░рд┐рдд рдХрд┐рдП рдЧрдП рдереЗред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдорд╛рди рдЙрд╕ рдкреНрд░рдХрд╛рд░ рдХреЗ рд╣реЛрддреЗ рд╣реИрдВ рдЬреЛ рдШреЛрд╖рдгрд╛ рдХреЗ рджреМрд░рд╛рди рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рд╣реЛрддреЗ рд╣реИрдВред


@add_arg_table рдореИрдХреНрд░реЛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рддрд░реНрдХ @add_arg_table рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВред рд╡рд┐рдХрд▓реНрдкреЛрдВ рдХреА рдШреЛрд╖рдгрд╛ рдХрд░рдирд╛ рд╕рдВрднрд╡ рд╣реИ:


  "--opt2", "-o" help = "another option with an argument" arg_type = Int default = 0 

рдпрд╛ рддрд░реНрдХ


  "arg1" help = "a positional argument" required = true 

рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рд╡рд┐рдХрд▓реНрдкреЛрдВ рдХреЛ рдкреВрд░реНрдг рдФрд░ рд▓рдШреБ рд░реВрдк (рдПрдХ рд╣реА рд╕рдордп рдореЗрдВ --opt2 рдФрд░ -o ) рдХрд╛ рд╕рдВрдХреЗрдд рджрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдпрд╛, рдХреЗрд╡рд▓ рдПрдХ рд╣реА рд░реВрдк рдореЗрдВред рдкреНрд░рдХрд╛рд░ рдХреЛ arg_type рдлрд╝реАрд▓реНрдб рдореЗрдВ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдорд╛рди рдХреЛ default = ... рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╕реЗрдЯ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ default = ... рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдорд╛рди рдХрд╛ рдПрдХ рд╡рд┐рдХрд▓реНрдк рддрд░реНрдХ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ - required = true ред
рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдХрд┐рд╕реА рддрд░реНрдХ рдХреА рдореМрдЬреВрджрдЧреА рдпрд╛ рдЕрдиреБрдкрд╕реНрдерд┐рддрд┐ рдХреЗ рдЖрдзрд╛рд░ рдкрд░, рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рдХрд╛рд░реНрд░рд╡рд╛рдИ рдХреА рдШреЛрд╖рдгрд╛ рдХрд░рдирд╛ рд╕рдВрднрд╡ рд╣реИ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП true рдпрд╛ false ред рдпрд╣ action = :store_true рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ


  "--flag1" help = "an option without argument, ie a flag" action = :store_true 

help рдлреАрд▓реНрдб рдореЗрдВ рд╡рд╣ рдЯреЗрдХреНрд╕реНрдЯ рд╣реЛрддрд╛ рд╣реИ рдЬреЛ рдХрдорд╛рдВрдб рд▓рд╛рдЗрди рдкрд░ рдкреНрд░реЙрдореНрдкреНрдЯ рдореЗрдВ рдкреНрд░рджрд░реНрд╢рд┐рдд рд╣реЛрдЧрд╛ред
рдпрджрд┐ рд╕реНрдЯрд╛рд░реНрдЯрдЕрдк рдореЗрдВ рд╣рдо рд╕рднреА рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рдХреЛ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рд╣рдо рдкреНрд░рд╛рдкреНрдд рдХрд░рддреЗ рд╣реИрдВ:


 >./argparse.jl --opt1 "2+2" --opt2 "4" somearg --flag parsed_args = parse_commandline() = Dict{String,Any}("flag1"=>true,"arg1"=>"somearg","opt1"=>"2+2","opt2"=>4) Parsed args: flag1 => true arg1 => "somearg" opt1 => "2+2" opt2 => 4 

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


 if (Base.source_path() != Base.basename(@__FILE__)) vcat(Base.ARGS, ["--opt1", "2+2", "--opt2", "4", "somearg", "--flag"] ) end 

рдореИрдХреНрд░реЛ @__FILE__ рдЙрд╕ рдлрд╝рд╛рдЗрд▓ рдХрд╛ рдирд╛рдо рд╣реИ рдЬрд┐рд╕рдореЗрдВ рдореИрдХреНрд░реЛ рддреИрдирд╛рдд рд╣реИред рдФрд░ REPL рдХреЗ рд▓рд┐рдП рдпрд╣ рдирд╛рдо Base.source_path() рдорд╛рдзреНрдпрдо рд╕реЗ рдкреНрд░рд╛рдкреНрдд рд╡рд░реНрддрдорд╛рди рдкреНрд░реЛрдЧреНрд░рд╛рдо рдлрд╝рд╛рдЗрд▓ рдХреЗ рдирд╛рдо рд╕реЗ рдЕрд▓рдЧ рд╣реИред Base.ARGS рднрд┐рдиреНрди рдорд╛рди рдХреЗ Base.ARGS рд╕рд░рдгреА Base.ARGS рдХреЛ рдкреНрд░рд╛рд░рдВрдн рдХрд░рдирд╛ рдЕрд╕рдВрднрд╡ рд╣реИ, рд▓реЗрдХрд┐рди рдПрдХ рд╣реА рд╕рдордп рдореЗрдВ, рдЖрдк рдирдИ рд▓рд╛рдЗрдиреЗрдВ рдЬреЛрдбрд╝ рд╕рдХрддреЗ рд╣реИрдВ, рдХреНрдпреЛрдВрдХрд┐ рд╕рд░рдгреА рд╕реНрд╡рдпрдВ рдПрдХ рд╕реНрдерд┐рд░ рдирд╣реАрдВ рд╣реИред рдЬреВрд▓рд┐рдпрд╛ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕рд░рдгреА рдПрдХ рд╕реНрддрдВрдн рд╣реИ, рдЗрд╕рд▓рд┐рдП рд╣рдо vcat (рдКрд░реНрдзреНрд╡рд╛рдзрд░ vcat ) рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВред


рд╣рд╛рд▓рд╛рдБрдХрд┐, рдЬреВрдиреЛ рд╕рдВрдкрд╛рджрдХ рдХреА рд╕реЗрдЯрд┐рдВрдЧ рдореЗрдВ, рдЖрдк рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдЪрд▓рд╛рдиреЗ рдХреЗ рд▓рд┐рдП рддрд░реНрдХ рд╕реЗрдЯ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рд▓реЗрдХрд┐рди рдЙрдиреНрд╣реЗрдВ рд╣рд░ рдмрд╛рд░ рдЕрд▓рдЧ-рдЕрд▓рдЧ рдбреАрдмрдЧ рдХреА рдЧрдИ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЗ рд▓рд┐рдП рд╣рд░ рдмрд╛рд░ рдмрджрд▓рдирд╛ рд╣реЛрдЧрд╛ред


рдкреИрдХреЗрдЬ DocOpt.jl


рдпрд╣ рд╡рд┐рдХрд▓реНрдк docopt рдорд╛рд░реНрдХрдЕрдк рднрд╛рд╖рд╛ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХрд╛ рдПрдХ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рд╣реИ - http://docopt.org/ ред рдЗрд╕ рднрд╛рд╖рд╛ рдХрд╛ рдореБрдЦреНрдп рд╡рд┐рдЪрд╛рд░ рдПрдХ рд░реВрдк рдореЗрдВ рд╡рд┐рдХрд▓реНрдкреЛрдВ рдФрд░ рддрд░реНрдХреЛрдВ рдХрд╛ рдПрдХ рдШреЛрд╖рдгрд╛рддреНрдордХ рд╡рд┐рд╡рд░рдг рд╣реИ, рдЬреЛ рдПрдХ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХрд╛ рдЖрдВрддрд░рд┐рдХ рд╡рд┐рд╡рд░рдг рднреА рд╣реЛ рд╕рдХрддрд╛ рд╣реИред рдПрдХ рд╡рд┐рд╢реЗрд╖ рдЯреЗрдореНрдкрд▓реЗрдЯ рднрд╛рд╖рд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред


рд╣рдо рдЗрд╕ рдкреИрдХреЗрдЬ рдХреЗ рд▓рд┐рдП рдкреНрд░рд▓реЗрдЦрди рд╕реЗ рдПрдХ рдЙрджрд╛рд╣рд░рдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВрдЧреЗ https://github.com/docopt/DocOpt.jl


 #!/usr/bin/env julia doc = """Naval Fate. Usage: naval_fate.jl ship new <name>... naval_fate.jl ship <name> move <x> <y> [--speed=<kn>] naval_fate.jl ship shoot <x> <y> naval_fate.jl mine (set|remove) <x> <y> [--moored|--drifting] naval_fate.jl -h | --help naval_fate.jl --version Options: -h --help Show this screen. --version Show version. --speed=<kn> Speed in knots [default: 10]. --moored Moored (anchored) mine. --drifting Drifting mine. """ using DocOpt # import docopt function args = docopt(doc, version=v"2.0.0") @show args 

рдиреЛрдЯреЗрд╢рди doc = ... рдЬреВрд▓рд┐рдпрд╛ doc рд╕реНрдЯреНрд░рд┐рдВрдЧ рдХрд╛ рдирд┐рд░реНрдорд╛рдг рд╣реИ, рдЬрд┐рд╕рдореЗрдВ рдбреЙрдХрдЯреЙрдк рдХреЗ рд▓рд┐рдП рд╕рдВрдкреВрд░реНрдг рдШреЛрд╖рдгрд╛ рд╣реИред рдмрд┐рдирд╛ рддрд░реНрдХ рдХреЗ рдХрдорд╛рдВрдб рд▓рд╛рдЗрди рдкрд░ рдЪрд▓рдиреЗ рдХрд╛ рдкрд░рд┐рдгрд╛рдо рд╣реЛрдЧрд╛:


 >./docopt.jl Usage: naval_fate.jl ship new <name>... naval_fate.jl ship <name> move <x> <y> [--speed=<kn>] naval_fate.jl ship shoot <x> <y> naval_fate.jl mine (set|remove) <x> <y> [--moored|--drifting] naval_fate.jl -h | --help naval_fate.jl --version 

рдпрджрд┐ рд╣рдо рд╕рдВрдХреЗрдд рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ рдФрд░ "рдПрдХ рдирдпрд╛ рдЬрд╣рд╛рдЬ рдмрдирд╛рдиреЗ" рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рд╣рдореЗрдВ рд╕рд╛рд╣рдЪрд░реНрдп args рд╕рд░рдгреА рдХрд╛ рдПрдХ рдкреНрд░рд┐рдВрдЯрдЖрдЙрдЯ рдорд┐рд▓рддрд╛ рд╣реИ, рдЬреЛ рдХрдорд╛рдВрдб рд▓рд╛рдЗрди рдХреЛ рдкрд╛рд░реНрд╕ рдХрд░рдиреЗ рдХреЗ рдкрд░рд┐рдгрд╛рдо рд╕реЗ рдЙрддреНрдкрдиреНрди рд╣реБрдЖ рдерд╛


 >./docopt.jl ship new Bystriy args = Dict{String,Any}( "remove"=>false, "--help"=>false, "<name>"=>["Bystriy"], "--drifting"=>false, "mine"=>false, "move"=>false, "--version"=>false, "--moored"=>false, "<x>"=>nothing, "ship"=>true, "new"=>true, "shoot"=>false, "set"=>false, "<y>"=>nothing, "--speed"=>"10") 

docopt рдлрд╝рдВрдХреНрд╢рди docopt рд░реВрдк docopt рдШреЛрд╖рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ:


 docopt(doc::AbstractString, argv=ARGS; help=true, version=nothing, options_first=false, exit_on_error=true) 

рдирд╛рдорд┐рдд рддрд░реНрдХ help , version , oprtions_first , exit_on_error рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ рддрд░реНрдХ рдХрдорд╛рдВрдб рдкрд╛рд░реНрд╕рд░ рдХреЗ рд╡реНрдпрд╡рд╣рд╛рд░ рдХреЛ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рддреЗ рд╣реИрдВред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ - рдирд┐рд╖реНрдкрд╛рджрди рдХреЛ рдкреВрд░рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╕рдВрд╕реНрдХрд░рдг рдЕрдиреБрд░реЛрдз рдкрд░, рдорд╛рди version=тАж рд▓реМрдЯрд╛рдПрдВ version=тАж -h рдЕрдиреБрд░реЛрдз рдкрд░ - рдореБрджреНрджрд╛ рдорджрджред options_first рдЙрдкрдпреЛрдЧ рдпрд╣ рдЗрдВрдЧрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдХрд┐ рд╡рд┐рдХрд▓реНрдк рд╕реНрдерд┐рддреАрдп рддрд░реНрдХ рд╕реЗ рдкрд╣рд▓реЗ рд╣реЛрдиреЗ рдЪрд╛рд╣рд┐рдПред


рдЕрдм, рдЖрдЗрдП рдЗрд╕ рдШреЛрд╖рдгрд╛рддреНрдордХ рднрд╛рд╖рд╛ рдФрд░ рдкреНрд░рд╡реЗрд╢ рдорд╛рдиреЛрдВ рдХреЗ рддрд░реНрдХ рдкрд╛рд░реНрд╕рд░ рдХреА рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдкрд░ рдХрд░реАрдм рд╕реЗ рдирдЬрд╝рд░ рдбрд╛рд▓реЗрдВред


рдШреЛрд╖рдгрд╛ рдордирдорд╛рдиреЗ рдврдВрдЧ рд╕реЗ рдкрд╛рда рдХреЗ рд╕рд╛рде рд╢реБрд░реВ рд╣реЛрддреА рд╣реИ, рдЬреЛ рдХрдорд╛рдВрдб рд▓рд╛рдЗрди рдХреЗ рд▓рд┐рдП рдкрд╛рда рдХреЗ рдЕрд▓рд╛рд╡рд╛, рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЗ рдкреНрд░рд▓реЗрдЦрди рдХрд╛ рд╣рд┐рд╕реНрд╕рд╛ рд╣реЛ рд╕рдХрддреА рд╣реИред рд╕реЗрд╡рд╛ рд╢рдмреНрдж "рдпреВрдЬрд╝:" рдЗрд╕ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧ рдкреИрдЯрд░реНрди рдХреА рдШреЛрд╖рдгрд╛ рдХрд░рддрд╛ рд╣реИред


 Usage: naval_fate.jl ship new <name>... naval_fate.jl ship <name> move <x> <y> [--speed=<kn>] 

рддрд░реНрдХ рдХреЗ рд░реВрдк рдореЗрдВ рдШреЛрд╖рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ <name> , <x> , <y> ред рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ рдкрд╣рд▓реЗ рдкреНрд░рд╛рдкреНрдд рдХрд┐рдП рдЧрдП args рд╕рд╛рд╣рдЪрд░реНрдп рд╕рд░рдгреА рдореЗрдВ, рдпреЗ рддрд░реНрдХ рдХреБрдВрдЬрд┐рдпреЛрдВ рдХреЗ рд░реВрдк рдореЗрдВ рдХрд╛рд░реНрдп рдХрд░рддреЗ рд╣реИрдВред рд╣рдордиреЗ рд▓реЙрдиреНрдЪ рдлреЙрд░реНрдо рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ ./docopt.jl ship new Bystriy , рддрд╛рдХрд┐ рд╣рдореЗрдВ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдкреНрд░рд╛рд░рдВрднрд┐рдХ рдорд╛рди ./docopt.jl ship new Bystriy :


  "<name>"=>["Bystriy"], "ship"=>true, "new"=>true, 

Docopt рднрд╛рд╖рд╛ рдХреЗ рдЕрдиреБрд╕рд╛рд░, рд╡рд░реНрдЧ рдмреНрд░реИрдХреЗрдЯ рдореЗрдВ рд╡реИрдХрд▓реНрдкрд┐рдХ рддрддреНрд╡ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП [--speed=<kn>] ред рдЕрдирд┐рд╡рд╛рд░реНрдп рддрддреНрд╡ рдХреЛрд╖реНрдардХ рдореЗрдВ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдПрдХ рдирд┐рд╢реНрдЪрд┐рдд рд╕реНрдерд┐рддрд┐ рдХреЗ рд╕рд╛рдеред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП (set|remove) рдЙрдирдореЗрдВ рд╕реЗ рдПрдХ рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╕реЗрдЯ рдХрд░рддрд╛ рд╣реИред рдпрджрд┐ рддрддреНрд╡ рдХреЛрд╖реНрдардХ рдХреЗ рдмрд┐рдирд╛ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП naval_fate.jl --version , рдпрд╣ рдХрд╣рддрд╛ рд╣реИ рдХрд┐ рдЗрд╕ рд╡рд┐рд╢реЗрд╖ рд░рди рд╡рд┐рдХрд▓реНрдк рдореЗрдВ, --version рдПрдХ рдЖрд╡рд╢реНрдпрдХ рд╡рд┐рдХрд▓реНрдк рд╣реИред


рдЕрдЧрд▓рд╛ рднрд╛рдЧ рд╡рд┐рдХрд▓реНрдк рд╡рд┐рд╡рд░рдг рдЕрдиреБрднрд╛рдЧ рд╣реИред рдпрд╣ рд╢рдмреНрдж "рд╡рд┐рдХрд▓реНрдк:" рд╕реЗ рд╢реБрд░реВ рд╣реЛрддрд╛ рд╣реИ
рдкреНрд░рддреНрдпреЗрдХ рдХреЛ рдПрдХ рдЕрд▓рдЧ рд▓рд╛рдЗрди рдкрд░ рд╡рд┐рдХрд▓реНрдк рдШреЛрд╖рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдкрдВрдХреНрддрд┐ рдХреА рд╢реБрд░реБрдЖрдд рдХреЗ рдмрд╛рдИрдВ рдУрд░ рдкреИрдбрд┐рдВрдЧ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИред рдкреНрд░рддреНрдпреЗрдХ рд╡рд┐рдХрд▓реНрдк рдХреЗ рд▓рд┐рдП, рдЖрдк рдкреВрд░реНрдг рдФрд░ рд╕рдВрдХреНрд╖рд┐рдкреНрдд рд░реВрдк рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рд╕рд╛рде рд╣реА рдЯреВрд▓рдЯрд┐рдк рдореЗрдВ рдкреНрд░рджрд░реНрд╢рд┐рдд рд╡рд┐рдХрд▓реНрдк рдХрд╛ рд╡рд┐рд╡рд░рдгред рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ, рд╡рд┐рдХрд▓реНрдк -h | --help, --version -h | --help, --version рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рдкрд╣рдЪрд╛рдиреЗ рдЬрд╛рддреЗ рд╣реИрдВред рдЙрдирдХреА рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ docopt рдлрдВрдХреНрд╢рди рдХреЗ рд▓рд┐рдП рддрд░реНрдХреЛрдВ рджреНрд╡рд╛рд░рд╛ рджреА рдЧрдИ рд╣реИред рдШреЛрд╖рдгрд╛ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░рдирд╛ рджрд┐рд▓рдЪрд╕реНрдк рд╣реИ:


  --speed=<kn> Speed in knots [default: 10]. 

рдпрд╣рд╛рдВ рдлрд╝реЙрд░реНрдо ...=<kn> рдХреБрдЫ рдорд╛рди рдХреА рдЙрдкрд╕реНрдерд┐рддрд┐ рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рддрд╛ рд╣реИ, рдФрд░ [default: 10] рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдорд╛рди рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рддрд╛ рд╣реИред рд╣рдо рдлрд┐рд░ рд╕реЗ рдорд╛рдиреЛрдВ рдореЗрдВ рдкреНрд░рд╛рдкреНрдд рдорд╛рдиреЛрдВ рдХреА рдУрд░ рдореБрдбрд╝рддреЗ рд╣реИрдВ:


 "--speed"=>"10" 

рдореВрд▓ рдЕрдВрддрд░, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, ArgParse рдкреИрдХреЗрдЬ рд╕реЗ, рдпрд╣ рд╣реИ рдХрд┐ рдорд╛рди рдЯрд╛рдЗрдк рдирд╣реАрдВ рдХрд┐рдП рдЧрдП рд╣реИрдВред рдпрд╣реА рд╣реИ, default: 10 рдорд╛рди рд╕реНрдЯреНрд░рд┐рдВрдЧ "10" рдХреЗ рд░реВрдк рдореЗрдВ рд╕реЗрдЯ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред
рдЕрдиреНрдп рддрд░реНрдХреЛрдВ рдХреЗ рд▓рд┐рдП, рдЬреЛ рддрд░реНрдХреЛрдВ рдХреЛ рдкрд╛рд░реНрд╕ рдХрд░рдиреЗ рдХреЗ рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк рдкреНрд░рд╕реНрддреБрдд рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВ, рдЖрдкрдХреЛ рдЙрдирдХреЗ рдореВрд▓реНрдпреЛрдВ рдкрд░ рдзреНрдпрд╛рди рджреЗрдирд╛ рдЪрд╛рд╣рд┐рдП:


  "remove"=>false, "--help"=>false, "--drifting"=>false, "mine"=>false, "move"=>false, "--version"=>false, "--moored"=>false, "<x>"=>nothing, "shoot"=>false, "set"=>false, "<y>"=>nothing, 

рдпрд╣реА рд╣реИ, рд╕рднреА рдЙрдкрдпреЛрдЧ рдХреЗ рдорд╛рдорд▓реЛрдВ рдХреЗ рд▓рд┐рдП рдбреЙрдХреНрдЯреЙрдк рдШреЛрд╖рдгрд╛ рдореЗрдВ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдЯреЗрдореНрдкрд▓реЗрдЯ рдХреЗ рдмрд┐рд▓реНрдХреБрд▓ рд╕рднреА рддрддреНрд╡ рдореВрд▓ рдирд╛рдореЛрдВ рдХреЗ рд╕рд╛рде рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХреЗ рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк рдкреНрд░рд╕реНрддреБрдд рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВред рдХрдорд╛рдВрдб рд▓рд╛рдЗрди рдкрд░ рдореМрдЬреВрдж рд╕рднреА рд╡реИрдХрд▓реНрдкрд┐рдХ рддрд░реНрдХ рдпрд╣рд╛рдБ рдЭреВрдареЗ рд╣реИрдВред рддрд░реНрдХ <x> , <y> рднреА рд▓реЙрдиреНрдЪ рд▓рд╛рдЗрди рд╕реЗ рдЧрд╛рдпрдм рд╣реИрдВ рдФрд░ рдореВрд▓реНрдп рдХреБрдЫ рднреА рдирд╣реАрдВ рд╣реИред рдЕрдиреНрдп рддрд░реНрдХ рдЬрд┐рдирдХреЗ рд▓рд┐рдП рдкрд╛рд░реНрд╕рд┐рдВрдЧ рдкреИрдЯрд░реНрди рдХрд╛ рдорд┐рд▓рд╛рди рд╣реБрдЖ, рдЙрдиреНрд╣реЗрдВ рд╕рдЪреНрдЪреЗ рдореВрд▓реНрдп рдорд┐рд▓реЗ:


  "ship"=>true, "new"=>true, 

рдФрд░ рд╣рдо рдкрд╣рд▓реЗ рд╣реА рдЯреЗрдореНрдкрд▓реЗрдЯ рдХреЗ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рддрддреНрд╡реЛрдВ рдХреЗ рд▓рд┐рдП рд╡рд┐рд╢рд┐рд╖реНрдЯ рдорд╛рди рдкреНрд░рд╛рдкреНрдд рдХрд░ рдЪреБрдХреЗ рд╣реИрдВ:


  "<name>"=>["Bystriy"], "--speed"=>"10" 

рдкрд╣рд▓рд╛ рдорд╛рди рдХрдорд╛рдВрдб рд▓рд╛рдЗрди рдкрд░ рдПрдХ рддрд░реНрдХ рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрди рдХреЗ рд░реВрдк рдореЗрдВ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рд╕реЗрдЯ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛, рдФрд░ рджреВрд╕рд░рд╛ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдорд╛рди рдХреЗ рд╕рд╛рде рдПрдХ рд╡рд┐рдХрд▓реНрдк рдерд╛ред

рдпрд╣ рднреА рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ рд╡рд░реНрддрдорд╛рди рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЗ рдирд╛рдо рдХреА рдЧрдгрдирд╛ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рдХреА рдЬрд╛ рд╕рдХрддреА рд╣реИред
рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рд╣рдо рджрд░реНрдЬ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:


 doc = """Naval Fate. Usage: $(Base.basename(@__FILE__)) ship new <name>тАж """ 

рдХрдорд╛рдВрдб рд▓рд╛рдЗрди рддрд░реНрдХ рдкрд╛рд░реНрд╕рд░ рдХреЛ рд░рдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдЕрддрд┐рд░рд┐рдХреНрдд рд╕рд┐рдлрд╛рд░рд┐рд╢ рдЗрд╕реЗ рдлрд╝рд╛рдЗрд▓ рдХреА рд╢реБрд░реБрдЖрдд рдореЗрдВ рд░рдЦрдирд╛ рд╣реИред рдлрд┐рд▓рд╣рд╛рд▓ рдЬреВрд▓рд┐рдпрд╛ рдХреА рдПрдХ рдЕрдкреНрд░рд┐рдп рд╡рд┐рд╢реЗрд╖рддрд╛ рдореЙрдбреНрдпреВрд▓ рдХрд╛ рдПрдХ рд▓рдВрдмрд╛ рдХрдиреЗрдХреНрд╢рди рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП using Plots; using DataFrames using Plots; using DataFrames рдХреБрдЫ рд╕реЗрдХрдВрдб рдХреЗ рд▓рд┐рдП рдкреНрд░рддреАрдХреНрд╖рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рднреЗрдЬ рд╕рдХрддреЗ рд╣реИрдВред рдпрд╣ рд╕рд░реНрд╡рд░-рд╕рд╛рдЗрдб, рдПрдХрд▓-рд▓реЛрдб рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЗ рд▓рд┐рдП рдХреЛрдИ рд╕рдорд╕реНрдпрд╛ рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рдЙрди рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЛ рдирд╛рд░рд╛рдЬ рдХрд░реЗрдЧрд╛ рдЬреЛ рдХреЗрд╡рд▓ рдХрдорд╛рдВрдб рдХрдорд╛рдВрдб рддрд░реНрдХ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕рдВрдХреЗрдд рджреЗрдЦрдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВред рдЗрд╕реАрд▓рд┐рдП, рдкрд╣рд▓реЗ рдЖрдкрдХреЛ рдХрдорд╛рдВрдб рд▓рд╛рдЗрди рдХреЗ рддрд░реНрдХреЛрдВ рдХреЛ рдорджрдж рдФрд░ рдЬрд╛рдВрдЪрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рдФрд░ рдЙрд╕рдХреЗ рдмрд╛рдж рд╣реА, рдХрд╛рдо рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдХреЛ рдбрд╛рдЙрдирд▓реЛрдб рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрдЧреЗ рдмрдврд╝реЗрдВред


рдирд┐рд╖реНрдХрд░реНрд╖


рд▓реЗрдЦ рдЬреВрд▓рд┐рдпрд╛ рдореЗрдВ рдкрд╛рд░реНрд╕ рддрд░реНрдХреЛрдВ рдХреЗ рд╕рднреА рддрд░реАрдХреЛрдВ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░рдиреЗ рдХрд╛ рдирд╛рдЯрдХ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред рд╣рд╛рд▓рд╛рдВрдХрд┐, рдорд╛рдирд╛ рдЧрдпрд╛ рд╡рд┐рдХрд▓реНрдк, рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, 3 рд╕рдВрднрд╛рд╡рд┐рдд рд╡рд┐рдХрд▓реНрдкреЛрдВ рдХреЛ рдХрд╡рд░ рдХрд░рддрд╛ рд╣реИред ARGS рд╕рд░рдгреА рдХрд╛ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдореИрдиреБрдЕрд▓ рд╡рд┐рд╢реНрд▓реЗрд╖рдгред рдХрдбрд╝рд╛рдИ рд╕реЗ рдШреЛрд╖рд┐рдд рд▓реЗрдХрд┐рди рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ ArgParse рдореЗрдВ рддрд░реНрдХ рдкрд╛рд░реНрд╕ред рдФрд░ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдШреЛрд╖рдгрд╛рддреНрдордХ, рд╣рд╛рд▓рд╛рдВрдХрд┐ рд╕рдЦреНрдд рдирд╣реАрдВ, рдбреЙрдХреЙрдкреНрдЯ рдХрд╛ рд░реВрдкред рдЙрдкрдпреЛрдЧ рдХреЗ рдорд╛рдорд▓реЗ рдХрд╛ рдЪреБрдирд╛рд╡ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдкрд╛рд░реНрд╕ рддрд░реНрдХреЛрдВ рдХреА рдЬрдЯрд┐рд▓рддрд╛ рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░рддрд╛ рд╣реИред рдбреЙрдХреЙрдкреНрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рд╡рд╛рд▓рд╛ рд╡рд┐рдХрд▓реНрдк рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдореЗрдВ рд╕рдмрд╕реЗ рдЖрд╕рд╛рди рд▓рдЧрддрд╛ рд╣реИ, рд╣рд╛рд▓рд╛рдВрдХрд┐ рдЗрд╕рдХреЗ рд▓рд┐рдП рдкреНрд░рд╛рдкреНрдд рддрд░реНрдХреЛрдВ рдХреЗ рдореВрд▓реНрдпреЛрдВ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕реНрдкрд╖реНрдЯ рдкреНрд░рдХрд╛рд░ рдХреЗ рд░реВрдкрд╛рдВрддрд░рдг рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред рд╣рд╛рд▓рд╛рдБрдХрд┐, рдпрджрд┐ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдлрд╝рд╛рдЗрд▓ рдирд╛рдо рдХреЗ рдЕрд▓рд╛рд╡рд╛ рдХреБрдЫ рднреА рд╕реНрд╡реАрдХрд╛рд░ рдирд╣реАрдВ рдХрд░рддреА рд╣реИ, рддреЛ рд╕рд╛рдорд╛рдиреНрдп println("Run me with file name") рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЙрд╕ рдкрд░ рд╕рд╣рд╛рдпрддрд╛ рдЬрд╛рд░реА рдХрд░рдиреЗ рдХрд╛ рд▓рд╛рдн рдЙрдард╛рдирд╛ рд╕рдВрднрд╡ рд╣реИ, рдФрд░ ARGS рд╕реЗ рд╕реАрдзреЗ рдлрд╝рд╛рдЗрд▓ рдирд╛рдореЛрдВ рдХреЛ рдкрд╛рд░реНрд╕ рдХрд░реЗрдВ рдкрд╣рд▓реЗ рдЦрдВрдб рдореЗрдВред


рд╕рдВрджрд░реНрдн


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


All Articles