mercurial/windows.py
changeset 38627 93ed193bc03e
parent 38601 af8d8513d7de
child 38724 02b5b5c1bba8
equal deleted inserted replaced
38626:5957fdd1d5f0 38627:93ed193bc03e
   267     ...               e)
   267     ...               e)
   268     'cmd %var1% %var2% %var3% $missing ${missing} %missing%'
   268     'cmd %var1% %var2% %var3% $missing ${missing} %missing%'
   269     >>> # Single quote prevents expansion, as does \$ escaping
   269     >>> # Single quote prevents expansion, as does \$ escaping
   270     >>> shelltocmdexe(b"cmd '$var1 ${var2} %var3%' \$var1 \${var2} \\", e)
   270     >>> shelltocmdexe(b"cmd '$var1 ${var2} %var3%' \$var1 \${var2} \\", e)
   271     "cmd '$var1 ${var2} %var3%' $var1 ${var2} \\"
   271     "cmd '$var1 ${var2} %var3%' $var1 ${var2} \\"
   272     >>> # $$ -> $, %% is not special, but can be the end and start of variables
   272     >>> # $$ is not special. %% is not special either, but can be the end and
       
   273     >>> # start of consecutive variables
   273     >>> shelltocmdexe(b"cmd $$ %% %var1%%var2%", e)
   274     >>> shelltocmdexe(b"cmd $$ %% %var1%%var2%", e)
   274     'cmd $ %% %var1%%var2%'
   275     'cmd $$ %% %var1%%var2%'
   275     >>> # No double substitution
   276     >>> # No double substitution
   276     >>> shelltocmdexe(b"$var1 %var1%", {b'var1': b'%var2%', b'var2': b'boom'})
   277     >>> shelltocmdexe(b"$var1 %var1%", {b'var1': b'%var2%', b'var2': b'boom'})
   277     '%var1% %var1%'
   278     '%var1% %var1%'
   278     """
   279     """
   279     if b'$' not in path:
   280     if b'$' not in path:
   304                 res += b'%' + path
   305                 res += b'%' + path
   305                 index = pathlen - 1
   306                 index = pathlen - 1
   306             else:
   307             else:
   307                 var = path[:index]
   308                 var = path[:index]
   308                 res += b'%' + var + b'%'
   309                 res += b'%' + var + b'%'
   309         elif c == b'$':  # variable or '$$'
   310         elif c == b'$':  # variable
   310             if path[index + 1:index + 2] == b'$':
   311             if path[index + 1:index + 2] == b'{':
   311                 res += c
       
   312                 index += 1
       
   313             elif path[index + 1:index + 2] == b'{':
       
   314                 path = path[index + 2:]
   312                 path = path[index + 2:]
   315                 pathlen = len(path)
   313                 pathlen = len(path)
   316                 try:
   314                 try:
   317                     index = path.index(b'}')
   315                     index = path.index(b'}')
   318                     var = path[:index]
   316                     var = path[:index]