#nop vim: set filetype=tt:; /* 模块名称:框架依赖的工具函数 模块说明:本文件属于框架代码的一部分,不建议修改。如有需求请在 GitHub 发 issue 或者 PR 版权声明:本文件属于 PaoTin++ 的一部分 =========== PaoTin++ © 2020~2023 的所有版权均由担子炮(dzp ) 享有并保留一切法律权利 你可以在遵照 GPLv3 协议的基础之上使用、修改及重新分发本程序。 =========== */ #func {existsSession} { #local session {%1}; #if { !@existsFunction{$session} && {@{$session}{true}} == {true} } { #return 1; }; #else { #return 0; }; }; #func {existsVar} { #local var {%1}; #if { &{$var} > 0 } { #return 1; }; #else { #return 0; }; }; #func {existsAlias} { #local pName {%1}; #local pClass {%2}; #info alias save; #local idx {}; #foreach {*{info[ALIASES][]}} {idx} { #local name {$info[ALIASES][$idx][arg1]}; #local class {$info[ALIASES][$idx][class]}; #if { "$name" == "$pName" && ( "$pClass" == "" || "$class" == "$pClass" ) } { #return 1; }; }; #return 0; }; #func {existsFunction} { #local pName {%1}; #local pClass {%2}; #info function save; #local idx {}; #foreach {*{info[FUNCTIONS][]}} {idx} { #local name {$info[FUNCTIONS][$idx][arg1]}; #local class {$info[FUNCTIONS][$idx][class]}; #if { "$name" == "$pName" && ( "$pClass" == "" || "$class" == "$pClass" ) } { #return 1; }; }; #return 0; }; #func {existsJobPlugin} { #local job {%1}; #return {@existsPlugin{job/$job}}; }; #func {existsPlugin} { #local plugin {%1}; #if { @existsFile{plugins/${plugin}.tin} } { #return 1; }; #if { @existsFile{plugins/$plugin/__init__.tin} } { #return 1; }; #if { @existsFile{plugins/$plugin/__main__.tin} } { #return 1; }; #return 0; }; #func {mkdir} { #local dir {%1}; #line quiet #log make {$dir}; #return @existsDir{$dir}; }; #func {uuid} { #local now {}; #local random {}; #math random {1d1000}; #format random {%%03d} {$random}; #format now {%U}; #return {${now}.$random}; }; #alias {load-config} { #local config {%1}; #if { @isEmpty{$config} } { xtt.Usage load-config; #return; }; load-file etc/${config}.tin; }; #func {getenv} { #local name {%1}; #info environ save; #return {$info[ENVIRON][$name]}; }; #func {uname} { #info system save; #local uname {$info[SYSTEM][OS]}; #unvar info[SYSTEM]; #if { "$uname" == "UNKNOWN" } { #line quiet #script uname {uname -s}; #if { &uname[] == 1 } { #local uname {$uname[1]}; }; #else { #local uname {UNKNOWN}; }; }; #if { "$uname" == "Linux" } { #if { @existsFile{/.dockerenv} } { #local uname {Docker}; }; #elseif { @existsDir{/data/data/com.termux/files} } { #local uname {Android}; }; #elseif { @existsFile{/ish/version} } { #local uname {iOS}; }; #elseif { @existsFile{/proc/sys/fs/binfmt_misc/WSLInterop} } { #line quiet #script uname {uname -r}; #local uname {$uname[1]}; #if { "$uname" == "%*Microsoft%*" } { #local uname {WSL1}; }; #elseif { "$uname" == "%*microsoft%*" } { #local uname {WSL2}; }; #else { #local uname {WSL}; }; }; }; #return {$uname}; }; #func {osname} { #local uname {@uname{}}; #if { "$uname" == "Darwin" } { #return {macOS}; }; #if { "$uname" != "Linux" } { #return {$uname}; }; #local tmp {}; #line quiet #scan file {/etc/os-release} { #regex {&1} {^ID={[^\n]*}\n} {#var tmp {&&1}} }; #replace tmp {"} {}; #replace tmp {%*{-| }%*} {&1}; #switch {"$tmp"} { #case {""} {#0}; #case {"opensuse"} {#local uname {openSUSE}}; #case {"alpine"} {#local uname {@if{@existsFile{/.dockerenv};Docker;Alpine}}}; #default {#local uname {@str.Capital{$tmp}}}; }; #unvar tmp; #return {$uname}; }; #var TTYPE {@osname{}}; #func {uptime} { #info session save; #local now {0}; #format now {%T}; #local uptime {0}; #math uptime {$now - $info[SESSION][CREATED]}; #return {$uptime}; };