Я хочу проверить, установлены ли заполнители моих настроек (manifest.jps) или не использовать их в моем bash (bash вызывается в manifest) - PullRequest
0 голосов
/ 24 октября 2019

Я разрабатываю плагин для развертывания приложения 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 будет пустым, а" если "не получилось.

1 Ответ

1 голос
/ 26 октября 2019

Заполнители могут быть заменены значением по умолчанию или пустой строкой. Все перечисленные функции IF могут выглядеть следующим образом:

if ( '${settings.gitToken:}' && '${settings.buildPath:}' && '${settings.gitRepo:}' ): totalScript

или

if ( settings.gitToken && settings.buildPath && settings.gitRepo ): totalScript

Проверьте нашу документацию Значения по умолчанию для заполнителей

...