预览

安装:

  • pip3 install Qpro [--upgrade]

  • 如果你的Python版本低于3.6: pip3 install Qpro==0.7.0, 这是Qpro对低版本Python的最后支持。

  • ZSH的Tab补全:将项目地址下的complete/<your-language>/*拷贝到你的$fpath内,并在~/.zshrc中最后一行加入:

    1
    2
    3
    autoload -Uz compinit
    zstyle ':completion:*' menu select
    compinit

命令行自动补全

  • 如需激活基于QuickProject.Commander的命令行应用的qrun Tab补全,需要配置表中的enable_complete选项为True,或运行Qpro -enable-complete激活。效果↓

  • Qpro提供基于Fig的自动补全,你需要将complete/fig/*.ts拷贝至~/.fig/user/autocomplete/src目录下,并执行npm run copy-to-global。效果↓

    其中,add_update写法:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    @app.command()
    def add_update(contents: str, score: int, names: str = pyperclip.paste()):
    """
    添加加分项

    :param contents: 加分理由
    :param score: 整数分数
    :param names: 以中文逗号分隔的姓名字符串,默认从粘贴板获取
    :return:
    """
    pass

使用:

Command Result
Qpro init 将当前文件夹初始化为Qpro项目
Qpro -h 查看帮助
Qpro create project 创建一个Qpro项目
Qpro update 更新Qpro
Qpro ssh 进入服务器Qpro项目位置
Qpro scp path 将项目内文件夹或文件上传到默认服务器
Qpro scp-init 将整个项目上传到默认服务器
Qpro get path 从服务器上拉取项目内文件
Qpro del path 从Qpro项目中删除文件(夹)
Qpro del-all 删除整个项目
Qpro ls path 查看远程映射上的文件
tmpm * 调用模板脚本,刷新项目中的默认源文件
qrun * 使用运行脚本运行你的项目,Windows(qrun)
detector [-[p/f][p/f]] 运行对拍器(对拍器只能在Qpro -init后的文件夹下运行)
  • 初始化后的项目,可以手动编辑配置表project_configure.json来调整配置。
  • 支持C/CPP但不止于C/CPP,理论上你可以使用Qpro运行任何语言项目。

配置表

  • 请您务必了解配置表的含义,QuickProject几乎完全根据配置表工作
  • 修改project_configure.json来调整脚本默认配置
键值 含义
compile_tool 编译指令
compile_filename 待编译的文件(入口文件)
executable_filename 编译出的可执行文件路径或执行命令
input_file 默认的输入文件
template_root 模板库根目录
server_targets 远程映射
[enable_complete] 使qrun支持Commander 的 tab补全
  • 样例

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    {
    "compile_tool": "编译指令",
    "compile_filename": "入口文件",
    "executable_filename": "执行指令",
    "input_file": "输入文件",
    "template_root": "模板目录",
    "server_targets": [
    {
    "user": "用户名(可缺省)",
    "host": "主机地址或.ssh/config中的HostName",
    "port": "端口",
    "path": "在远程主机的目录地址"
    }
    ],
    "enable_complete": true
    }
  • 注意:旧版本的server_target 已变更为 server_targets,你可以通过formatOldJson来替换全部旧的project_configure.json。

运行脚本

编译或运行

参数 含义
-b 编译
-r 运行
-br 编译且运行

如果上述三个命令都不存在,则默认运行当前编译好的程序

参数 含义
-f *.c / *.cpp 设置目标源文件为*.c / *.cpp

输入输出

  • 可以编辑 默认的输入文件 来设置默认输入
  • 运行 qrun [...] > output.txt 使程序输出到 ./output.txt
参数 效果
-i 使用默认的输入文件作为输入
-if *.* 更改输入文件,__ignore__会被忽略
-if -paste 使用粘贴板内容作为输入

查看帮助

  • qrun -h : 可以查看使用帮助(Windows系统不支持颜色显示)
    help

推荐的命令示例

命令 效果
qrun -i 使用默认输入文件并运行
qrun 运行
qrun -br -i 编译且使用输入文件运行

模板脚本

命令 效果
tmpm -h 查看帮助
tmpm -itmpm 将主文件初始化为template/main中的内容
tmpm -r 选择备份并恢复
tmpm -r backup 恢复为template/backup
tmpm -c backup 创建或覆盖template/backup
tmpm -c template algorithm 拷贝指定位置, 创建模板集并写入算法
tmpm -a template algorithm 拷贝指定位置, 向模板集追加算法
tmpm name __TMPM__处插入name模板集内的模板
  • 关于指定位置: tmpm 将会把compile_filename中处于__TMPM_START____TMPM_END__之间的内容识别, 并拷贝

对拍器

  • 使用: detector 来进行两个源程序运行结果的对拍,结果存储在当前目录下的./res.html
命令 效果
detector [-pp] 打开默认对拍器(文件1文件2都是程序),-pp参数可缺省
detector -pf 运行文件1程序并将结果与文件2对比
detector -fp 运行文件2程序并将结果与文件1对比
detector -ff 对比文件1文件2的内容(你可以在任何位置调用)
  • 如果脚本未能自动打开./res.html, 你可以用浏览器打开它。

GUI

命令装饰类

demo

1
2
3
4
5
6
7
8
9
10
11
12
13
14
from QuickProject.Commander import Commander

app = Commander()

@app.command()
def x(arg1: str, arg2: int, arg3: float = 1.2):
print(arg1, arg2, arg3)

@app.command()
def y(arg1: str, arg2: str, arg3: str = '12345'):
print(arg1, arg2, arg3)

if __name__ == '__main__':
app()
  • qrun --help

  • qrun x aaa bbb ccc

    1
    aaa bbb ccc

将Commander应用注册为全局命令

注意:
  1. 你需要创建一个“Qpro全局文件夹”,比如~/.local/QuickProject/,并将其作为QproGlobalDir的环境变量。

    1
    2
    3
    4
    5
    mkdir ~/.local/QuickProject
    # 打开你的 .*shrc 文件
    vim .zshrc
    # 填入如下内容
    export QproGlobalDir="/path/to/.local/QuickProject"
  2. 设置$PATH, 用于执行Qpro注册的全局命令。

    1
    2
    3
    4
    # 打开你的 .*shrc 文件
    vim .zshrc
    # 填入如下内容
    export PATH="$PATH:$QproGlobalDir/bin"
注册方式:
  1. 注册为全局命令Qpro register-global [--disable_global_command] : 将当前项目注册为全局命令,开启--disable_global_command选项后,Qpro不会生成全局命令,但你仍可以通过Qpro bin <app> *来调用Commander APP。
  2. Fig自动补全脚本生成与应用:进入Fig的自定义脚本文件夹下,通常为~/.fig/user/autocomplete,执行Qpro gen-fig-script
  3. zsh Tab补全脚本生成: 进入你的$fpath下,通常为/usr/local/share/zsh/site-functions,执行Qpro gen-zsh-comp,重启终端即可。
效果
全局命令 Qpro bin 调用