• Stars
    star
    101
  • Rank 338,166 (Top 7 %)
  • Language
    Rust
  • License
    MIT License
  • Created over 3 years ago
  • Updated almost 2 years ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

A tool crate to quickly build rust command line application.

Falsework

https://img.shields.io/badge/falsework-Rust%20CLI-brightgreen Go codecov https://img.shields.io/github/repo-size/auula/falsework https://img.shields.io/crates/v/falsework License

A tool crate to quickly build rust command line application.

导入依赖

在你的项目中添加依赖如下:

[dependencies]
falsework = "0.1.0"

快速构建

use std::error::Error;
use falsework::{app, cmd};

fn main() {
    
    // 通过falsework创建一个骨架
    let mut app = falsework::app::new();
    
    
    // 应用元数据信息
    app.name("calculator")
        .author("Leon Ding <[email protected]>")
        .version("0.0.1")
        .description("A calculator that only supports addition.");

    // 构建命令行项
    let mut command = cmd::CommandItem {
        // run add命令所对应命令行逻辑代码
        run: |ctx| -> Result<(), Box<dyn Error>> {
            // 通过上下文获取flag绑定的数据
            let x = ctx.value_of("--x").parse::<i32>().unwrap();
            let y = ctx.value_of("--y").parse::<i32>().unwrap();
            println!("{} + {} = {}", x, y, x + y);
            // 如果处理发生了错误则调用 cmd::err_msg 会优雅的退出
            // Err(cmd::err_msg("Application produce error!"));
            Ok(())
        },
        // 命令帮助信息
        long: "这是一个加法计算程序需要两个flag参数 --x --y",
        // 命令介绍
        short: "加法计算",
        // 通过add激活命令
        r#use: "add",
    }.build();
    
    // 给add命令绑定flag
    command.bound_flag("--x", "加数");
    command.bound_flag("--y", "被加数");
    
    // 往app里面添加一个命令集
    app.add_cmd(command);
    
    // 最后run 程序开始监听命令行输入
    app.run();
}

上面这个例子运行起来结果:

$: ./calculator add --x=10 --y=10
10 + 10 = 20

到此为止你就快速构建一个命令行计算器了,你只需要写你核心逻辑,其他操作falsework帮助你完成。

  1. 例如如果我不记得了命令了,只记得一个单词或者字母,程序会帮助你修复:
$: ./calculator a

You need this command ?
	add
a : The corresponding command set was not found!
  1. 可以看到程序提示你有一个对应的add命令可以使用,如果不知道add有啥参数,在后面 加上--help即可获得帮助信息:
$: ./calculator add --help

Help:
  这是一个加法计算程序需要两个flag参数 --x --y

Usage:
  calculator add [flags]

Flags:
  --y, 被加数
  --x, 加数

构建出来主程序预览:

$: ./calculator


A calculator that only supports addition.
calculator 0.0.1 Leon Ding <[email protected]>

Usage:
  calculator  [command]

Available Commands:
  add	加法计算

Flags:
  --help   help for calculator

Use "calculator [command] --help" for more information about a command.

其他操作

有多种构建方式,例如下面的:

    #[test]
    fn test_add_commands() {
        let mut app = falsework::app::new();

        app.name("calculator")
            .author("Leon Ding <[email protected]>")
            .version("0.0.2")
            .description("A command line program built with Falsework.");


        let command_list = vec![
            cmd::CommandItem {
                run: |_ctx| -> Result<(), Box<dyn Error>> {
                    // _ctx.args 获取命令行参数
                    println!("call foo command.");
                    Ok(())
                },
                long: "这是一个测试命令,使用foo将调用foo命令。",
                short: "foo命令",
                r#use: "foo",
            },
            cmd::CommandItem {
                run: |_ctx| -> Result<(), Box<dyn Error>> {
                    println!("call bar command.");
                    Ok(())
                },
                long: "这是一个测试命令,使用bar将调用bar命令。",
                short: "bar命令",
                r#use: "bar",
            },
        ].iter().map(|c| c.build()).collect();

        app.commands(command_list);

        println!("{:#?}", app);
    }

More Repositories

1

rust-artisan-guide

《Rust Artisan Guide: Building Reliable Projects》A book about hands-on programming with Rust.
Rust
313
star
2

typikon

Typikon lets you use markdown to write your online books.
Rust
287
star
3

vasedb

VaseDB is a NoSQL that supports multiple data types and transactions.
Go
254
star
4

collgroup

Waiting group for collecting goroutine information.
Go
110
star
5

gsql

GSQL is a structured query language code builder for golang.
Go
106
star
6

gws

Go's web session library.
Go
84
star
7

sprout

Golang logging library supporting log retrieval.
Go
82
star
8

sms_bomber

sms bomber.
Go
57
star
9

owl

A file signature scanning tool for static analysis.
Go
48
star
10

ocr4j

ocr4j is a Java toolkit ocr4j.jar based on Tesseract-ocr.
Java
22
star
11

s2s

s2s is a command line tool for database reverse engineering.
Go
19
star
12

learning-rust-zh

个人的 rust 学习资料
Rust
14
star
13

RobotChat

一个使用Java基于免费的机器人聊天API开发的聊天网站🙃
Java
14
star
14

ApeTranslation

一个使用Electron技术💁‍♂️开发的跨平台桌面操作系统的翻译程序🔥
HTML
12
star
15

marionette

marionette 是一个通过golang实现的远控程序,中文名叫`牵线木偶`就好了。
Go
10
star
16

ds

common data structures implement by golang.
Go
8
star
17

applo

使用HTML、CSS、JavaScript遵循Google Material Design设计规范的web后台页面模版🍻
JavaScript
6
star
18

coffee

General programming toolkit for Golang.
Go
5
star
19

scg

A Rust sync group for a collection of thread to finish.
Rust
4
star
20

go_ranking_web

这是一个我使用go语言加redis的zset实现的一个在线实时展示主播积分榜的例子
Go
4
star
21

JettyGUIAdminTools

使用C#开发的Jetty Server容器的图形化管理工具😋
C#
4
star
22

FayProject

一个使用Java开发的在线用户卡密充值管理平台🌎
Java
4
star
23

Medical

一个Java开发的医疗系统💉
Java
4
star
24

DormitoryManage

使用Java+servlet+jsp+maven+el+JavaScript技术开发的大学宿舍自助管理系统
CSS
4
star
25

blog

my blog pages repository.
HTML
3
star
26

editor-develop-fonts

个人收藏的一些适用于程序员的开发字体包.
3
star
27

go-algorithm

go语言的算法基础
Go
3
star
28

ApeTranslationServer

一个提供爬起百度翻译接口的反向接口程序,能通过语言翻译,语言发音API服务🤩
Java
3
star
29

ccl_orderSystem

Java + MySQL + YDUI Touch + SpringBoot 开发的简单在线自助点餐系统🔥
JavaScript
2
star
30

typhoon

使用Rust编写构建一个微内核操作系统取名typhoon.
2
star
31

draw.io

2
star
32

csrf_demo

CSRF 攻击演示
Go
2
star
33

weer

Weer is weather command line apps🌞.
Go
2
star
34

auula

My self introduction😜
2
star
35

roger

Roger is distribution Key-value cache storage service for golang.
Go
2
star
36

tcpl

The C programming learning.
C
2
star
37

gsql-rs

gsql-rs is a structured query language code builder for Rust.
Rust
2
star
38

goconvey-example

goconvey testing example
Go
2
star
39

go_generic_code

Generic programming in Go.
Go
2
star
40

cmdbox

Python
2
star
41

higker.github.io

👨‍💻‍个人博客📚
HTML
2
star
42

ticket-ssm

使用Java的SSM技术栈开发一款在线景区售票系统
JavaScript
2
star
43

open-shell

Shell
2
star
44

kvbase

本计划已经更新至kalasa项目.
2
star
45

math_game

使用Rust实现的人工智能数学出题机器人
2
star
46

JavaReptile

Java爬虫小程序集合🌈驾考程序答案爬取🐜
Java
2
star
47

poem.rs

Poem | A high-performance rust web framework | Homepage.
CSS
2
star
48

auto-sh

auto-sh这个仓库是本人平常编写和收藏的Linux的shell自动化运维脚本分享给你大家!!!
Shell
2
star
49

awesome-rust-web

HTML
2
star
50

tts_tedu

一个在线学习🏫JavaSE的好仓库
CSS
2
star
51

JavaScript_Learning

JavaScript学习📒笔记分享
JavaScript
2
star
52

ubuntu-ppa

Panda Desktop PPA Documentation
Shell
2
star
53

mapisto

Mapisto 是一款命令行数据库工具,可以通过命令行生成表对应的Golang、Java、TypeScript语言的类型结构。
Go
2
star
54

openforum

An open source forum system 💬 with more diverse community features 🌈 , developed in Java ☕️ .
2
star
55

try

Exception capture library for Golang.
Go
2
star
56

XQuery

The object–relational mapping library for rust.
Rust
2
star
57

Java-Code

个人日常帮别人写一些程序和私活Java代码仓库 ,真正意义上的仓库2333,只要是Java代码就往这里面扔。
JavaScript
1
star
58

js_guide

JavaScript: The Definitive Guide (seventh edition) Book source code.
JavaScript
1
star
59

leetcode-go

通过Go语言解决LeetCode问题.
Go
1
star
60

christmas-tree

JavaScript
1
star
61

ENG-mui-app

1
star
62

go-playground

可以方便运行、格式化和分享 Go 代码,可以实现没有 Go 环境运行 Go 代码。
JavaScript
1
star
63

Kali-Linux-Demo

kalilinux学习笔记
1
star
64

octopus

octopus is server performance indicators monitoring program
CSS
1
star
65

google-outline-server-install

Shell
1
star
66

java-algorithm

本包手撕一些算法实现.
Java
1
star
67

IP-Info

Golang图形化编程实现一个ip地址查询工具
Go
1
star
68

qrcode-go

Golang genreate tool library of QrCode.
Go
1
star
69

TaleWindowUpData

C#
1
star
70

go-common

Common Develop tool package for Go
Go
1
star
71

hello-wasm-go

go webassembly example
JavaScript
1
star
72

wechat-code

收集微信公众号`一手代码一首诗`文章中的代码仓库
Go
1
star
73

smalltalk

一个 Web 端在线会议室程序,可以在线开启聊天室房间允许游客加入讨论问题,支持分享链接加入,和房间密码加入。
1
star
74

Kmall-SSM

SSM开发的一个在线商城🔥
Java
1
star
75

bottle-docs

Bottle Storage Engine Use Dcument.
1
star
76

codeq

AI code assistant for large language models.
1
star
77

PushSystem-Java

这个一个使用JDK1.6开发在线机器故障报修系统,别人遇到 bug 要解决外包给我的项目。
HTML
1
star