Scripting en el Cliente multiplataforma de línea de comandos de Team Foundation Server
¿Le gustaría automatizar tareas, como proteger y desproteger el código fuente? Puede utilizar la automatización externa o interna para realizar el trabajo. Primero, revisemos estos dos modos de automatización. O bien, puede saltar directamente a pros and cons.
Automatización externa
La automatización externa configura otro proceso para invocar la herramienta de línea de comandos tf repetidamente con argumentos totalmente contextuales cada vez. No necesita ninguna sintaxis especial para habilitar este modo. Puede utilizar uno de los procesos externos siguientes para implementar este método:
Shell de UNIX, como sh, ksh, bash o csh
Perl u otro lenguaje de programación que se usa para el Script
Apache Ant u otra herramienta orientada a la compilación
Cualquier otra herramienta que pueda iniciar el programa tf y suministrara argumentos
Automatización interna
La automatización interna configura la herramienta de línea de comandos tf para controlar el proceso de automatización e interpretar un archivo de comandos que se pasa como argumento. Puede invocar la automatización interna proporcionando el símbolo @ seguido inmediatamente por una ruta de acceso local a un archivo de comandos. Cualquier argumento adicional que se especifique en esta línea de comandos estará disponible para los comandos en el archivo de comandos como argumentos posicionales.
Nota
Para procesar la entrada estándar como el archivo de comandos, proporcione el símbolo @ sin el nombre de archivo detrás (tf@). El flujo de entrada se interpreta como texto según la codificación y el juego de caracteres predeterminados de la plataforma.
El archivo de comandos siguiente obtiene la versión especificada de un archivo e imprime información histórica detallada sobre esa versión.
# This line is ignored because it is a comment.
get "-version:%2" -force "%1"
history -format:detailed "-version:%2" "%1"
El archivo de comandos, que se denomina /home/john/get-and-history.tfc, espera dos argumentos posicionales para poderlo ejecutar como muestra el ejemplo siguiente:
tf @/home/john/get-and-history.tfc README.doc C5087
El primer argumento, README.doc, sustituirá a %1 al interpretar cada línea. C5087 se sustituye con %2.
Nota
En el archivo de comandos, ambos argumentos posicionales están entre comillas dobles porque sus valores sustituidos pueden contener espacios (por ejemplo, un nombre de archivo o una especificación de la versión de fecha).
El formato del archivo de comandos puede describirse mediante la notación Extended Backus-Naur Form (EBNF):
command file ::= { line } ;
line ::= comment line | blank line | action line , EOL ;
comment-line ::= "#" | "rem" , { ? any non-EOL character ? } ;
blank line ::= { ? any whitespace character ? };
action line ::= tf command , [ { white space , tf option } ] , [ { white space , tf free argument } ] ;
tf command ::= ? any tf command ?
tf option ::= ? any tf option ? | positional argument ;
tf free argument::= ? any tf free argument ? | positional argument ;
positional argument::= "%" , non-zero digit , [ { digit } ] ;
EOL ::= ? your platform's EOL character or sequence ?
white space ::= { ? any non-EOL whitespace character ? }
digit ::= "0" | "1" | "2" | "3" | "4" | "5" | "6" | "7" | "8" | "9" ;
non-zero digit ::= "1" | "2" | "3" | "4" | "5" | "6" | "7" | "8" | "9" ;
tf command puede ser cualquier comando válido de tf, como get, workfold y workspace.
tf option puede ser cualquier opción válida de tf, como -login, -profile y -format.
tf free argument puede ser cualquier cadena pensada como argumento libre para tf, como una ruta de acceso del servidor y una ruta de acceso local.
positional argument es un marcador de posición de texto que se sustituye desde los argumentos de la línea de comandos de tf externos. El número es un entero positivo que corresponde al índice del argumento de la línea de comandos que desea sustituir, por ejemplo “%1 " y “%2". %1 hace referencia al primer argumento. Puede utilizar argumentos posicionales como opciones o los argumentos libres en cualquier orden después del comando.
Nota
Utilice comillas dobles para encerrar las opciones y los argumentos que contienen espacios. Por ejemplo, use “-version:LRelease 2.1” para un especificador de etiquetas, “$/Inventory/Client Project/main.c” para un argumento libre y “%1 " para un argumento posicional que pueda contener espacios. Solo las comillas dobles indican límites de opción en los archivos de comandos. Las comillas sencillas se interpretan literalmente. Para especificar un símbolo de comillas doble literal en la línea de acción, debe utilizar dos comillas dobles juntas (""). Las reglas del uso de comillas en los archivos de comandos pueden diferir de las reglas que usa el shell porque su shell no analiza las líneas del archivo de comandos.
Ventajas e inconvenientes de los dos métodos
¿Que método debe utilizar, la automatización interna o la externa? Pasemos a las ventajas y los inconvenientes de cada método:
Automatización externa |
Automatización interna |
|
Ventajas |
|
|
Cons |
|
Es menos flexible que la automatización externa. Esta es la razón por la que:
|