#run-command #projects #command-line #command-line-tool #automate #manage #script

程序 ftcli

一个用于管理、测试和运行您42个项目的命令行工具

5个版本

0.1.4 2023年5月18日
0.1.3 2023年5月15日
0.1.2 2023年5月14日
0.1.1 2023年5月12日
0.1.0 2023年5月12日

#1896命令行工具

Download history 5/week @ 2024-03-10 22/week @ 2024-03-31 13/week @ 2024-04-07 2/week @ 2024-04-14

每月 61 次下载

MIT 协议

21KB
468

        :::     ::::::::             ::::::::  :::        :::::::::::
      :+:     :+:    :+:           :+:    :+: :+:            :+:
    +:+ +:+        +:+            +:+        +:+            +:+
  +#+  +:+      +#+              +#+        +#+            +#+
+#+#+#+#+#+  +#+                +#+        +#+            +#+
     #+#   #+#                 #+#    #+# #+#            #+#
    ###  ##########            ########  ########## ###########

这是一个简单的 CLI 工具,用于管理、测试和运行您的42个项目。

安装

需求

安装

从 GitHub

cargo install --git https://github.com/herbievine/42-cli.git

从 crates.io

cargo install ftcli

设置别名

我们建议将此行添加到您的 .bashrc.zshrc,以持久保存 ft 别名。

alias ft="ftcli"

用法

当您的项目中有配置文件时,42 CLI 将尝试运行您的命令。这些命令有一些特殊的属性,例如安装 MLX 和在特定目录中执行命令。

配置文件

您需要在每个项目中创建一个 42-cli.toml 文件。此文件看起来可能如下所示

# The name of the project
name = "push_swap"

[scripts]
build = { cmd = "make" }
run = [
  { cmd = "./push_swap 8 2 -2 0 2147483647" },
  { cmd = "./push_swap invalid :(" },
]

示例

在这里,它在 so_long 项目中使用。每个脚本由一个对象定义(除了 runtest,它们包含一个对象数组),具有特殊的键来自动化您的开发。

name = "so_long"

[scripts]
build = { cmd = "make", mlx = true, mlx_dir = "minilibx" }
run = [{ cmd = "./so_long maps/small.ber" }]
clean = { cmd = "make fclean", mlx = true, mlx_dir = "minilibx" }
lint = { cmd = "norminette ." }

这里有4个脚本

  • build,它将在安装 MLX 到 minilibx 目录后运行 make
  • run,它将在运行 build(如果存在)后执行,并运行 ./so_long maps/small.berclean 也可以在最后运行。请参阅下面的API参考)
  • clean,它将运行 make fclean,然后删除 MLX。
  • lint,它简单地运行 norminette 在您的代码上。

这里还有一个使用 ft_printf 的示例,其中包含一个测试套件以执行

name = "ft_printf"

[scripts]
build = { cmd = "make" }
test = [
	{ cmd = "git clone https://github.com/Tripouille/printfTester.git tester" },
	{ cmd = "make m", dir = "tester" },
	{ cmd = "rm -rf tester" }
]
clean = { cmd = "make fclean" }
lint = { cmd = "norminette ." }

在这个示例中,您会注意到有一个 test 脚本,它按顺序执行定义的脚本。该 test 脚本将执行 build 脚本,并在完成后(只有当它们被定义时)运行 clean 脚本。

CI/CD 中的使用

如果您想自动化部署,或者简单地在单个命令中运行您每个项目的命令,您可以在目录的头部创建一个配置文件,如下所示

42/
├─ libft/
│  ├─ 42-cli.toml
├─ ft_printf/
│  ├─ 42-cli.toml
├─ get_next_line/
│  ├─ 42-cli.toml
├─ 42-cli.toml

42-cli.toml 文件应包含一个名为 projects 的键,其中包含您定义的所有项目作为字符串。

name = "42"
projects = [
	"libft",
	"ft_printf",
	"get_next_line"
]

# Leave this empty
[scripts]

42 CLI 将尝试在每个定义的项目中运行您的命令,如果不存在,则将其跳过。

注意:不能以 root 权限运行 run 命令。

API 参考

帮助

显示帮助菜单。

ft help

构建

使用在 42-cli.toml 文件中定义的 build 脚本构建您的项目。

ft build

选项

  • -s, --silent:不打印构建脚本的输出。
  • -h, --help:打印帮助信息。

运行

使用在 42-cli.toml 文件中定义的命令运行您的项目。如果定义了,它将首先运行 build 脚本。

ft run

选项

  • -s, --silent:不打印运行脚本的输出。
  • -c, --clean:运行在 42-cli.toml 文件中定义的清理脚本。
  • -h, --help:打印帮助信息。

测试

运行在 42-cli.toml 文件中定义的测试脚本。如果定义了,它将首先运行 build 脚本,并在测试完成后(即使失败)运行 clean 脚本。

fourtytwo-cli test

选项

  • -s, --silent:不打印测试脚本的输出。
  • -h, --help:打印帮助信息。

清理

运行在 42-cli.toml 文件中定义的清理脚本。

fourtytwo-cli clean

选项

  • -s, --silent:不打印清理脚本的输出。
  • -h, --help:打印帮助信息。

代码风格检查

运行在 42-cli.toml 文件中定义的代码风格检查脚本。

fourtytwo-cli lint

选项

  • -s, --silent:不打印代码风格检查脚本的输出。
  • -h, --help:打印帮助信息。

支持/贡献

如果您发现了一个错误或有一个功能请求,请创建一个问题。如果您想做出贡献,请创建一个 pull request。

依赖项

~2–12MB
~98K SLoC