Skip to content

Forkong/app-scripts

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

13 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

app-scripts


详细介绍可参考我的博客 -- 开发NB-App中使用的脚本们

What is this?


这些是我在开发NB-App中使用到的一些脚本,其中包括:

  • diff_project.py - 用于对比单个project中的多个target的脚本。
  • gen_zh.py - 从Localizable.strings (English)上自动生成Localizable.strings (Chinese)的脚本。
  • cal_code.py - 计算工程总代码量和有效代码量的脚本。
  • cal_svn_commit.py - 统计SVN commit行数的脚本,自动diff并统计commit增删代码量。
  • jsonserver.py - 用于代理并返回静态json的脚本,基于web.py,主要用于自我调试。

How to use it?


diff_project.py

参照demo,将脚本添加到工程中:

Target -> Build Phases -> New Run Script Phase

在输入框中填写为:

python 路径+diff_project.py

例如:

python ./Scripts/diff_project.py

在每次编译后,输出结果会出现在这里:

image

点击对应的Build,可以看到输出结果:

image

gen_zh.py

使用过程和diff_project.py基本一致,依然在Build中查看输出结果:

image

只是这个脚本需要使用PyObjc框架,需要提前安装一下,建议使用pip安装:

pip install pyobjc

如果没有安装pip的话,可以去官网安装一下。

由于我们无法要求每个Mac都安装有pyobjc库,所以我们必须通过其他办法来让别人也可以运行,比如:

具体可参考开头博客的文章。

cal_code.py

demo中将此脚本直接添加于Build Phases中,是为了方便演示,而实际上我们一般很少需要统计代码量,所以只需要在适当的时候在终端中运行即可。

//使用方式
python cal_code.py (+ 目录)
python cal_code.py 
python cal_code.py ../

在终端中输出结果一般如下:

image

cal_svn_commit.py

由于SVN的特殊性,必须要在线连接到SVN服务器,否则无法统计。

//使用方式
python cal_svn_commit.py (+ 目录) (+ 统计版本个数)
python cal_svn_commit.py
python cal_svn_commit.py ./ 5

原理是读取目录的svn log,从log上获取版本号,之后使用svn diff命令diff版本差异,再从输出的log上统计增删的代码量,之后汇总输出。结果类似于下图:

image

jsonserver.py

jsonserver.py依托于web.py框架,在使用此脚本之前,必须安装web.py框架:

pip install web.py

web.py使用起来非常方便,入门又非常简单,非常适合我们这种使用场景。

现在业界比较流行的微web框架是Flask,Flask的用户量很大,开源的三方更多,如果你要做小型网站的话,Flask还是非常适合的。

运行方式:

python jsonserver.py (+ 端口号,默认为8080)
python jsonserver.py 
python jsonserver.py 1234

jsonserver中的 static文件夹保存的是静态资源,只需要将返回的静态json放置于static文件夹中,在代码中直接返回即可。

如果对于web.py有疑问的,可以直接去官网查看官方文档,官方提供中文版支持。一般来说,看完基础文档也就只要半个小时、一个小时,速度很快。这也体现了这个框架的简洁、高效、轻量级。

成功之后,将手机连到电脑ip上即可。

License


MIT.

About

在开发App中使用的部分脚本

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published