code: def parse_shutitfile_args(args_str):
  	
  	ret = []
  	if args_str == '':
  		return ret
  	if args_str[0] == '[' and args_str[-1] == ']':
  		ret = eval(args_str)
  		assert isinstance(ret, list)
  	else:
  		ret = args_str.split()
  		# if all the items have a = in them, then return a dict of nv pairs
  	nv_pairs = True
  	for item in ret:
  		if item.find('=') < 0:
  			nv_pairs = False
  	if nv_pairs:
  		d = {}
  		for item in ret:
  			item_nv = item.split('=')
  			d.update({item_nv[0]:item_nv[1]})
  		ret = d
  	return ret
docs: Parse shutitfile args (eg in the line 'RUN some args', the passed-in args_str would be 'some args').
  	If the string is bounded by square brackets, then it's treated in the form: ['arg1','arg2'], and the returned list looks the same.
  	If the string composed entirely of name-value pairs (eg RUN a=b c=d) then it's returned as a dict (eg {'a':'b','c':'d'}).
  	If what's passed-in is of the form: "COMMAND ['a=b','c=d']" then a dict is also returned.'
  	Also eg: ["asd and space=value","asd 2=asdgasdg"]