erlang:基于cowboy,一键创建erlang…

来源:互联网 发布:java 模拟post请求 编辑:程序博客网 时间:2024/05/17 06:49
 基于cowboy一键创建erlang工程的前提是:已经安装了ets和rebar,
1、shell script如下:
#!/bin/bash
projectName=releaseErlangProject
rebarfile=rebar.config
projectPath=`pwd`/${projectName}
runScript=run.sh

#获取rebar工具
get_rebar(){
git clone git://github.com/rebar/rebar.git
cd rebar
./bootstrap
sudo mv rebar /usr/local/bin

}

#创建src目录
mk_app(){
goProjectPath
#rebar create-app appid=releaseErlangProject
rebar create template=simpleapp appid=${projectName}
echo "---SUCCESS mk_app!"
}

change_erlang_app(){
goProjectPath
cd src
accessPath="Dispatch=cowboy_router:compile([{'_',[{\"/\",${projectName}_handler,[]}]}]),cowboy:start_http(my_http_listener,100,[{port,8080}],[{env,[{dispatch,Dispatch}]}]),"

 line=$(grep -n "${projectName}_sup"${projectName}_app.erl | cut -d ":" -f 1)
 sed -i ${line}'i'$accessPath''  ${projectName}_app.erl
}

bootFile(){
goProjectPath
cd src
bootFileName=${projectName}_boot
bootFile=${bootFileName}.erl
echo "-module($bootFileName)." >> $bootFile
echo "-export([start/0, stop/0])." >> $bootFile
echo " "
echo " "
echo "start() ->" >> $bootFile
echo "application:start(ranch)," >> $bootFile
echo "application:start(crypto)," >> $bootFile
echo "application:start(cowlib)," >> $bootFile
echo "application:start(cowboy)," >> $bootFile
echo "application:start(${projectName})." >> $bootFile

echo "stop() ->" >> $bootFile
echo "application:stop(${projectName})," >> $bootFile
echo "application:stop(cowboy)," >> $bootFile
echo "application:stop(cowlib)," >> $bootFile
echo "application:stop(crypto)," >> $bootFile
echo "application:stop(ranch)." >> $bootFile
echo "---SUCCESS mk bootFile!"
}

#创建include目录
includeDir(){
goProjectPath
if [ ! -d "include" ] ; then
mkdir include
fi
echo "---SUCCESS mk includeDir!"
}

#创建include目录
privDir(){
goProjectPath
if [ ! -d "priv" ] ; then
mkdir priv
fi
echo "---SUCCESS mk privDir!"
}

#创建测试目录
testDir(){
goProjectPath
if [ ! -d "test" ] ; then
mkdir test
echo "{erl_opts, [debug_info,{i, \"test\"},{src_dirs,[\"src\"]}]}." >> ${rebarfile}
echo "{eunit_opts, [verbose, {report, {eunit_surefire, [{dir,\".\"}]}}]}." >> ${rebarfile}
echo "{cover_enabled, true}." >> ${rebarfile}
#testfile
fi
echo "---SUCCESS mk testDir!"
}

testfile(){
goProjectPath
testfile="demo.erl"
echo "-ifdef(TEST).
-include(\"${testfile}\").
-endif." >> ${testfile}

}

# Erlang/OTP 行为模式的模板
genTemplate(){
goProjectPath
rebar create template=simplesrv srvid=test_gen_server
rebar create template=simplefsm fsmid=test_gen_fsm
echo "---SUCCESS mk genTemplate!"
}

#创建工程依赖
depsDir(){
goProjectPath
if [ ! -d "deps" ] ; then
cowboy="{cowboy, \".*\", {git,\"https://github.com/ninenines/cowboy.git\"}}"
jiffy="{jiffy, \".*\", {git,\"https://github.com/davisp/jiffy.git\"}}"
emysql="{emysql, \".*\", {git,\"https://github.com/Eonblast/Emysql.git\"}}"
split=","
objects=${cowboy}
#objects=${cowboy}${split} ${jiffy}${split}${emysql}
echo "{deps, [${objects}]}." >> ${rebarfile}
# get deps
rebar get-deps
fi
echo "---SUCCESS mk depsDir!"
}

goProjectPath(){
if [ ${projectPath} != `pwd`} ]; then
cd ${projectPath}
fi
}

mkHandler(){
goProjectPath
cd src
echo "-module(${projectName}_handler).
-author(\"wxm\").
%% API
-behaviour(cowboy_handler).

-export([init/2]).
-export([terminate/3]).

init(Req, _Opts) ->
  io:format(\"Req: ~p~n\", [Req]),
  cowboy_req:reply(200, Req),
  {ok, Req, _Opts}.

terminate(_Reason, _Req, _State) ->
  ok." >> ${projectName}_handler.erl
echo "---SUCCESS  mkHandler!"
}

未完待续...
0 0
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 微信被盗了密码都被改了怎么办 微信被别人改密码改手机号了怎么办 微信号手机号码换了密码改了怎么办 电信充值卡的密码刮花了怎么办 qq充了q币不到账怎么办 开通黄钻不支持手机话费开通怎么办 银行卡给红包充值迟迟不到账怎么办 我想用信用卡往微信零钱充钱怎么办 修改密保手机跳过原手机验证怎么办 骏卡有用但是充不进去怎么办 在云南移动上充错话费了怎么办 手机版本太低安装不了支付宝怎么办 手机下载支付宝后找不到了怎么办 王者荣耀充值成功游戏未到账怎么办 银行卡号和密码都忘了怎么办 微信支付密码和银行卡号忘了怎么办 请问5位数的密码忘记了怎么办 苹果手机四位数密码忘记了怎么办 锡山教育app登陆密码忘了怎么办 新商盟手机订烟登录忘记密码怎么办 在qq上修改支付密码忘记怎么办 微信红包支付密码忘了怎么办 qq钱包绑定了别人的银行卡怎么办 用支付宝充手机话费怎么退款怎么办 我有个qq号丢了怎么办 微信红包密码输错了怎么办 qq钱包支付限额付不了款怎么办 电信手机没开流量被扣流量钱怎么办 运动鞋子买大了一码怎么办 淘宝直播间粉丝福利购优惠券怎么办 微信卡包的券不小心删了怎么办 0pp0手机官网手机总跳屏怎么办 很想买一部手机但是舍不得钱怎么办 自己没钱了还想贷款买手机怎么办 4g手机锁屏密码忘了怎么办 oppo手机锁屏密码忘了怎么办 三星手机锁屏密码忘了怎么办 网上买的手机想退了怎么办 沙棘排湿排毒后皮肤痒怎么办 做了沙棘排毒两次上上痒怎么办? 微信支付打款认证超时怎么办