Skip to content

inhere/kite

Repository files navigation

Kite

License Php Version English GitHub tag (latest SemVer) Actions Status

PHP编写的,方便本地开发和使用的个人CLI工具应用。

kite 是基于 inhere/php-console 命令行包编写的CLI应用

安装

系统环境依赖

  • git
  • php 8.1+
  • composer

TIP: 支持windows 10, linux, macOS

脚本安装(推荐)

file: deploy/install.sh

curl https://raw.githubusercontent.com/inhere/kite/master/deploy/install.sh | bash

手动安装

cd ~
git clone https://github.com/inhere/kite .kite
cd .kite
composer install
chmod a+x bin/kite
cp .kite.example.php .kite.php
sudo ln -s $PWD/bin/kite /usr/local/bin/kite
# 检查安装是否成功
kite --version

下载PHAR

总是使用最新版本:

wget -c https://github.com/inhere/kite/releases/latest/download/kite.phar

使用指定版本的:

wget -c https://github.com/inhere/kite/releases/download/v2.0.0/kite.phar

重命名,移动到环境目录:

mv kite.phar /usr/local/bin/kite
chmod a+x /usr/local/bin/kite

配置工具

生成自动补齐脚本

ZSH 环境

生成zsh补齐脚本文件,可以指定生成文件;也可以在生成后移到到想要的目录

提示:生成到oh-my-zsh的相应目录下不需要手动配置到 .zshrc,放置到其他目录可能需要手动添加到 .zshrc

kite --auto-completion \
  --shell-env zsh \
  --gen-file ~/.oh-my-zsh/completions/_kite \
  --tpl-file resource/templates/completion/zsh.tpl

生成 oh-my-zsh 的插件(推荐,里面同时含有常用别名)

kite --auto-completion \
  --shell-env zsh \
  --gen-file ~/.oh-my-zsh/custom/plugins/kite/kite.plugin.zsh \
  --tpl-file resource/templates/completion/zsh.plugin.tpl

BASH 环境

生成bash补齐脚本文件,可以指定生成文件;也可以在生成后移到到想要的目录

提示:生成后需要手动配置到 .bashrc

kite --auto-completion \
  --shell-env bash \
  --gen-file \
  --tpl-file resource/templates/completion/bash.tpl

使用效果(zsh)

auto-complete

常用命令组别名

推荐配置常用命令组别名到 ~/.bashrc 或者 ~/.zshrc,这样可以快速使用常用的命令组。

## aliases for kite
# NOTICE: zsh plugin support add aliases
alias kj="kite jump"
alias kg="kite git"
alias kgit="kite git"
alias kgl="kite gitlab"
alias kgh="kite github"
alias kjson="kite json"

使用说明

查看命令帮助

列出全部命令:

kite
kite list

查看帮助:

kite -h
kite --help
kite help

Git 使用

主要提供git使用中的一些常用命令封装.

命令格式

kite git {COMMAND} [arguments ...] [--options ...]
# 配置了shell alias
kg {COMMAND} [arguments ...] [--options ...]

Git常用命令

下面是一些常用命令说明,关于每个命令的详细使用和更多参数请使用 kite git COMMAND -h 查看

TIPS: 特殊的,kite git COMMAND 如果你输入的命令不存在,会尝试执行系统的 git COMMAND

快速提交

kite git ac -m "commit message"

快速提交并推送

kite git acp -m "commit message"
# 可以使用别名快速操作
kite acp -m "commit message"

TIPs: acpgit:acp 命令的别名,你也可以添加自己常用的别名到 ~/.kite/.kite.php

git-acp

查看分支列表

默认查看本地分支列表

kite git branch
# 别名
kite git br

git-branch

更多示例:

# 列出所有,包含remotes的分支列表
kite git br -a
# 查看本地分支列表并根据关键字 'fix' 搜索
kite git br -s fix
# 查看指定remote的分支列表
kite git br -r origin
kite git br -r main
kite git br -r main -s fix
# 仅简单的打印分支名称
kite git br --only-name
# 仅打印分支名称并且以逗号分割显示在一行
kite git br --only-name

快速创建tag并推送到远端

kite git tag-push -v v1.0.2 -m "release new version"
# 简写别名
kite git tn -v v1.0.2 -m "release new version"
# 自动计算和创建下一个版本分支
kite git tn --next

git-tagnew

查看最近的变动历史

kite git log
# 别名
kite git lg

git-recently-log

查看两个版本直接的变动历史

命令:kite git changelog (别名: cl chlog)

详细的选项和参数请使用 kite git cl -h 查看

查看两个版本直接的变动历史,自动根据commit logs生成变动历史记录。 默认生成markdown格式的,可以直接复制粘贴使用,也支持生成并输出到指定文件中。

kite git cl v1.1.2 v1.1.3
# 可以使用关键字
kite git cl last head
kite git cl prev last

带额外选项示例:

kite git changelog last head --style gh-release --no-merges
kite git changelog v2.0.9 v2.0.10 --no-merges --style gh-release --exclude "cs-fixer,format codes"

git-changelog

Gitlab 使用

主要用于fork模式的快速开发提供的一些常用命令封装

命令格式

命令:gitlab (别名:gl)

kite gitlab {command} [arguments ...] [--options ...]

相关配置

这是默认配置,如果你的使用习惯不同,请通过用户配置文件(~/.kite/.kite.php)调整覆盖

'gitlab' => [
    // remote
    'mainRemote' => 'main',
    'forkRemote' => 'origin',
    // 分支别名
    'branchAliases'    => [
        'h' => 'head',
    ]
],

命令使用

下面是一些常用命令说明,关于每个命令的详细使用和更多参数请使用 kite gl COMMAND -h 查看

查看命令列表

快速创建分支

会自动切到master分支,同时更新代码到最新,然后创建新分支

kite gl nbr fix_210423
# 配置了shell alias
kgl nbr fix_210423

更新本地仓库代码

同时会从 fork remote主仓库remote 的对应分支和 master 拉取同步代码

kite gl update
# 简写别名
kite gl up

更新本地仓库代码并推送

同时会从 fork remote主仓库remote 的对应分支和 master 拉取同步代码,并且最后会推送到远端

kite gl updatePush
# 简写别名
kite gl upp

TIPS: 多人协同开发一个项目仓库时,推荐经常进行同步,避免出现代码冲突

向主仓库发PR

命令:kite gitlab pullRequest (使用命令简写 kite gl pr kgl pr)

操作不会直接创建PR,只会打开浏览器并跳转到PR页面,并自会动选择好对应分支

# @ 默认会从当前分支 发起到主仓库 对应的当前分支的PR
kite gl pr -o @
# -o 跟分支,则会从当前分支 发起到主仓库 里给定分支的PR
kite gl pr -o qa
kite gl pr -o pre
kite gl pr -o master

浏览器打开仓库

在项目所在目录执行如下命令,即可自动使用默认浏览器打开仓库页面

# 打开Fork仓库地址(即origin对应的)
kite gl open
# 打开主仓库地址
kite gl open --main

快速删除分支

快速地删除多个分支

kite gl db 'fix_210423,fix_210321'
# 强制执行,忽略执行中的错误
kite gl db 'fix_210423,fix_210321' -f

Github 使用

主要用于GitHub git快速使用提供的一些常用命令封装

命令格式

命令:github (别名:gh, hub)

kite github {command} [arguments ...] [--options ...]

配置:

'github' => [
    // remote
    'mainRemote' => 'main', // 'source'
    'forkRemote' => 'origin',
    'redirectGit'   => [
        'acp',
        'log',
        'info',
        'push',
        'fetch',
        'update',
        'tagNew',
        'changelog',
    ],
],

提示 如配置所示,允许你直接重定向命令到 git 命令组执行。 即 gh log 实际上执行的是 git log,因此在 git 下面能用的,gh 下也都可用。

向主仓库发PR

操作不会直接创建PR,只会打开浏览器并跳转到PR页面,并自会动选择好对应分支

# -o 不跟分支,默认会从当前分支 发起到主仓库 对应的当前分支的PR
kite gl pr -o
# -o 跟分支,则会从当前分支 发起到主仓库 里给定分支的PR
kite gl pr -o main
kite gl pr -o master

在浏览器打开仓库

kite gh open

快速跳转目录

快速跳转: kite jump

基本逻辑参考现有的 autojump(python) jump(go) 等开源工具实现

可以自定义配置目录别名,方便快速跳转; 使用配置到shell的函数进行跳转目录,会自动记录跳转历史,下次可以使用关键字进行模糊匹配跳转

配置命令脚本

bash 环境配置(添加到 ~/.bashrc):

# default shell func is: jump
eval "$(kite jump shell bash)"
# set the bind func name is: j
eval "$(kite jump shell bash --bind j)"

zsh 环境配置(添加到 ~/.zshrc):

# default shell func is: jump
eval "$(kite jump shell zsh)"
# set the bind func name is: j
eval "$(kite jump shell zsh --bind j)"

TIP: 添加好之后,需要重新载入shell才会生效

开始使用

可以设置一些常用目录的别名,方便快速跳转(我配置的shell方法名是 j

# TIP: 内部会自动转换 ~ 为绝对路径
$ kite jump set home ~
$ kite jump set wp ~/Workspace

使用 j 代替 cd 跳转目录,会自动记录跳转历史,下次可以使用关键字进行模糊匹配跳转

$ j /Users/inhere/Workspace/java
INTO: /Users/inhere/Workspace/java
$ j /Users/inhere/Workspace/godev
INTO: /Users/inhere/Workspace/godev

查看已经记录的目录数据:

使用自动补齐(tab自动补齐):

其他常用命令

expr 简易表达式

kite expr|calc -i - 开启一个简易的表达式计算终端,可以当做计算器使用

kite expr -i

kite-expr-i-run

json5 内容读取

kite json5 - json5 文件格式读取,转换为 json 输出

kite json5 FILE

markdown 渲染

kite markdown|mkdown|md - 命令行渲染markdown文件内容并输出到终端,会自动美化格式

kite markdown FILE

php开发服务器

kite php serve 可以快速启动一个php开发服务器。

命令配置

可用通过配置来设置默认的信息,这样就不用每次启动时设置参数了

    'php:serve'     => [
        'hce-file' => 'test/httptest/http-client.env.json',
        'hce-env'  => getenv('APP_ENV') ?: 'dev',
        // document root
        'root'     => 'public',
        'entry'    => 'public/index.php',
        'php-bin'  => 'php7'
        // 'addr' => '127.0.0.1:8552',
    ],

IDEA http-client环境

内置支持IDEA的http-client环境文件。如果你需要同时开发多个项目,都需要启动serve,此时一份通用的配置显然不行了(同时启动会端口冲突)。

这时 hce-file, hce-env 就可以排上用场,可以在每个项目里添加一份http-client环境文件,并且规划好每个服务的端口

示例文件 test/httptest/http-client.env.json

{
  "dev": {
    "host": "127.0.0.1:10106"
  },
  "test": {
    "host": "127.0.0.1:10106"
  }
}

这样在不同项目下,通过 kite php serve 运行服务时,会自动读取当前环境的 host 设置作为启动服务的server地址。

kite php serve

输出示例:

ENV环境信息

显示全部环境变量信息:

kite env

输出 PATH 信息:

$ kite env path
Path Value
  /usr/local/sbin
  /usr/local/bin
  /usr/bin
  /bin
  /usr/sbin

搜索环境变量或指定显示某个环境变量:

$ kite env ter
Matched Results(Kw:ter)
  TERMINAL_EMULATOR JetBrains-JediTerm
  TERM              xterm-256color
  ZSH_TMUX_TERM     screen-256color

Tips: 当 kite env 后面跟的是一个存在的环境变量名时,直接显示这个环境变量信息;否则进行模糊匹配,显示所有匹配的变量信息

扩展使用

使用脚本

除了使用内部提供的命令,kite 也提供了快速的 scripts 脚本命令配置以及脚本文件配置 scriptDirs

脚本文件

脚本文件支持:

  • ['.sh', '.bash', '.php'] 为后缀的 shell, php 脚本文件
  • 用户可以自定义添加支持执行其他脚本文件

默认通过脚本文件首行的 shebang (eg: #!/usr/bin/env bash) 确定使用什么来执行脚本文件

TIP: 可以配置通过后缀来指定执行脚本的主体

例如 scriptExts 新增配置 .go, scriptExt2bin 增加 ['.go' => 'go run']; 执行 kite run hello.go, 则会调用 go run hello.go

默认的脚本文件目录 scriptDirs 配置:

$basePath 指的是 kite 所在目录,你还可以用户配置文件追加配置自己的脚本目录

[
    'scriptRunner' => [
        'enable'  => true,
        // 'scriptExts' => [] 
        // 'scriptExt2bin' => []
    ],
    'scriptDirs' => [
        $basePath . '/script',
        $basePath . '/custom/script',
    ],
]

查看可执行的脚本文件列表 kite run -l file

scripts-files

运行脚本文件:

kite SCRIPT-FILENAME
kite run SCRIPT-FILENAME

run-script-file

脚本命令

默认的快捷命令 scripts 配置:

下面是一份默认的快捷 scripts 配置,你同样可以通过用户配置文件 ~/.kite/.kite.php 添加自己的脚本命令 可以通过命令 kite run -l cmd 查看已配置的全部命令

<?php

// custom scripts for quick run an command
return [
    'echo' => 'echo hi',
    'test' => [
        'echo $SHELL',
        'echo hello'
    ],
    // git quick use
    'gst'  => 'git status',
    'st'   => 'git status',
    'co'   => 'git checkout $@',
    'br'   => 'git branch $?',
    'pul'  => 'git pul $?',
    'pull' => 'git pull $?',
];

使用示例

当你执行 kite run gst 时,会直接调用系统的 git status 命令。

kite run gst

scripts-gst

当你的脚本名或脚本文件名,不会命中kite内置命令、别名时,可以直接使用 kite NAME|FILE 执行脚本。 因此 kite gst 等同于执行 kite run gst

命令别名

默认的命令别名请看 config/config.php 文件中的 aliaes 配置

    // command aliases. element is: alias command => real command
    'aliases' => [
        'ac'     => 'git:ac',
        'acp'    => 'git:acp',
        'glpr'   => 'gitlab:pr',
        'config' => 'self config',
    ],

你可以添加自己常用的别名到 ~/.kite/.kite.php 用户配置文件中

self-config-aliases

命令插件

kite 里除了提供 scripts 访问执行外部命令,还可以编写自定义插件命令实现一些自定义功能

配置

首先配置插件目录,支持配置多个目录。

    'pluginDirs' => [
        '~/.kite/plugin/'
    ],

编写插件命令

每个插件命令文件都是一个 php 类文件,需要继承 Inhere\Kite\Console\Plugin\AbstractPlugin

这是 demo-pulgin 文件示例:

<?php

use Inhere\Console\IO\Output;
use Inhere\Kite\Console\CliApplication;
use Inhere\Kite\Console\Plugin\AbstractPlugin;

/**
 * Class DemoPlugin
 */
class DemoPlugin extends AbstractPlugin
{
    public function metadata(): array
    {
        return [
            'desc' => 'this is am demo plugin',
        ];
    }

    public function exec(CliApplication $app, Output $output): void
    {
        vdump(__METHOD__);
    }
}

注意:插件文件名必须跟里面的插件类保持一致。kite会自动将插件名进行驼峰格式转换当做类名称使用,因此可以在文件名使用连字符 -

运行插件命令

kite 通过内部的 plugin run 命令紧跟插件名或者插件路径来运行一个插件。

kite plugin run PLUGIN_NAME

kite将会在插件目录里找到对应插件文件并执行它的 exec 方法。如下面的命令就会找到 demo-plugin 并运行它。

kite plugin run demo-plugin

可以省略 plugin run 直接跟插件名称来快速执行插件。

TIPS: 其原理跟运行script类似,kite找不到命令,就会自动尝试检查是否是一个插件命令,能找到插件文件,就会当做插件执行。

# 后缀 .php 可以忽略
kite demo-plugin
kite demo-plugin.php
# 直接写完整路径也是可以的
kite plugin/demo-plugin
kite plugin/demo-plugin.php

更新kite

内置命令

使用内置命令将更新工具更新到最新版本

kite selfupdate

手动更新

cd ~/.kite
git pull
chmod a+x bin/kite

构建Phar包

php -d phar.readonly=0 bin/kite phar pack

build-phar

删除工具

rm -f /usr/local/bin/kite
rm -rf ~/.kite

Dep Packages

Refer