Formato de arquivo de configuração agnóstico de idioma

5

Atualmente, muitos projetos usam mais de uma linguagem de programação / script e, no padrão DRY tradição estes não devem ter arquivos de configuração separados se eles precisarem da mesma informação. Depois de uma pequena pesquisa em /etc , parece que muitas sintaxes incompatíveis são usadas no Ubuntu:

  • varname=value - /etc/adduser.conf
  • varname: value - /etc/debconf.conf
  • varname = value - /etc/deluser.conf
  • $varname value /etc/insserv.conf
  • varname value - /etc/login.defs
  • set varname value - /etc/lftp.conf
  • [section]
        varname = value
    

    /etc/mke2fs.conf

  • section
        label varname value
        set varname value
    

    /etc/smartd.conf

Até onde eu posso ver, nenhuma delas é " Yaml ou XML ou JSON , "(um deles é INI embora). Qual formato você recomendaria (e por quê) para um projeto que precisa fornecer valores simples ( debug = true , welcome = "Hello world!" , threads = 4 ), matrizes de valores simples ( servers = [dev, test, prod] ) e valores que se referem a outras variáveis ( thread_msg = "Using $threads threads" ) para Bash , Perl e PHP ?

    
por l0b0 12.07.2011 / 14:36

2 respostas

3

Os primeiros 3 são formatos de serialização que não são formatos de configuração. Esses formatos são fáceis para as máquinas lerem e escreverem, mas não são tão fáceis para os humanos lerem e escreverem. Do não use-os para configuração. Seus usuários provavelmente irão odiar você por isso.

Além disso, alguns desses arquivos são simplesmente NAME value pairs. Outros podem não ser realmente arquivos de configuração, mas arquivos shell, o que significa que eles podem basicamente ser originados por um shell para processamento.

Sugiro usar um formato de configuração real como INI ou Apache Style ( Config::General em Perl)

Config::Any é uma boa opção do módulo perl para carregar um config, porque permite ao usuário escolher essencialmente o formato de sua escolha.

    
por 12.07.2011 / 17:37
4

Eu usaria um formato, que pode ser originado pelo bash como está, porque no bash não é fácil ler, analisar e executar outros formatos, enquanto o Perl é mais ou menos uma linguagem, escrita para tais tarefas, e no PHP também deve ser fácil.

    
por 12.07.2011 / 16:05