1 Star 0 Fork 0

oshine / om

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
克隆/下载
install.woo 6.39 KB
一键复制 编辑 原始数据 按行查看 历史
oshine 提交于 2022-02-23 10:21 . test export
-- 安装自己
-- https://gitee.com/oshine/om/raw/master/installer.woo
-- https://gitee.com/oshine/om/raw/v1.0.11/installer.woo
local T = true
local host = T and 'http://127.0.0.1:8018/i/om?ver=' or 'https://woolang.net/i/om?ver='
local params = {}
local args = _args()
_out(args, "\n")
if _in_array(args[2], { "zh", "en" }) then
params.lan = args[2]
else
params.lan = nil
end
if not params.lan then
while true do
--params.lan = _readline('please choose install language(default [en] english)/请选择安装语言(默认[en]英文):[en(1)/zh(2)]')
if params.lan == '1' then
params.lan = 'en'
elseif params.lan == '2' then
params.lan = 'zh'
end
if not params.lan then
params.lan = 'zh'
end
if not _in_array(params.lan, { 'en', 'zh' }) then
print('only en or zh valid,trt again/只能输入en或者zh,请重试')
else
print(({ ['en'] = 'you choose english', ['zh'] = '你选择了中文' })[params.lan])
break
end
end
end
if not params.install_dir then
--params.install_dir = _readline(({ ['en'] = 'type install dir,default ${home}/om:',
-- ['zh'] = '请输入安装目录,默认 ${home}/om:' })[params.lan])
if not params.install_dir then
params.install_dir = _home() .. '/om'
end
end
print(({ ['en'] = 'ready to request server for om version', ['zh'] = '查找可用的om版本' })[params.lan])
--local ver = _str_sub(_ver(), 0, 4)
host = host .. '1.?' .. '&lan=' .. params.lan
print(host)
local available, err = woo.http:new():get(host)
if err ~= nil then
print(err)
return
end
available = available.body
if _is_valid(available) then
available = _json_decode(available)
_out(available)
else
print('can not access network')
return
end
if available.code ~= 0 then
print(available.msg)
return
end
--_out(available)
print(({ ['en'] = 'there have the version[%s] valid',
['zh'] = '这里有版本[%s]可用' })[params.lan]:format(available.data.ver))
_file_save(params.install_dir .. '/.lan', params.lan)
-- 动态获取当前woo语言版本对应的最大可用om版本
local om_ver = available.data.ver
-- om_ver==1.1.2.3
local index = _str_index(om_ver, '.')
local right_ver = _str_sub(om_ver, index)
if _str_index(right_ver, '.') ~= -1 then
om_ver = _str_sub(om_ver, 0, index + 1) .. _str_replace(right_ver, '.', '')
end
-- om_ver==1.123
function downl()
local addr = available.data.url
if not addr then
print(({ ['en'] = 'server response err', ['zh'] = '服务器返回不正确' })[params.lan])
return
end
local curr_env = _env('OM_PATH')
print(({ ['en'] = 'current OM_PATH:%s,you choose install dir:%s',
['zh'] = '当前 OM_PATH:%s,你选择的安装地址:%s' })[params.lan]:format(curr_env, params.install_dir))
if not curr_env or curr_env ~= params.install_dir then
if _os() == 'windows' then
-- 添加环境变量,判断windows和unix系统
_exec({ 'cmd', '/c', 'setx OM_PATH ' .. params.install_dir })
else
_exec({ 'sh', '-c', 'echo export OM_PATH=' .. params.install_dir .. ' >> ~/.bashrc && source ~/.bashrc' })
end
print(({ ['en'] = 'env variable not correct ,correct it now', ['zh'] = '环境变量不正确,已经修正' })[params.lan])
else
print(({ ['en'] = 'env variable ok ,skip it', ['zh'] = '环境变量配置正确,跳过' })[params.lan])
end
local user = 'oshine'
local addrs = _str_split(addr, ',')
for i, addr_host in pairs(addrs) do
if _str_index(addr, 'gitee.com/') ~= -1 then
-- https://gitee.com/oshine/om/repository/archive/v1.0.11.zip
-- https://gitee.com/oshine/om/repository/archive/v1.0.11.zip?ref=v1.0.11&sha=fbaebe69d0e33c243f5c40a63cf8af26cb044b45&format=zip&captcha_type=yunpian&token=938e763645e446f78190ae5047f357b1&authenticate=784120e1cf514f91ac01d8251a81c696
addr_host = 'https://gitee.com/oshine/om/repository/archive/v' .. available.data.ver .. '.zip'
elseif _str_index(addr, 'github.com/') ~= -1 then
-- todo,install from github
end
print(({ ['en'] = 'start download from:%s',
['zh'] = '开始下载:%s' })[params.lan]:format(addr_host))
require('oshine/om', 'lib/download', '1.?')('om.zip', addr_host)
break
end
local real_path = params.install_dir .. '/' .. user .. '/om/' .. om_ver
print(({ ['en'] = 'finish download,start unzip:%s',
['zh'] = '下载完成开始解压到:%s' })[params.lan]:format(real_path))
local exit = _file_exist(real_path)
print('exit:', exit, real_path)
if exit then
local r = (({ ['en'] = 'om already install,are you sure replace it?(y/n):',
['zh'] = 'om 已经安装,是否替换?' })[params.lan])
if _readline(r) ~= 'y' then
return
end
print(({ ['en'] = 'delete old om folder...',
['zh'] = '删除旧的om文件夹...' })[params.lan])
_rm(real_path)
end
local unzip_res = _zip('unzip', 'om.zip', real_path .. '/..')
if unzip_res ~= true then
print(({ ['en'] = 'unzip fail:%s',
['zh'] = '解压失败:%s' })[params.lan]:format(unzip_res))
return
end
-- 解压完毕修改文件夹名称
print('修改文件夹名称:', real_path .. '/../om-v' .. om_ver, real_path)
_mv(real_path .. '/../om-v' .. om_ver, real_path)
_rm('om.zip')
end
--downl()
print(({ en = 'unzip success,install om dependencies package',
zh = '解压成功,安装om依赖包' })[params.lan])
--local git='https://gitee.com/oshine/om'
package.path = '@' .. params.install_dir .. '/?.woo'
print(package.path)
if not _mkdir(params.install_dir .. '/.download') then
_color('pre', 'mkdir dir fail.', 'red')
return
end
if not _mkdir(params.install_dir .. '/bin') then
_color('pre', 'mkdir dir fail.', 'red')
return
end
print('===before install===', params.install_dir, '/oshine/om/', om_ver)
local ins = require('oshine/om@1.?:installer'):new(params.install_dir .. '/oshine/om/' .. om_ver, params.lan)
if ins:checkPkg() then
ins:install({ }, true, om_ver)
else
print("not support you current os:" .. _os(1))
end
print(({ ['en'] = 'success', ['zh'] = '完成' })[params.lan])
1
https://gitee.com/oshine/om.git
git@gitee.com:oshine/om.git
oshine
om
om
master

搜索帮助