Definir un compilador o ejecutor - AWS Cloud9

AWS Cloud9 ya no está disponible para los nuevos clientes. Los clientes existentes de AWS Cloud9 pueden seguir utilizando el servicio con normalidad. Más información

Definir un compilador o ejecutor

En este tema se muestra cómo definir un compilador o un ejecutor. Antes de definir un compilador o un ejecutor, asegúrese de haber creado un compilador o un ejecutor.

En la pestaña del compilador o ejecutor que se muestra, utilice JSON para definir el ejecutor o compilador. Comience con el siguiente código como plantilla.

Para un compilador, comience con este código.

{ "cmd": [], "info": "", "env": {}, "selector": "" }

Para un ejecutor, comience con este código.

{ "cmd": [], "script": "", "working_dir": "", "info": "", "env": {}, "selector": "", "debugger": "", "debugport": "" }

En el código anterior:

  • cmd: representa una lista separada por comas de cadenas para AWS Cloud9 que se ejecutan como un único comando.

    Cuando AWS Cloud9 ejecuta este comando, cada cadena de la lista se separará por un solo espacio. Por ejemplo, AWS Cloud9 ejecutará "cmd": [ "ls", "$file", "$args"] como ls $file $args, donde AWS Cloud9 reemplazará a $file por la ruta completa del archivo actual y $args por cualquier argumento introducido después del nombre de archivo. Para obtener más información, consulte la lista de variables admitidas más adelante en esta sección.

  • script: representa un script bash (que también puede especificarse como una matriz de líneas si es necesario para facilitar la lectura) que ejecuta el ejecutor en el terminal.

  • working_dir: representa el directorio desde el que se ejecutará el ejecutor.

  • info: representa cualquier cadena de texto que desee mostrar al usuario al principio de la ejecución. Esta cadena puede contener variables, por ejemplo Running $project_path$file_name..., donde AWS Cloud9 reemplazará $project_path por la ruta del directorio del archivo actual y $file_name por la parte del nombre del archivo actual. Consulte la lista de variables admitidas más adelante en esta sección.

  • env: representa cualquier matriz de argumentos de línea de comandos que utiliza AWS Cloud9, por ejemplo:

    "env": { "LANG": "en_US.UTF-8", "SHLVL": "1" }
  • selector: representa cualquier expresión regular que desea que use AWS Cloud9 para identificar los nombres de archivo que se aplican a este ejecutor. Por ejemplo, puede especificar source.py para los archivos de Python.

  • debugger: representa el nombre de cualquier depurador disponible que desea que utilice AWS Cloud9 que sea compatible con este ejecutor. Por ejemplo, podría especificar v8 para el depurador de V8.

  • debugport: representa el número de puerto que desea que utilice AWS Cloud9 durante la depuración. Por ejemplo, podría especificar 15454 para el número de puerto que se va a utilizar.

En la siguiente tabla, se muestran las variables que se pueden utilizar.

Variable Descripción

$file_path

El directorio del archivo actual, por ejemplo, /home/ec2-user/environment o /home/ubuntu/environment.

$file

La ruta completa al archivo actual, por ejemplo, /home/ec2-user/environment/hello.py o /home/ubuntu/environment/hello.py.

$args

Cualquier argumento introducido después el nombre de archivo, por ejemplo, "5" "9".

$file_name

La parte del nombre del archivo actual, por ejemplo, hello.py.

$file_extension

La extensión del archivo actual, por ejemplo, py.

$file_base_name

El nombre del archivo actual sin la extensión de archivo, por ejemplo, hello.

$packages

La ruta completa a la carpeta de los paquetes.

$project

La ruta completa a la carpeta del proyecto actual.

$project_path

El directorio del archivo del proyecto actual, por ejemplo, /home/ec2-user/environment/ o /home/ubuntu/environment/.

$project_name

El nombre del archivo del proyecto actual sin la extensión de archivo, por ejemplo, my-demo-environment.

$project_extension

La extensión del archivo del proyecto actual.

$project_base_name

El nombre del archivo del proyecto actual sin la extensión.

$hostname

El nombre de anfitrión del entorno, como, por ejemplo, 192.0.2.0.

$hostname_path

El nombre de anfitrión del entorno con la ruta relativa al archivo del proyecto, como, por ejemplo, https://192.0.2.0/hello.js.

$url

La URL completa para acceder al entorno, como, por ejemplo, https://192.0.2.0..

$port

El puerto asignado al entorno, como, por ejemplo, 8080.

$ip

La dirección IP para ejecutar un proceso en el entorno, como, por ejemplo, 0.0.0.0.

Por ejemplo, el siguiente archivo del compilador denominado G++.build define un compilador de GCC que ejecuta el comando g++ con la opción -o para compilar el archivo actual (por ejemplo, hello.cpp) en un módulo de objetos. A continuación, vincula el módulo de objetos a un programa con el mismo nombre que el archivo actual (por ejemplo, hello). Aquí, el comando equivalente es g++ -o hello hello.cpp.

{ "cmd": [ "g++", "-o", "$file_base_name", "$file_name" ], "info": "Compiling $file_name and linking to $file_base_name...", "selector": "source.cpp" }

Como otro ejemplo, el siguiente archivo del ejecutor denominado Python.run define un ejecutor que utiliza Python para ejecutar el archivo actual con los argumentos que se han proporcionado. Por ejemplo, si el nombre del archivo actual es hello.py y se han proporcionado los argumentos 5 y 9 , el comando equivalente es python hello.py 5 9.

{ "cmd": [ "python", "$file_name", "$args" ], "info": "Running $file_name...", "selector": "source.py" }

Por último, el siguiente archivo del ejecutor denominado Print Run Variables.run define un ejecutor que simplemente genera el valor de cada variable disponible y, a continuación, se detiene.

{ "info": "file_path = $file_path, file = $file, args = $args, file_name = $file_name, file_extension = $file_extension, file_base_name = $file_base_name, packages = $packages, project = $project, project_path = $project_path, project_name = $project_name, project_extension = $project_extension, project_base_name = $project_base_name, hostname = $hostname, hostname_path = $hostname_path, url = $url, port = $port, ip = $ip" }