Carregar parâmetros de comando do arquivo de nível superior

1

Eu me deparei com um problema interessante que ainda não consegui resolver satisfatoriamente.

Considere um comando de anotações que aceita dois argumentos:

note $project  $note

Isso simplesmente arquiva o conteúdo de $ note em um projeto de acordo com o primeiro parâmetro.

Agora tenho dois projetos em que insiro alguns dados:

note "projectA" "asdfasdf"
note "projectB" "weradfvsaf"

Isso funcionou bem quando eu tinha poucos projetos. Então eu tenho mais projetos e tive uma idéia: Use o caminho atual para determinar o nome do projeto:

+~
+~/projects/projectA
+~/projects/projectB/subdir
+~/projects/...

Então eu escrevi um wrapper para a função acima que analisa o nome do projeto fora do caminho do diretório.

Isso funcionou muito bem, até que comecei a ter vários projetos abrangendo vários caminhos:

+~
+~/projects/projectA
+~/projects/projectB/subdir
+~/projects/temp/projectA
+~/test/projectA

Agora meu problema é: Como posso continuar sendo preguiçoso? Eu pensei que a maneira mais fácil seria criar um arquivo, por exemplo project.rc, que contém apenas o nome do projeto que está contido na pasta e todas as subpastas de onde ele está localizado. O wrapper simplesmente procura no diretório atual por esse arquivo e continua a percorrer para cima na árvore de diretórios até que o arquivo seja encontrado. Em seguida, o arquivo é lido e o parâmetro $ project é definido de acordo.

Eu não estou realmente familiarizado com o shell script; Alguém poderia encontrar uma solução para esse problema?

    
por Chris 23.04.2012 / 19:37

1 resposta

3

Isso fará o truque:

 PPATH=$(while [[ "$PWD" != / && ! -f project.rc ]]; do cd ..; done; echo "$PWD")

A variável PPATH conterá o caminho do projeto do qual você chama o comando. Você pode encontrar todas as informações necessárias em $PPATH/project.rc . (A variável será posicionada em / se não houver tal arquivo nos diretórios pai).

    
por 23.04.2012 / 19:47