3 个版本

0.20.2 2021年8月28日
0.20.1 2021年5月19日
0.20.0 2019年1月10日

#2815命令行实用工具

GPL-3.0 许可证

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

生态系统

  • Kombucha:YeAST 的简单别名管理器
  • Palombe:让您可以通过不同的进程同步地发送和接收消息
  • Cleopatra:使 YeAST 在当前环境中替代标准解释器

实际案例

这个仓库中可用的 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 来处理 makemake testmake 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 了解我们的行为准则以及向我们提交拉取请求的过程。

作者

还可以查看参与这个项目的 贡献者列表

许可证

本项目采用 GPL 许可证的第三版 - 有关详细信息,请参阅 LICENSE 文件。

依赖项

~1–1.4MB
~14K SLoC