我想验证我的设置 (manifest.jps) 的占位符是否已设置或未在我的 bash 中使用它们(bash 在清单中调用)
I want to verify if placeholders of my settings (manifest.jps) are set or not to use them in my bash (bash called in manifest)
我开发了一个用于部署应用程序的插件 Angular/React/Vue,只需单击一下即可。
因此,我尝试验证占位符的值是否已设置或未在我的 bash 脚本调用中使用它。
实际上,我尝试在操作中重定向我的差异 "if"。
我的插件的不同场景是:
客户给出的是publicgit(所以我只使用url)
client 给出的是 public git 以及构建应用程序结果的特定文件夹
(在 angular/vue 中它通常是 /dist 而在反应中它可以是 /build)
默认情况下,如果您不指定文件夹,我的 bash 中的默认值为 /dist(因为它是经典文件夹)
客户端用令牌
给私有git
client 给 private git with token 和 build
的特定文件夹
因此,在本主题中,我将向您展示我的 manifest.jps 和 bash 脚本以了解我的问题。
我希望你能帮助我 :)(对不起我的英语我会努力改善它)
settings:
fields:
- name: gitRepo
caption: Git Repo Url*
type: string
required: true
default: ''
regex: "^https?:\/\/.+$"
regexText: Incorrect URL. HTTPS link to Git repository is required.
- name: gitToken
caption: Token
type: string
required: false
default: ''
- name: buildPath
caption: your path for build
type: string
required: false
default: ''
onInstall:
- if ( ${settings.gitToken} && ${settings.buildPath} && ${settings.gitRepo} ): totalScript
- if ( ${settings.gitRepo} && ${settings.gitToken} ): scriptToken
- if ( ${settings.gitRepo} && ${settings.buildPath} ): scriptPath
- if ( ${settings.gitRepo} ): scriptRepo
actions:
totalScript:
cmd [cp]:
- curl -fsS https://raw.githubusercontent.com/user/scripts-sources/master/test-settings.sh | /bin/bash -s ${settings.gitRepo} -t ${settings.gitToken} -p ${settings.buildPath}
scriptToken:
cmd [cp]:
- curl -fsS https://raw.githubusercontent.com/user/scripts-sources/master/test-settings.sh | /bin/bash -s ${settings.gitRepo} -t ${settings.gitToken}
scriptPath:
cmd [cp]:
- curl -fsS https://raw.githubusercontent.com/user/scripts-sources/master/test-settings.sh | /bin/bash -s ${settings.gitRepo} -p ${settings.buildPath}
scriptRepo:
cmd [cp]:
- curl -fsS https://raw.githubusercontent.com/user/scripts-sources/master/test-settings.sh | /bin/bash -s ${settings.gitRepo}
test-settings.sh(这个脚本有效,我显示它是因为它的 link 与我的清单)
#!/bin/bash
link=
# Options
#
while getopts "htp" OPTION
do
case $OPTION in
h)
usage
;;
t) token=$OPTARG
;;
p) pathBuild_form=$OPTARG
;;
esac
done
if [[ -z "$token" ]]
then
if [[ $link == *".git"* ]];
then
repo="https://"$(echo $link | cut -d'/' -f4 )@$(echo $link | cut -d'/' -f3)/$(echo $link | cut -d'/' -f4)/$(echo $link | cut -d'/' -f5)
else
repo="https://"$(echo $link | cut -d'/' -f4 )@$(echo $link | cut -d'/' -f3)/$(echo $link | cut -d'/' -f4)/$(echo $link | cut -d'/' -f5).git
fi
else
if [[ $link == *".git"* ]];
then
repo="https://"$(echo $link | cut -d'/' -f4 ):$token@$(echo $link | cut -d'/' -f3)/$(echo $link | cut -d'/' -f4)/$(echo $link | cut -d'/' -f5)
else
repo="https://"$(echo $link | cut -d'/' -f4 ):$token@$(echo $link | cut -d'/' -f3)/$(echo $link | cut -d'/' -f4)/$(echo $link | cut -d'/' -f5).git
fi
fi
git clone $repo
pathBuild=$(echo $link | cut -d'/' -f5 | cut -f1 -d".")
npm install --prefix ./$pathBuild
npm run build --prefix ./$pathBuild
if [[ ! -z "$pathBuild_form" ]]
then
mv $pathBuild/$pathBuild_form/* /home/jacqueax/MyApp
else
var=$(ls $pathBuild/dist)
if [[ $var == *"index"* ]]; then
mv $pathBuild/dist/* /home/jacqueax/MyApp
else
mv dist/$var/* /home/jacqueax/MyApp
fi
fi
rm -rf $pathBuild
所以目前我在日志中看到这个,当客户刚刚输入 public git :
警告:if ( && && https://github.com/user/js-app-forBuild ):无效条件。响应:{"result":1704,"line":3,"response":null,"source":"hx-core","error":"org.mozilla.javascript.EvaluatorException: syntax error" }
---> 这一行对应于我的第一个 "if";其他日志类似
我只想验证占位符是否已设置或 not.Actually 是否使用了占位符的值,但这不是我想要的(因为如果例如令牌未放入设置 "if" 有令牌的地方 var 将为空并且 "if" 失败。
占位符可以替换为默认值或空字符串。
所有列出的 IF 函数可能如下所示:
if ( '${settings.gitToken:}' && '${settings.buildPath:}' && '${settings.gitRepo:}' ): totalScript
或
if ( settings.gitToken && settings.buildPath && settings.gitRepo ): totalScript
我开发了一个用于部署应用程序的插件 Angular/React/Vue,只需单击一下即可。 因此,我尝试验证占位符的值是否已设置或未在我的 bash 脚本调用中使用它。 实际上,我尝试在操作中重定向我的差异 "if"。 我的插件的不同场景是:
客户给出的是publicgit(所以我只使用url)
client 给出的是 public git 以及构建应用程序结果的特定文件夹 (在 angular/vue 中它通常是 /dist 而在反应中它可以是 /build)
默认情况下,如果您不指定文件夹,我的 bash 中的默认值为 /dist(因为它是经典文件夹)
客户端用令牌
给私有git
client 给 private git with token 和 build
的特定文件夹
因此,在本主题中,我将向您展示我的 manifest.jps 和 bash 脚本以了解我的问题。
我希望你能帮助我 :)(对不起我的英语我会努力改善它)
settings:
fields:
- name: gitRepo
caption: Git Repo Url*
type: string
required: true
default: ''
regex: "^https?:\/\/.+$"
regexText: Incorrect URL. HTTPS link to Git repository is required.
- name: gitToken
caption: Token
type: string
required: false
default: ''
- name: buildPath
caption: your path for build
type: string
required: false
default: ''
onInstall:
- if ( ${settings.gitToken} && ${settings.buildPath} && ${settings.gitRepo} ): totalScript
- if ( ${settings.gitRepo} && ${settings.gitToken} ): scriptToken
- if ( ${settings.gitRepo} && ${settings.buildPath} ): scriptPath
- if ( ${settings.gitRepo} ): scriptRepo
actions:
totalScript:
cmd [cp]:
- curl -fsS https://raw.githubusercontent.com/user/scripts-sources/master/test-settings.sh | /bin/bash -s ${settings.gitRepo} -t ${settings.gitToken} -p ${settings.buildPath}
scriptToken:
cmd [cp]:
- curl -fsS https://raw.githubusercontent.com/user/scripts-sources/master/test-settings.sh | /bin/bash -s ${settings.gitRepo} -t ${settings.gitToken}
scriptPath:
cmd [cp]:
- curl -fsS https://raw.githubusercontent.com/user/scripts-sources/master/test-settings.sh | /bin/bash -s ${settings.gitRepo} -p ${settings.buildPath}
scriptRepo:
cmd [cp]:
- curl -fsS https://raw.githubusercontent.com/user/scripts-sources/master/test-settings.sh | /bin/bash -s ${settings.gitRepo}
test-settings.sh(这个脚本有效,我显示它是因为它的 link 与我的清单)
#!/bin/bash
link=
# Options
#
while getopts "htp" OPTION
do
case $OPTION in
h)
usage
;;
t) token=$OPTARG
;;
p) pathBuild_form=$OPTARG
;;
esac
done
if [[ -z "$token" ]]
then
if [[ $link == *".git"* ]];
then
repo="https://"$(echo $link | cut -d'/' -f4 )@$(echo $link | cut -d'/' -f3)/$(echo $link | cut -d'/' -f4)/$(echo $link | cut -d'/' -f5)
else
repo="https://"$(echo $link | cut -d'/' -f4 )@$(echo $link | cut -d'/' -f3)/$(echo $link | cut -d'/' -f4)/$(echo $link | cut -d'/' -f5).git
fi
else
if [[ $link == *".git"* ]];
then
repo="https://"$(echo $link | cut -d'/' -f4 ):$token@$(echo $link | cut -d'/' -f3)/$(echo $link | cut -d'/' -f4)/$(echo $link | cut -d'/' -f5)
else
repo="https://"$(echo $link | cut -d'/' -f4 ):$token@$(echo $link | cut -d'/' -f3)/$(echo $link | cut -d'/' -f4)/$(echo $link | cut -d'/' -f5).git
fi
fi
git clone $repo
pathBuild=$(echo $link | cut -d'/' -f5 | cut -f1 -d".")
npm install --prefix ./$pathBuild
npm run build --prefix ./$pathBuild
if [[ ! -z "$pathBuild_form" ]]
then
mv $pathBuild/$pathBuild_form/* /home/jacqueax/MyApp
else
var=$(ls $pathBuild/dist)
if [[ $var == *"index"* ]]; then
mv $pathBuild/dist/* /home/jacqueax/MyApp
else
mv dist/$var/* /home/jacqueax/MyApp
fi
fi
rm -rf $pathBuild
所以目前我在日志中看到这个,当客户刚刚输入 public git :
警告:if ( && && https://github.com/user/js-app-forBuild ):无效条件。响应:{"result":1704,"line":3,"response":null,"source":"hx-core","error":"org.mozilla.javascript.EvaluatorException: syntax error" }
---> 这一行对应于我的第一个 "if";其他日志类似
我只想验证占位符是否已设置或 not.Actually 是否使用了占位符的值,但这不是我想要的(因为如果例如令牌未放入设置 "if" 有令牌的地方 var 将为空并且 "if" 失败。
占位符可以替换为默认值或空字符串。 所有列出的 IF 函数可能如下所示:
if ( '${settings.gitToken:}' && '${settings.buildPath:}' && '${settings.gitRepo:}' ): totalScript
或
if ( settings.gitToken && settings.buildPath && settings.gitRepo ): totalScript