Flutter自动化控制插件autobot的使用
Flutter自动化控制插件autobot的使用
Autobot 是一个命令行模板引擎,用于自动化标准化和重复性操作,例如创建具有特定文件夹结构的新项目,或根据预定义的方案创建文件和类以确保符合架构规范。Autobot 还可用于通过在本地和 CI 中创建构建配置来配置项目。
安装
步骤 1:
安装 Dart,按照以下说明进行操作:
$ dart pub global activate autobot
步骤 2:
检查 autobot 版本以确认是否成功安装:
$ autobot version
配置
Autobot 需要一个 .autobot_config.yaml
文件。可以通过以下命令创建本地或全局配置文件:
创建本地配置文件(当前工作目录):
$ autobot init
在指定路径创建本地配置文件:
$ autobot init -p subfolder/subsubfolder/
创建全局配置文件(用户主目录):
$ autobot init -g
以下是一个包含所有可用配置的 .autobot_config.yaml
示例:
config:
taskDir: some/relative_path/to_tasks_directory/
任务
运行 autobot 任务的命令如下:
# 假设 taskDir 中存在 my_task.yaml
$ autobot run --task my_task
# 使用 -t 简写快捷方式
也可以省略 run --task
:
$ autobot my_task
Autobot 任务是描述需要执行的操作的 YAML 文件。
通过使用 :
作为前缀传递标志给任务:
$ autobot my_task:first_flag:second_flag
Autobot 将标志分配给以下模式的键:flag<index>
。这意味着第一个标志将被分配到 flag1
,第二个标志将被分配到 flag2
,依此类推。
可以为任务添加元数据,如名称和描述:
meta:
name: 我的任务
description: 这是我的 autobot 任务
使用 steps
来定义实际的工作:
meta:
name: 我的任务
description: 这是我的 autobot 任务
steps:
- read:
file: some/path/to/file.yaml
- ask:
key: name
prompt: 你叫什么名字?
- ask:
key: age
prompt: 你多大了?
- write:
file: some/path/output_file.txt
content: 我的名字是 {{name}},我 {{age}} 岁。
可用步骤
检查所有可用步骤。请注意,除了 vars
外的所有步骤字段都可以作为动态自定义的 mustache 模板。有关更多详细信息,请查看示例。
ask
请求用户输入并将该输入分配给键:
- ask:
key: 输入的键名
prompt: 提示文字
command
运行 shell 命令:
- command:
run: 要运行的 shell 命令
javascript
运行 JavaScript(注意:需要在命令行工具中安装 node):
- javascript:
run: 要运行的 JavaScript 代码
read
读取 YAML 文件。数据可以在其他步骤(如 write
或 javascript
)中使用:
- read:
file: YAML 文件路径
runTask
运行子任务:
- runTask:
file: 位于 .autobot_config.yaml 的 taskDir 中的任务文件名
vars
定义一些数据,可以在其他步骤(如 write
或 javascript
)中使用:
- vars:
key: 值
dataArray: [a, b, c]
dataMap:
key: 值
key2: 值2
otherDataArray:
- a
- b
- c
someText: |
Lorem ipsum...
write
写入文件:
- write:
file: 文件路径
enabled: 是否启用写入(true/false)
writeMethod: 文件写入方式(默认为 keepExistingFile)
extendAt: 扩展位置(top/bottom/custom regex)
content: 文件内容
环境
Autobot 自动读取所有环境变量并将其提供给所有步骤。这非常有用,如果你想让 autobot 使用 CI 中的变量或将 autobot 集成到现有的流程或 CLI 命令中。
Autobot 和 CI
由于 CI 不支持交互式脚本,autobot
提供了通过参数设置输入值的功能,使用 -i
或 --input
:
$ autobot run --task some_autobot_task --input userName=somename,userAge=23
这将跳过所有已设置值的交互式命令行提示。
示例
JavaScript 示例
steps:
- ask:
key: userName
prompt: 你的名字是什么?
- ask:
key: userAge
prompt: 你多大了?
- javascript:
run: |
// 访问 userName 的值
var userName = autobot.variables.userName;
// 如果 userName 为空,则设置默认值
if (!userName || userName.length === 0) {
autobot.variables.userName = 'Some fallback name';
}
// 定义一个新的变量
autobot.variables.varFormJs = 'Hello!';
- write:
file: some/relative/path.txt
content: Hi {{userName}}
- write:
file: /some/non_relative/path.txt
content: |
Hi {{userName}},
是不是真的你 {{userAge}} 岁?
这是从 JavaScript 获取的值: {{varFormJs}}
此任务会询问用户的姓名和年龄,并创建两个文件:
- 第一个文件为
$pwd/some/relative/path.txt
,内容如下:Hi Peter
- 第二个文件为
/some/non_relative/path.txt
,内容如下:Hi Peter, 是不是真的你 30 岁? 这是从 JavaScript 获取的值: Hello!
Read 示例
假设机器上有一个名为 task_data.yaml
的 YAML 文件,内容如下:
key1: value1
key2: value2
varMap:
mapKey1: mapValue1
mapKey2: mapValue2
varList:
- key: a
- key: b
- key: c
任务如下:
steps:
- read:
file: task_data.yaml
- write:
file: output.txt
content: |
Pairs: {{key1}}, {{key2}}
Map pairs: {{varMap.mapKey1}} {{varMap.mapKey2}}
List:
{{#varList}}
-> {{key}} <-
{{/varList}}
此任务将读取 task_data.yaml
并生成以下文件内容:
Pairs: value1, value2
Map pairs: mapValue1 mapValue2
List:
-> a <-
-> b <-
-> c <-
更多关于Flutter自动化控制插件autobot的使用的实战教程也可以访问 https://www.itying.com/category-92-b0.html