English | 简体中文
该存储库包含了《Cairo 编程语言》书籍的源代码,这是对 Cairo 1 编程语言的全面文档。这份文档是您掌握 Cairo 的首选资源,由 Starknet 社区创建和维护。您可以在线阅读这本书,链接在这里。
-
安装 Rust 相关包:
cargo install mdbook mdbook-i18n-helpers mdbook-last-changed
-
安装系统相关依赖包:
- Install gettext for translations, usually available with regular package manager:
sudo apt install gettext
.
- Install gettext for translations, usually available with regular package manager:
-
Clone 仓库.
-
安装 mdbook-cairo for Cairo code blocks
cargo install --path mdbook-cairo
所有的 Markdown 文件必须以英文进行编辑。要在本地以英文工作:
-
使用命令
mdbook serve
开启本地服务,然后访问localhost:3000 to view the book. 您可以使用--open
标志来自动打开浏览器:mdbook serve --open
. -
对书籍进行修改,并刷新浏览器以查看更改。
-
为你的改变提交 PR。
本书面向国际读者群体,旨在逐步翻译成多种语言。
src
目录下的所有文件必须使用英文编写。。 这样可以确保所有翻译文件可以被翻译人员自动生成和更新。
如果要进行翻译,以下是进行翻译的步骤:
-
启动要编辑的语言的本地服务器: 执行
./translations.sh es
。如果没有提供语言参数,脚本将仅从英语中提取翻译内容。 -
打开您感兴趣的翻译文件,例如
po/es.po
。您也可以使用类似 poedit 的编辑器来帮助您完成这个任务。 -
完成后,您应该只对
po/xx.po
文件进行更改。提交更改并提交一个 PR。 PR 标题必须以i18n
开头,以便让维护者知道该 PR 仅涉及翻译的更改。
翻译工作的灵感来自于 Comprehensive Rust repository.
如果您希望在不运行本地服务器的情况下为您的语言启动一个新的翻译,请考虑以下步骤:
- 执行命令
./translations.sh new xx
(替换xx
为你的语言代码)。 该命令可以生成对应语言的 po 文件xx.po
。 - 更新你的
xx.po
文件, 执行命令./translations.sh xx
(替换xx
为你的语言代码), 如前一章节所述。 - 如果
xx.po
已经存在, 则不需要执行该命令。
cairo-listings
工具旨在封装所有 cairo and starknet 插件以便快速验证 Cairo 程序。
首先,您需要将 scarb
添加到您的环境变量中,确保它可以在命令行中被调用:
详细的安装说明请参阅这里 for more details.
要运行 cairo-listings
辅助工具, 请确保您位于存储库的根目录 (与 README.md
同级), 然后运行以下命令:
cargo run --bin cairo-listings
或者,您也可以使用以下命令安装该工具:
cargo install --path cairo-listings
该工具会在指定目录中扫描所有的 *.cairo
文件,并执行以下操作:
对于一个 Starknet 合约:
scarb build
- 如果文件包含测试:
scarb test
Cairo 程序:
- 如果包含
main
方法:scarb cairo-run --available-gas=200000000
- 否则执行,
scarb build
- 如果文件包含测试:
scarb test
scarb fmt -c
要指定要运行的测试,您可以在文件顶部添加以下格式的注释:
// TAG: <tag1>
// TAGS: <tag1>, <tag2>
以下是可用 tags 的列表:
does_not_compile
: 不运行scarb build
does_not_run
: 不运行scarb cairo-run --available-gas=200000000
ignore_fmt
: 不运行scarb fmt
tests_fail
: 不运行scarb test
您可以通过添加相应的 tags 来跳过和忽略特定的测试:
$ cairo-listings --help
Usage: cairo-listings [OPTIONS]
Options:
-p, --path <PATH> The path to explore for *.cairo files [default: ./listings]
-v, --verbose Print more information
-q, --quiet Only print final results
-f, --formats-skip Skip cairo-format checks
-s, --starknet-skip Skip starknet-compile checks
-c, --compile-skip Skip cairo-compile checks
-r, --run-skip Skip cairo-run checks
-t, --test-skip Skip cairo-test checks
--file <FILE> Specify file to check
-h, --help Print help
-V, --version Print version
在 CI 环境中,为了减少输出信息,建议在运行 cairo-listings
时使用 --quiet
标志。
mdbook-cairo 是一个 mdbook 预处理器,仅会移除代码块中的 // TAG
行。