forked from x/ContextOS
mac add 添加了nfs使用说明
This commit is contained in:
parent
8a6638ea04
commit
61fa3661d0
65
README.md
65
README.md
@ -12,6 +12,7 @@ context: 终端工具链,各种实用的功能模块,通过简洁的接口
|
||||
* 2.0 应用示例--启动WEB服务器
|
||||
* 2.1 常用命令
|
||||
* 2.2 web模块的命令
|
||||
* 2.3 nfs模块的命令
|
||||
* 3 context开发
|
||||
* 3.0 context模块开发入门
|
||||
* 3.1 context模块的生命周期与继承多态
|
||||
@ -91,6 +92,20 @@ $ tail -f var/bench.log
|
||||
如第一行日志,消息编号为22,消息类型是start启动模块,是ctx发送给cli模块的消息。
|
||||
从日志中可以看出bench在启动时,启动了词法解析模块lex与语法解析模块yac,并加载了启动脚本etc/init.shy。
|
||||
|
||||
#### 2.0.3 运行本机命令
|
||||
当输入的命令在bench中没有实现时,bench会调用本地shell对命令进行解释执行。
|
||||
```sh
|
||||
$ bench
|
||||
> pwd
|
||||
/Users/shaoying/context
|
||||
> ls
|
||||
etc
|
||||
var
|
||||
LICNESE
|
||||
README.md
|
||||
...
|
||||
```
|
||||
|
||||
### 2.1 常用命令
|
||||
#### 2.1.1 缓存管理cache
|
||||
```sh
|
||||
@ -228,6 +243,49 @@ web> route script /s echo.shy
|
||||
```
|
||||
content代表脚本的文件名,即web服务请求此route路径时,回复的内容为content指定的脚本运行后输出的内容。
|
||||
|
||||
### 2.3 nfs模块的命令
|
||||
nfs模块,文件读写读写模块,可以读写本地文件或远程文件。
|
||||
```sh
|
||||
$ bench
|
||||
> ~nfs
|
||||
> genqr qr.png hello
|
||||
```
|
||||
启动bench,进入nfs模块,调用genqr生成二维码图片。
|
||||
可以看到在bench的当前运行目录生了一个png图片,可以用手机扫描一下,查看二维码内容。
|
||||
|
||||
nfs模块,还支持文件的远程传输。
|
||||
```sh
|
||||
$ bench
|
||||
> ~nfs
|
||||
> listen ":9191"
|
||||
```
|
||||
启动bench,进入nfs模块,调用listen开启一个文件服务器,监听的端口为"0.0.0.0:9191"。
|
||||
|
||||
在另外一个目录,一定注意是另外一个目录中。运行以下命令。
|
||||
```sh
|
||||
$ bench
|
||||
> ~nfs
|
||||
> dial ":9191"
|
||||
> context
|
||||
nfs(ctx::aaa::): begin() 存储中心
|
||||
file2(nfs::aaa::): start(etc/init.shy) 扫描文件
|
||||
file3(nfs::aaa::): start(127.0.0.1:63458->127.0.0.1:9191) 打开文件
|
||||
file1(nfs::aaa::): start(var/bench.log) 打开文件
|
||||
stdio(nfs::aaa::): start(stdio) 扫描文件
|
||||
> send pwd
|
||||
/Users/shaoying/context
|
||||
> pwd
|
||||
/Users/shaoying/context/tmp
|
||||
> recv file qr.png
|
||||
> ls
|
||||
qr.png
|
||||
```
|
||||
启动bench,进入nfs模块,调用dial连接文件服务器。
|
||||
输入context命令,可以查看所有子模块,这里可以看到多了一个file3的模块,从备注信息中可以看出,这是一个网络连接。
|
||||
输入send可以执行远程命令,如send pwd就可以查看远程bench运行的当前目录。
|
||||
输入pwd查看当前bench的运行目录。
|
||||
输入recv命令就可以把远程文件复制到本地。
|
||||
|
||||
## 3 context开发
|
||||
### 3.0 context模块开发入门
|
||||
在context目录下,创建目录src/example/demo,然后打开src/example/demo/demo.go文件,并输入以下代码。
|
||||
@ -348,8 +406,11 @@ Config为配置项,模块内的一些常量或是可配置的数据,就可
|
||||
Command的命令项,模块向外提供的各种API接口或是CLI接口都统一定义为command,即可以被其它模块在代码中直接调用,也可以在命令行实时调用。
|
||||
通过这种方式直接解除了模块的依赖关系,每个模块都可以独立编译,独立运行。
|
||||
通过脚本或是配置把各种模块组合在一起,完成复杂的功能。这样大大降低了代码的重复性,提高了代码的通用性。
|
||||
|
||||
Cache为缓存项的定义,Name为缓存项的名字,Value为缓存项的值,Help为缓存项的帮助信息,Hand为缓存项读写函数,可选。
|
||||
|
||||
Config为配置项的定义,Name为配置项的名字,Value为配置项的值,Help为配置项的帮助信息,Hand为配置项读写函数,可选。
|
||||
|
||||
Command为命令项的定义,Name为命令项的名字,Help为命令项的帮助信息,Hand为命令项执行函数。
|
||||
|
||||
```go
|
||||
@ -363,6 +424,7 @@ echo命令,按照缓存项format的格式输出配置项default的内容。
|
||||
这样可以从命令行查看缓存项format的值,就可以知道echo命令输出的格式。
|
||||
这样可以从命令行设置配置项default的值,就可以改变echo命令输出的内容。
|
||||
命令Hand函数,是消息驱动的。所以各种通过消息m就可以调用到各种函数。
|
||||
|
||||
m.Cap()读写当前模块的某个缓存项。
|
||||
m.Conf()读写当前模块的某个配置项。
|
||||
m.Echo()输出命令执行结果。
|
||||
@ -685,6 +747,7 @@ Call()发送消息,命令执行完成后会调用参数的中的回调函数
|
||||
如果返回值为false则代表,消息还未处理完成。在其它事件中调用Back()可以再调用回调函数。
|
||||
|
||||
```go
|
||||
Commands: map[string]*ctx.Command{
|
||||
"send": &ctx.Command{
|
||||
Name: "send module",
|
||||
Help: "send something",
|
||||
@ -738,8 +801,6 @@ one> context demo
|
||||
demo> send one
|
||||
hello world nice
|
||||
```
|
||||
|
||||
|
||||
## 4 context核心模块详解
|
||||
### 4.0 ctx模块中心
|
||||
### 4.1 cli命令中心
|
||||
|
Loading…
x
Reference in New Issue
Block a user