Добавление кавычек в эхо-строку appveyor.yml - PullRequest
0 голосов
/ 28 октября 2018

У меня есть эта строка, которая добавляет некоторую информацию о версии в мою сборку:

install:
  - 'echo "export const VERSION = Git Hash: %APPVEYOR_REPO_COMMIT%" > version.js'

очевидно, что это недопустимый JS, потому что отсутствуют кавычки.Может ли кто-нибудь помочь мне, чтобы я мог записать эту строку в мой version.js файл:

export const VERSION = 'Git Hash: some_hash'

Я пробовал некоторые варианты экранированных и неэкранированных кавычек, но время сборки несколько мучительно.

1 Ответ

0 голосов
/ 28 октября 2018

Вы тратите впустую использование одинарных кавычек, цитируя этот элемент последовательности.Вы не можете иметь простой скаляр (из-за двоеточия в середине предложения + пробел), но часто гораздо лучше использовать скаляры в стиле буквального блока.Следующее эквивалентно вашему YAML:

install:
  - |-
    echo "export const VERSION = Git Hash: %APPVEYOR_REPO_COMMIT%" > version.js

И поэтому вы можете использовать одинарные кавычки для параметра echo и по-прежнему иметь двойные кавычки в них:

install:
  - |-
    echo 'export const VERSION = "Git Hash: %APPVEYOR_REPO_COMMIT%"' > version.js

(-после того, как | потребуется для удаления последнего символа новой строки)

В качестве альтернативы, если Appveyor использует относительно стандартное эхо, вы можете использовать его опцию -e:

    -e     enable interpretation of backslash escapes

, в этом случае вам не нужно использовать скаляры литерального стиля блока, чтобы получить что-то менее читаемое:

install:
  - 'echo -e "export const VERSION = \"Git Hash: %APPVEYOR_REPO_COMMIT%"" > version.js'

Обратите внимание, что, согласно официальному FAQ по YAML, всякий раз, когда это возможноправильное расширение для файла YAML: .yaml.Вы можете указать Appveyor не использовать расширение по умолчанию .yml, используя Custom configuration .yml [sic!] file name.Для моего парсера YAML я также установил, что это скрытый файл: .appveyor.yaml

...