Inicialmente, o Dotctrl surgiu apenas para controlar "aquivos dotfiles", porem, ao decorrer, ele se tornou mais do que isso. Agora, o Dotctrl é um mantenedor de qualquer tipo arquivo e pasta dentro do seu próprio repositório particular.
Isso é demais!
O Dotctrl irá gerenciar os elementos do diretório HOME do usuário; funcionando em cima de um arquivo de configuração (dotctrl.json
) que contém os caminhos do local de origem dos elementos.
Todos os elementos gerenciados pelo Dotctrl são mantidos no repositório/pasta "dotctrl".
Veja uma demonstração:
- Suporta aos idiomas: Inglês Americano e Português brasileiro;
- Crie (ou não) vários repositórios para seus elementos;
- Abandone a criação de links simbólicos manuais enormes;
- O repositório armazena a mesma estrutura de caminho que seu local (
$HOME
) original; - Gerencie elementos únicos ou em massa;
- Restaure os elementos do repositório para sua localização original com um único comando;
- E muito mais :)
Para funcionar corretamente, você precisará primeiro:
Linux
oumacOS
Python
(v3.9 ou recente);Pip
(v19.3 ou recente) deve ser instalado;Git
(v2.0 ou recente);- Um desse editor vim, nano, emacs ou micro devem ser instalado;
É hora de instalar o Dotctrl. Para fazer isso, faça:
python3 -m pip install dotctrl --user
NOTA: Se você estiver instalando no ambiente local do usuário, certifique-se de adicionar as variáveis de ambiente ao arquivo
zshrc
ou arquivo.bashrc
.
Após instalar o pacote, você precisa criar o repositório Dotctrl em uma pasta vazia no local do sua escolha. Recomendamos sempre criar no diretório raiz /home ou /Users, pois criando na pasta do usuário, pode ser perdido se o usuário for excluído. Com isso, veja o exemplo abaixo:
Linux:
sudo mkdir -p /home/.dotfiles; cd $_
sudo chown -R $(whoami) /home/.dotfiles
sudo chmod -R 700 /home/.dotfiles
dotctrl init
macOS:
sudo mkdir -p /Users/.dotfiles; cd $_
sudo chown -R $(id -un) /Users/.dotfiles
sudo chmod -R 700 /Users/.dotfiles
dotctrl init
Você pode contornar todos esses comandos acima usando a flag --auto
. O Dotctrl criará automaticamente uma base
diretório para armazenar os dados, no entanto, você DEVE ter permissão sudo.
Recomendamos usar fortemente está opção caso tenha permissão.
dotctrl init --auto
Esta flag faz com que o Dotctrl crie um repositório git dentro do repositório Dotctrl.
dotctrl init --git
Você também pode combinar está flag com a flag --auto
:
dotctrl init --auto --git
Com a base já criada, é hora de você PUXAR os elementos para a base do Dotctrl com o comando pull
.
Puxe UM elemento para o repositório Dotctrl:
dotctrl pull --e .zprofile
Se você quiser fazer um pull massivo, faça:
dotctrl pull
Nota: Esta opção só é possível se você passar os elements manualmente no arquivo dotctrl.json ou não ter limpadado o registro.
Depois de puxar o(s) elemento(s), crie links simbólicos para eles em seus locais originais:
dotctrl link --e .zprofile
Se você quiser realizar um link massivo, faça:
dotctrl link
Nota: Esta opção só é possível se você passar os elements manualmente no arquivo dotctrl.json ou não ter limpado o registro.
Desvincule o elemento do repositório com o local de origem:
dotctrl unlink --e .zprofile
Se você quiser desvincular elementos de forma massiva, faça:
dotctrl unlink
Nota: Esta opção só é possível se você passar os elements manualmente no arquivo dotctrl.json ou não ter limpadado o registro.
Este comando irá tirar um elemento do repositório Dotctrl e restaurar para seu local original:
dotctrl restore --e .zprofile
Se você quiser realizar uma restauração massiva, faça:
dotctrl restore
Nota: Por padrão, ao restaurar elemento(s) para o local de origem, o Dotctrl NÃO remove os elemento do registro (
dotctrl.json
). Para limpar, veja --autoclean.
Este comando trás informações do repositório, veja abaixo alguns de seu subcomandos:
Faça uma verificação para ver se há elementos a serem vinculados:
dotctrl repo --check
Verifique os elementos já importados no repositório do Dotctrl.
dotctrl repo --ls
Com o comando abaixo você pode ver algumas informações do repositório Dotctrl, como quantidade de pastas e arquivos,
o caminho absoluto do repositório e se a variável de ambiente DOTCTRL_PATH
estiver ativa.
dotctrl repo --info
Pesquisa qualquer elemento dentro do repositório do Dotctrl. Para isso, use o comando:
dotctrl find --name .zprofile
Nota: Envolva o elemento a ser encontrar com aspas duplas caso o mesmo tenha espaços no nome.
Este comando irá manipular o arquivo de configuração do Dotctrl, veja abaixo alguns subcomandos do mesmo.
Faz uma limpeza nos elementos presentes no arquivo de configuração do Dotctrl. Qualquer elemento que estiver presente no arquivo de configuração do Dotctrl e não EXISTIR no repositório, serão eliminados do arquivo de configuração.
Geralmente o --autoclean
é usado após usar o comando de restauração de elementos.
dotctrl config --autoclean
Dê uma espiada no arquivo de configuração do Dotctrl pelo terminal.
Permite editar o arquivo de configuração do Dotctrl no próprio terminal usando o comando:
dotctrl config --open
Nota: Usa por padrão o editor
vim
, caso não tenha, irá tentar usar onano
,emacs
oumicro
.
Use está flag para alterar o idioma do Dotctrl. No momento, o Dotctrl dá suporte para 2 (dois) idiomas, eles são: Inglês Americano e Português Brasileiro. Ao usar o comando abaixo, irá mostrar uma lista para você escolher qual idioma quer usar. A alteração é instantânea.
dotctrl config --lang
A flag --e ou --element, é responsável por manipular um elemento especifico do repositório Dotctrl.
Esta flag deve receber um elemento sem o caminho absoluto, apenas o relativo a partir da $HOME
.
Exemplos:
dotctrl pull --e .zprofile
dotctrl link --e .zprofile
dotctrl unlink --e .zprofile
dotctrl restore --e .zprofile
Se o elemento tiver espaços no nome, envolva-o entre aspas duplas. Exemplo: dotctrl pull --e "arquivo legal.txt"
A flag --f ou --force, força literalmente o uso do comando, impedindo que algo impeça sua conclusão. Esta opção está presente em todos os comandos que manipula os elementos, esses comandos são o: pull
, link
, unlink
e restore
.
Este é um exemplo de uma estrutura completa do arquivo de configuração (dotctrl.json
) do Dotctrl:
{
"dotctrl": {
"config": {
"editor": "vim",
"language": "pt_BR"
},
"elements": [
".zshrc",
".config/xfce4/terminal/terminalrc",
".config/Code/User",
"Images/Wedding"
],
}
}
Por padrão, Dotctrl funciona com vários diretórios, o que faz com que você precise usá-lo em um determinado diretório que você criou para seus elementos.
Se você quiser usar Dotctrl em qualquer PATH, você precisa criar uma variável de ambiente que Dotctrl disponibiliza. Esta variável de ambiente é DOTCTRL_PATH
.
Você deve inserir a variável DOTCTRL_PATH
em seu sistema operacional contendo o diretório onde estarão seus dotfiles. Por exemplo, em seu arquivo .bashrc
ou .zshrc
:
Linux:
export DOTCTRL_PATH="/home/.dotfiles"
ou
macOS:
export DOTCTRL_PATH="/Users/.dotfiles"
NOTA: Lembre-se, ao criar esta variável de ambiente, você não poderá criar outros repositórios para Dotctrl.
Se Dotctrl tiver novos recursos, atualize a linha de comando abaixo:
python3 -m pip install dotctrl -U --user
Para obter mais informações de comando, use:
dotctrl [--help | -h]
Agora que você tem o controle de seus elementos, é hora de fazer o deploy dos mesmo em um serviço de git. Este exemplo abaixo mostrará como realizar o deploy e clone no GitHub.
1 - Deploy:
A - Entrando na pasta raiz criada do Dotctrl:
Linux:
cd /home/.dotfiles
macOS:
cd /Users/.dotfiles
B - Criando repositório git, commit e salvando (push)
git remote add origin [email protected]:<YOUR USER>/dotfiles.git
git init
git add .
git commit -m "Update"
git push origin main
2 - Clone:
Você também pode clonar qualquer diretório de sua escolha, mas vamos manter o diretório de compilação de exemplo acima. Siga os passos:
Linux:
sudo mkdir -p /home/.dotfiles
sudo chmod -R 770 /home/.dotfiles
cd /home/.dotfiles
git clone [email protected]:<YOUR USER>/dotfiles.git .
dotctrl link --f
macOS:
sudo mkdir -p /Users/.dotfiles
sudo chmod -R 770 /Users/.dotfiles
cd /Users/.dotfiles
git clone [email protected]:<YOUR USER>/dotfiles.git .
dotctrl link --f
Clique na imagem abaixo para ser redirecionado aos formulários de doação:
É muito importante você fazer uma doação para motivar a continuação de desenvolvimento do Dotctrl. :)
O projeto está disponível como código aberto sob os termos da Licença MIT ©
Veja, AUTHORS.