일부 스마트 파이핑 및 코딩을 사용하여 yaml 파일을 재귀 적으로 병합 할 수 있습니까? PHP에서, 나는 그것들의 배열을 만든다 (각 모듈은 /에서 시스템의 설정 노드를 추가하거나 업데이트 할 수있다).yaml 구성 파일을 bash로 재귀 적으로 병합
목표는 모든 개별 모듈 폴더의 구성 파일을 큰 병합 파일로 병합하는 내보내기 셸 스크립트입니다. FTP를 통해 새 버전을 배포하는 경우 모듈식이 필요하지 않으며 빠르고 효율적입니다.
그것은 PHP 함수처럼 행동한다 : array_merge_recursive
파일 시스템 구조는 다음과 같다 :
date:
format:
date_regular: %d-%m-%Y
그리고, 말, 할 수있는 모듈 :
mod/a/config/sys.yml
mod/a/config/another.yml
mod/b/config/sys.yml
mod/b/config/another.yml
mod/c/config/totally-new.yml
sys/config/sys.yml
구성의 모습 이 :
date:
format:
date_regular: regular dates are boring
date_special: !!!%d-%m-%Y!!!
지금까지 내가 가진 :
는#!/bin/bash
#........
cp -R $dir_project/ $dir_to/
for i in $dir_project/mod/*/
do
cp -R "${i}/." $dir_to/sys/
done
물론 이것은 루프에서 기존의 모든 설정 파일 .. 기본적으로
(파일이 고유 한 이름있는 시스템의 나머지 부분), 나는에 대한 YAML 파서를 필요로 파괴 명령 줄 및 array_merge_recursive와 같은 옵션이 있습니다. 그런 다음 yaml 작가가 합쳐져 병합되었습니다. 나는 bash가 이것을 자르지 않기 때문에 파이썬을 배워야 할까 봐 걱정한다.
그리고 어떻게 의존성을 onliner에 설치하겠습니까? perl을 설치 한 리눅스 시스템에는 포함시킬 수 있지만이 특별한 의존성은 포함하지 마십시오. 예를 들어 데비안 시스템을 사용하십시오. perl에 오신 것을 환영합니다? – vaab
다른 언어로 된 종속성 문제를 해결할 때와 똑같습니다. 라이브러리를 설치하십시오. 다음은 이미 CPAN 모듈을 설치하는 방법에 대한 몇 가지 질문입니다. 또는 OS 사전 포장 패키지를 사용하십시오. 나는 데비안에 대해 아무것도 모른다. 또는 이미 시스템에 설치되어있는 다른 라이브러리를 사용하십시오. (ay 언어로). – jm666
이것은 CPAN의 모듈로도 사용할 수있는 것 같지 않으므로이를 설치하는 것에 대한 조언은 약간 분명한 것입니다. 내가 찾은 유일한 참고 자료는 [이 Github 저장소] (https://github.com/andrefs/YAML-Merge-Simple)입니다. – Caleb