Как назначить вывод команды переменной Makefile при сохранении символов новой строки - PullRequest
0 голосов
/ 03 марта 2019

Я бы хотел присвоить выходные данные команды переменной Makefile, но есть ограничение в том, что мне нужно сохранить символы новой строки.

Значением является закрытый ключ, отсюда следующий кодприведет к неправильному ключу:

SHELL=/bin/bash

APP_NAME?=foo

ifdef CI
    export DEPS_PRIVATE_KEY=$(shell echo $(CI_BASE64_PRIVATE_KEY) | base64 -d)
endif

build:
    @docker build --no-cache --build-arg DEPS_PRIVATE_KEY -t $(APP_NAME) .
.PHONY: build

Я понимаю, что могу установить значение в bash, а затем вызвать make build следующим образом:

DEPS_PRIVATE_KEY="$(echo $CI_BASE64_PRIVATE_KEY | base64 -d)" make build

, но мне было интересно, если этоМожно заключить эту логику в Makefile.

Любая помощь очень ценится.

1 Ответ

0 голосов
/ 03 марта 2019

Использование переменной make в качестве промежуточного звена для переменной среды оболочки, особенно когда значения представляют собой многострочные строки, вероятно, бесполезно сложно.Таким образом, возможно, проще всего добавить в рецепт определение переменной среды:

$ cat Makefile
build:
    @export TXT="$$(echo "$$(B64)" | base64 -d)"; \
    printenv TXT
$ make B64="$(printf 'a\nb\n' | base64)"
export TXT="$(echo "YQpiCg==" | base64 -d)"; \
printenv TXT
a
b
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...