Я разрабатываю плагин для развертывания приложения Angular / React / Vue простым щелчком мыши. Итак, я попытаюсь проверить, установлено ли значение заполнителя или нет, чтобы использовать его или нет в моем вызове bash-скрипта. На самом деле я пытаюсь перенаправить мои различия "если" в действиях. Различными сценариями моих плагинов являются:
клиент дает публичный git (поэтому я просто использую URL)
клиент дает публичный gitс определенной папкой результата приложения сборки (в angular / vue это часто / dist и in response это может быть / build)
по умолчанию, если вы не укажете папку, значением по умолчанию в моем bash является / dist(потому что это классическая папка)
клиент выдает приватный git с токеном
клиент выдает приватный git с токеном и определенной папкой сборки
Итак, в этой теме я покажу вам мой 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 (этот скрипт работает, я показываю его, потому что это ссылка с моим манифестом)
#!/bin/bash
link=$1
# 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
Итак, на данный моментя вижу это в журнале, когда клиент просто поставил публичный git:
ПРЕДУПРЕЖДЕНИЕ: если (&& && https://github.com/user/js-app-forBuild): недопустимое условие. Ответ: {"result": 1704, "line": 3, "response": null, "source": "hx-core", "error": "org.mozilla.javascript.EvaluatorException: синтаксическая ошибка"}
---> эта строка соответствует моему первому "если";другие журналы похожи
Я просто хочу проверить, установлена метка-заполнитель или нет. На самом деле используются значения метки-заполнителя, а не то, что я хочу (потому что, например, если токен не указан в настройках, "если "где есть токен, то var будет пустым, а" если "не получилось.