3 个版本
0.20.2 | 2021年8月28日 |
---|---|
0.20.1 | 2021年5月19日 |
0.20.0 | 2019年1月10日 |
#2815 在 命令行实用工具
27KB
163 行
包含 (autotools 混淆代码, 1KB) configure
YeAST
另一个 Shell 小技巧
这是什么?
YeAST 是 bourne shell shebang 语法 的扩展。
YeAST 通过邀请用户在脚本和软件中使用 UNIX 系统的特性,旨在解决互操作性、并行编程、快速原型设计和渐进式重构等问题,使构建更加 KISS。
您可以通过以下方式了解更多信息:
快速运行
以下说明将帮助您在本地机器上获得酵母的最新稳定版本,用于标准使用目的。
二进制安装
在 macOS 上使用 brew
您可以使用我们的 Homebrew 自定义 Tap 在 macOS 上安装 YeAST
brew install yvan-sraka/YeAST/yeast
在其他 UNIX-like 系统上使用安装脚本
在终端中运行以下行,然后按照屏幕上的说明操作
curl https://raw.githubusercontent.com/yvan-sraka/YeAST/master/install.sh -sSf | sh
如果您想知道前面的命令做了什么,不要犹豫去检查脚本:它运行了“入门”部分的全部指令。
引导
为了使脚本能够轻松工作,您可以在文件的开始处添加这个小技巧
#! /bin/sh
#! @ignore
if ! [ -x "$(command -v yeast)" ]; then
curl "https://raw.githubusercontent.com/yvan-sraka/YeAST/master/install.sh" -sSf | sh
fi
yeast "$0"
exit
编辑器集成
您现在已经在您的机器上安装了 YeAST!接下来可以做的事情是获取您最喜欢的代码编辑器的语法支持扩展
入门
以下说明将帮助您在本地机器上获取项目的副本,并用于开发和测试目的。
先决条件
获取稳定的 Rust 工具链
curl https://sh.rustup.rs -sSf | sh
构建和运行
git clone [email protected]:yvan-sraka/YeAST.git
cd YeAST
cargo run basic_example.yst
生态系统
实际案例
这个仓库中可用的 basic_example 很有趣,可以让你对 YeAST 有一个大致的了解!但为了理解这个工具的目的,我们将通过受 真实世界 启发的例子来学习,主要来自我的研究领域:“生物信息学和建模”。
YeAST 在解释器外部的工作方式类似于 cat
#! /usr/bin/env yeast
This text will be printed on standard output!
Besides we experiment with a Python code we expect to say "Hello World":
#! python3
print("Hello, World!")
#!
Enjoy this nice way of writing code in notebook style.
默认情况下提供多线程支持
#! /usr/bin/env yeast
Here we try to fold 3 different sequences, so we do it in parallel by
allocating 3 threads, there is no additional syntax needed:
#! python3 folding.py
;LCBO - Prolactin precursor - Bovine
; a sample sequence in FASTA format
MDSKGSSQKGSRLLLLLVVSNLLLCQGVVSTPVCPNGPGNCQVSLRDLFDRAVMVSHYIHDLSS
EMFNEFDKRYAQGKGFITMALNSCHTSSLPTPEDKEQAQQTHHEVLMSLILGLLRSWNDPLYHL
VTEVRGMKGAPDAILSRAIEIEEENKRLLEGMEMIFGQVIPGAKETEPYPVWSGLPSLQTKDED
ARYSAFYNLLHCLRRDSSKIDTYLKLLNCRIIYNNNC*
!#
Shebang in YeAST could be any shell command that's accepting as last argument a
given file, here we use the syntax to call our external script `folding.py`.
#! python3 folding.py
>MCHU - Calmodulin - Human, rabbit, bovine, rat, and chicken
ADQLTEEQIAEFKEAFSLFDKDGDGTITTKELGTVMRSLGQNPTEAELQDMINEVDADGNGTID
FPEFLTMMARKMKDTDSEEEIREAFRVFDKDGNGYISAAELRHVMTNLGEKLTDEEVDEMIREA
DIDGDGQVNYEEFVQMMTAK*
!#
Bonus: the output of this multithreading computation will be displayed the right
order as soon that the information is available!
#! python3 folding.py
>gi|5524211|gb|AAD44166.1| cytochrome b [Elephas maximus maximus]
LCLYTHIGRNIYYGSYLYSETWNTGIMLLLITMATAFMGYVLPWGQMSFWGATVITNLFSAIPYIGTNLV
EWIWGGFSVDKATLNRFFAFHFILPFTMVALAGVHLTFLHETGSNNPLGLTSDSDKIPFHPYYTIKDFLG
LLILILLLLLLALLSPDMLGDPDNHMPADPLNTPLHIKPEWYFLFAYAILRSVPNKLGGVLALFLSIVIL
GLMPFLHTSKHRSMMLRPLSQALFWTLTMDLLTLTWIGSQPVEYPYTIIGQMASILYFSIILAFLPIAGX
IENY
!#
路线图
- 创建一个 Makefile 来处理
make
、make test
和make install
指令。 - 使用 Travis CI 验证构建。
- 使用 Buffer 逐行读取输入文件。
- 使用 clap.rs 来增强命令行交互。
- 允许子脚本来读取命令行参数,使用
$0
、$1
等 ... - ... 以及
$*
来获取所有输入参数。 - 正确处理脚本错误,并在
=1|full
模式下显示BACKTRACE
- 让使用
#! /usr/bin/env yeast
不会因为自调用无限循环而失败。 - 修复脚本中内联 shell 命令的规则。
- 允许用户像在交互式 shell 中一样编写多行命令。
- 添加大量输入/输出测试脚本。
- 通过摆脱 shell 命令输出的等待锁来提供真正的多线程支持!
- 编写一个美丽且全面的
man
页面。 - 创建一个安装脚本以处理单指令安装。
- 为大多数 UNIX 发行版创建软件包。
- 在这个仓库的
gh-page
分支上托管一个美丽的着陆页面。 - 添加 Windows 支持(使用
cmd
而不是sh
,并使用 Windowsnamedpipes 而不是mkfifo
)。 - 为每种语言创建一个小型库,以统一在进程间共享序列化数据时使用命名管道的使用。
- 通过向 YeAST 的命令启动的
PATH
中添加特殊环境来提供一组别名。 - 添加一个简单的脚本到路径中,通过运行
git pull
来更新别名。 - 提供 VSCode 中的语法着色插件。
- 允许用户通过设置
YEAST_CONTEXT
环境变量来定义顶级解释器。
贡献
请阅读 CONTRIBUTING.md 了解我们的行为准则以及向我们提交拉取请求的过程。
作者
- Yvan Sraka - 提出了原始想法
- Mattia Primavera - 提供了持续的积极反馈,并且是第一个测试者
还可以查看参与这个项目的 贡献者列表。
许可证
本项目采用 GPL 许可证的第三版 - 有关详细信息,请参阅 LICENSE 文件。
依赖项
~1–1.4MB
~14K SLoC