@@ -141,10 +141,12 @@ func (nc *nerdctlCommand) run(cmdName string, args []string) error {
141141 case arg == "--help" :
142142 nerdctlArgs = append (nerdctlArgs , arg )
143143 case arg == "--add-host" :
144- // exact match to --add-host
145- args [i + 1 ], err = resolveIP (args [i + 1 ], nc .logger , nc .ecc )
146- if err != nil {
147- return err
144+ // exact match to --add-host. resolve ip if param passed
145+ if len (args ) > i + 1 {
146+ args [i + 1 ], err = resolveIP (args [i + 1 ], nc .logger , nc .ecc )
147+ if err != nil {
148+ return err
149+ }
148150 }
149151 nerdctlArgs = append (nerdctlArgs , arg )
150152 case strings .HasPrefix (arg , "--add-host" ):
@@ -158,21 +160,33 @@ func (nc *nerdctlCommand) run(cmdName string, args []string) error {
158160 case strings .HasPrefix (arg , "--env-file" ):
159161 // exact match to --env-file
160162 // or arg begins with --env-file
161- shouldSkip , addEnvs , err := handleEnvFile (nc .fs , nc .systemDeps , arg , args [i + 1 ])
162- if err != nil {
163- return err
163+ if len (args ) > i + 1 {
164+ shouldSkip , addEnvs , err := handleEnvFile (nc .fs , nc .systemDeps , arg , args [i + 1 ])
165+ if err != nil {
166+ return err
167+ }
168+ skip = shouldSkip
169+ fileEnvs = append (fileEnvs , addEnvs ... )
170+ } else {
171+ // if --env-file is at the end of the args, its refers to entrypoint command
172+ // which need not be handled
173+ nerdctlArgs = append (nerdctlArgs , arg )
164174 }
165- skip = shouldSkip
166- fileEnvs = append (fileEnvs , addEnvs ... )
167175 case argIsEnv (arg ):
168176 // exact match to either -e or --env
169177 // or arg begins with -e or --env
170178 // -e="<value>", -e"<value>"
171179 // --env="<key>=<value>", --env"<key>=<value>"
172- shouldSkip , addEnv := handleEnv (nc .systemDeps , arg , args [i + 1 ])
173- skip = shouldSkip
174- if addEnv != "" {
175- envs = append (envs , addEnv )
180+ if len (args ) > i + 1 {
181+ shouldSkip , addEnv := handleEnv (nc .systemDeps , arg , args [i + 1 ])
182+ skip = shouldSkip
183+ if addEnv != "" {
184+ envs = append (envs , addEnv )
185+ }
186+ } else {
187+ // if -e or --env is at the end of the args, its refers to entrypoint command
188+ // which need not be handled
189+ nerdctlArgs = append (nerdctlArgs , arg )
176190 }
177191 case shortFlagBoolSet .Has (arg ) || longFlagBoolSet .Has (arg ):
178192 // exact match to a short no argument flag: -?
@@ -195,23 +209,35 @@ func (nc *nerdctlCommand) run(cmdName string, args []string) error {
195209 // or begins with a short arg flag:
196210 // short arg flag concatenated to value: -?"<value>"
197211 // short arg flag equated to value: -?="<value>" or -?=<value>
198- shouldSkip , addKey , addVal := nc .handleFlagArg (arg , args [i + 1 ])
199- skip = shouldSkip
200- if addKey != "" {
201- nerdctlArgs = append (nerdctlArgs , addKey )
202- nerdctlArgs = append (nerdctlArgs , addVal )
212+ if len (args ) > i + 1 {
213+ shouldSkip , addKey , addVal := nc .handleFlagArg (arg , args [i + 1 ])
214+ skip = shouldSkip
215+ if addKey != "" {
216+ nerdctlArgs = append (nerdctlArgs , addKey )
217+ nerdctlArgs = append (nerdctlArgs , addVal )
218+ }
219+ } else {
220+ // no value found for short arg flag
221+ // pass the arg as a nerdctl command argument
222+ nerdctlArgs = append (nerdctlArgs , arg )
203223 }
204224 case strings .HasPrefix (arg , "--" ):
205225 // exact match to a long arg flag: -<long_flag>
206226 // next arg must be the <value>
207227 // or begins with a long arg flag:
208228 // long arg flag concatenated to value: --<long_flag>"<value>"
209229 // long arg flag equated to value: --<long_flag>="<value>" or --<long_flag>=<value>
210- shouldSkip , addKey , addVal := nc .handleFlagArg (arg , args [i + 1 ])
211- skip = shouldSkip
212- if addKey != "" {
213- nerdctlArgs = append (nerdctlArgs , addKey )
214- nerdctlArgs = append (nerdctlArgs , addVal )
230+ if len (args ) > i + 1 {
231+ shouldSkip , addKey , addVal := nc .handleFlagArg (arg , args [i + 1 ])
232+ skip = shouldSkip
233+ if addKey != "" {
234+ nerdctlArgs = append (nerdctlArgs , addKey )
235+ nerdctlArgs = append (nerdctlArgs , addVal )
236+ }
237+ } else {
238+ // if --<long flag> is at the end of the args, its refers to entrypoint command
239+ // which need not be handled
240+ nerdctlArgs = append (nerdctlArgs , arg )
215241 }
216242 default :
217243 // arg other than a flag ("-?","--<long_flag>") or a skipped <flag_value>
0 commit comments