定义生成器或运行程序 - AWS Cloud9

AWS Cloud9 不再向新客户提供。 AWS Cloud9 的现有客户可以继续正常使用该服务。了解更多

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

定义生成器或运行程序

本主题说明如何定义生成器或运行程序。定义生成器或运行程序之前,请确保已创建生成器或运行程序

在显示的生成器或运行程序选项卡上,使用 JSON 定义运行程序或生成器。使用以下代码开头的模板。

对于生成器,使用以下代码开头。

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

对于运行程序,使用以下代码开头。

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

在以上代码中:

  • cmd:表示要作为单个命令运行的 AWS Cloud9 以逗号分隔的字符串列表。

    AWS Cloud9 运行此命令时,列表中的每个字符串将用一个空格分隔。例如, AWS Cloud9 将$file以 a "cmd": [ "ls", "$file", "$args"] s 运行ls $file $args, AWS Cloud9 where 将替换为当前文件的完整路径以及在$args文件名后输入的任何参数。有关更多信息,请参阅本节后面所支持变量的列表。

  • script:代表运行程序在终端执行的 bash 脚本 (也可以根据需要,将其指定为行阵列以保证可读性)。

  • working_dir:代表运行程序将从中运行的目录。

  • info:代表在开始运行时,要向用户显示的任何文本字符串。此字符串可以包含变量Running $project_path$file_name...,例如,其中 AWS Cloud9 将$project_path替换为当前文件的目录路径和$file_name当前文件的名称部分。请参阅本节后面所支持变量的列表。

  • env: 表示 AWS Cloud9 要使用的任何命令行参数数组,例如:

    "env": { "LANG": "en_US.UTF-8", "SHLVL": "1" }
  • selector: 表示您 AWS Cloud9 要用来标识适用于此运行器的文件名的任何正则表达式。例如,您可以为 Python 文件指定 source.py

  • debugger: 表示您 AWS Cloud9 要使用的与该运行器兼容的任何可用调试器的名称。例如,您可以为 V8 调试程序指定 v8

  • debugport:表示调试期间 AWS Cloud9 要使用的端口号。例如,您可以指定 15454 作为要使用的端口号。

下表给出您可以使用的变量。

变量 描述

$file_path

当前文件的目录,例如,/home/ec2-user/environment/home/ubuntu/environment

$file

当前文件的完整路径,例如,/home/ec2-user/environment/hello.py/home/ubuntu/environment/hello.py

$args

在文件名之后输入的任何参数,例如,"5" "9"

$file_name

当前文件的名称部分,例如,hello.py

$file_extension

当前文件的扩展名,例如,py

$file_base_name

当前文件的名称(不带扩展名),例如,hello

$packages

程序包文件夹的完整路径。

$project

当前项目文件夹的完整路径。

$project_path

当前项目文件的目录,例如,/home/ec2-user/environment//home/ubuntu/environment/

$project_name

当前项目文件的名称(不带扩展名),例如,my-demo-environment

$project_extension

当前项目文件的扩展名。

$project_base_name

当前项目文件的名称(不带扩展名)。

$hostname

环境的主机名,例如,192.0.2.0

$hostname_path

环境的主机名,包含指向项目文件的相对路径,例如,https://192.0.2.0/hello.js

$url

用于访问环境的完整 URL,例如,https://192.0.2.0.

$port

分配给环境的端口,例如,8080

$ip

为环境运行进程的 IP 地址,例如,0.0.0.0

举例来说,名为 G++.build 的以下生成器文件为 GCC 定义一个生成器,它运行 g++ 命令以及 -o 选项以将当前文件(例如 hello.cpp)编译到对象模块中。然后,它将对象模块链接到与当前文件使用相同名称(例如,hello)的程序中。以下命令具有等效作用: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" }

再举一个例子,名为 Python.run 的以下运行程序文件定义一个运行程序,它使用 Python 以及提供的所有参数运行当前文件。例如,如果当前文件名为 hello.py 且提供了 59 参数,则等效命令是 python hello.py 5 9

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

最后,名为 Print Run Variables.run 的以下运行程序定义一个运行程序,它只是输出每个可用变量的值,然后就停止。

{ "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" }