Olá novamente. Semana (este artigo está em conserva por muito tempo na lista de pendências) Algum tempo atrás, falei sobre como usar o rcm para o gerenciamento de configurações normais. Temos um módulo fantoche em nossa empresa que distribui as configurações pessoais do usuário a todos os hosts aos quais ele tem acesso. Por conseguinte, quero o seguinte:
- Tenho minhas próprias configurações para tudo o que eu uso (vim, zsh, git, etc.)
- Atualize-os como eles atualizam no repositório dotfiles
- Tudo isso - sem gestos desnecessários
As ferramentas
Tudo o que é necessário já é usado por mim, a saber:
Não há nada de complicado aqui: implantamos tarballs descompactando seu conteúdo nos hosts. Somente arquivos e diretórios de uma lista específica são gerenciados, moendo completamente cada coroa com cada implantação. Assim, se o tarball mudou, tudo na lista $HOME
é esfregado. Caso contrário, o conteúdo de $ HOME permanecerá inalterado. Um script separado é responsável por (re) empacotar a pasta com os arquivos de origem dos arquivos pessoais; parece bastante trivial:
Como criar um novo tarball de bola de confirmação
Implantar arquivos de ponto que não estão em $ HOME
Como eu já tenho uma ferramenta com a qual implanto configurações em vários hosts, obviamente eu a usarei. Você só precisa consertar algo e fazer o rcm
copiar os arquivos para onde eu preciso. No entanto, o rcm sempre define os arquivos de ponto em $ HOME, não há argumentos de linha de comando para alterar esse comportamento.
Após algumas experiências e seleção na fonte, percebi que você pode alterar diretamente $ HOME, então o comportamento dos utilitários de todos os comandos rcm será alterado da seguinte forma: cada um dos utilitários lsrc, mkrc, rcdn, rsup
lerá ${HOME}/.rcrc
e usar ${HOME}/.dotfiles
por padrão. Portanto, basta criar o mesmo ${HOME}/.rcrc
com todos os parâmetros necessários.
A maneira mais fácil é deixar um espaço em branco na pasta inicial e preenchê-lo do zero a cada confirmação. Um exemplo de como ele pode ser visto no repositório . Essa pasta é ignorada em todos os hosts sem a marca pessoal e , portanto, não interfere na configuração principal. Um único arquivo .rcrc contém todos os parâmetros para a lógica de cópia de arquivo. Apenas farei algumas observações:
- Sem
$SYMLINK_DIRS
rcup
funciona irremediavelmente por muito tempo, criando uma lista completa de arquivos para copiar. Com esta opção, junto com $COPY_ALWAYS
utilitário simplesmente copia a pasta inteira como cp -r
sem problemas desnecessários - Obviamente, não é necessário muito em servidores remotos, tudo isso está listado em
$EXCLUDES
(com exceção dos plugins do vim, eles precisam ser removidos no gancho porque $SYMLINK_DIRS
) - Como
${HOME}/.dotfiles
para de funcionar por razões óbvias, você também deve substituir $DOTFILES_DIRS
Isso é tudo. Agora você pode copiar a pasta tag-personal em qualquer lugar, substituir ${HOME}
por um tempo e executar rcup
WORK_DIR="${HOME}/.dotfiles/tag-personal" _OLD_HOME=$HOME HOME="${HOME}/some/long/custom/path" cp -r "${WORK_DIR}" "${HOME}" rcup -v HOME=$_OLD_HOME
Uau! Mas eu quero outra coisa ...
Automatizamos a "implantação" de configurações para $ HOME personalizados
Tornar esse "algo" fácil, o git neste momento ajudará com seus ganchos. Há um arquivo executável .git/hooks/post-commit
seguinte conteúdo:
Agora, após cada confirmação no repositório com arquivos de ponto, esse script será iniciado.
Tudo, depois disso, resta fazer um commit + enviar para o repositório com dados pessoais e esperar até que a mágica da automação leve minhas configurações para os hosts de trabalho.
Por que complicar coisas assim?
O fato é que, embora a empresa não possuísse ferramentas para implantar uma configuração pessoal em hosts, não havia necessidade desse kit. Mas assim que surge a oportunidade, o apetite cresce instantaneamente. Alguns de meus colegas ficaram satisfeitos com o fato de terem trazido três arquivos para os hosts, como .vimrc .bashrc .gitconfig
. No entanto, durante muito tempo eu estava afiando, corrigindo e polindo com amor todo um conjunto de várias ferramentas. Somente a ~/.vim
após a instalação de todos os plug-ins pesa 427 MB (sim, 218 deles são YCM, e eu não a arrasto para os servidores, e depois de limpar e empacotar tudo perde peso até 3 MB).
Provavelmente, alguém vai pensar que isso é demais e poderia ter sido feito com as mãos. Talvez nem todos concordem com isso.
Espero que alguém tenha uma necessidade quase física de se sentir confortável nas estações de trabalho, quase em casa, e as ferramentas permitam. Use sua saúde e que a automação esteja conosco!