Obtenha Emojis via Linha de Comando
Marcos Oliveira

Marcos Oliveira @marcosplusplus

About: EN: https://terminalroot.com/ BR: https://terminalroot.com.br/

Location:
Brasil, Paraná
Joined:
May 22, 2024

Obtenha Emojis via Linha de Comando

Publish Date: Jun 1
1 1

🚀 Um comando com autocomplete feito com C++.


Eu o dia foi bastante tranquilo e aproveitei pra ficar inventando algumas coisas. Dentre algumas delas, eu encotrei um link de vários emojis no meus favoritos e pensei:

  • — Por que não obter esses emojis via linha de comando pra ficar mais fácil?!

E comecei a escrever um código básico e surgiu esse comando simples pra ajudar por mais básica que seja a ajuda.

Veja como compilar e instalar no seu sistema Unix-like.


💼 Instalação

Lógico que você precisa ou do GCC ou do Clang instalado.

Depois é só seguir esses passos:

⤵️ 01. Baixe a lista de emoji:

Ou com wget:

wget -q bit.ly/emoji-txt -O ~/.emojis.txt
Enter fullscreen mode Exit fullscreen mode

Ou com cURL:

curl -sL bit.ly/emoji-txt -o ~/.emojis.txt
Enter fullscreen mode Exit fullscreen mode

📄 02. Crie um arquivo C++:

Exemplo: vim emoji.cpp

E cole esse código dentro:

#include <iostream>
#include <fstream>

constexpr auto show_emoji = [](const std::string& query){
  const std::string user = std::getenv("USER");
  std::ifstream file("/home/" + user + "/.emojis.txt");
  std::string line;
  bool found = false;

  while(std::getline(file, line)){
    const size_t space_pos = line.find(' ');
    if (space_pos == std::string::npos) continue;
    const std::string name = line.substr(0, space_pos);
    const std::string emoji = line.substr(space_pos + 1);
    if(name.find(query) != std::string::npos){
      std::cout << emoji << " " << name << '\n';
      found = true;
    }
  }

  if(!found){
    std::cerr << "Emoji not found.\n";
  }
};

int main(int argc, char** argv){
  if (argc < 2) return 1;
  show_emoji(argv[1]);
}
Enter fullscreen mode Exit fullscreen mode

🚧 03. Compile e instale:

g++ -O3 -ffast-math emoji.cpp -o emoji
sudo mv emoji /usr/local/bin
Enter fullscreen mode Exit fullscreen mode

📺 04. Adicione autocomplete para seu terminal:

Para adicionar o autocomplete para Bash:

Adicione ao final do seu ~/.bashrc

_emoji_complete() {
  local cur=${COMP_WORDS[COMP_CWORD]}
  COMPREPLY=( $(compgen -W "$(grep "^$cur" ${HOME}/.emojis.txt)" -- "$cur") )
}
complete -F _emoji_complete emoji
Enter fullscreen mode Exit fullscreen mode

Depois rode: source ~/.bashrc

Para adicionar o autocomplete para ZSH:

Adicione ao final do seu ~/.zshrc

_emoji_complete() {
  local -a matches
  local cur="$words[2]"

  matches=($(grep "^$cur" "${HOME}/.emojis.txt"))
  compadd -- $matches
}

compdef _emoji_complete emoji
Enter fullscreen mode Exit fullscreen mode

Depois rode: source ~/.zshrc

Teste:

$ emoji game<TAB>
game      game_die

$ emoji game<ENTER>
🎮 game
🎲 game_die
Enter fullscreen mode Exit fullscreen mode

Obtenha Emojis via Linha de Comando


Eu preenchi os emojis dessa postagem usando ele: usei palavras como: emoji tv, emoji const(para construção), emoji doc(documento), ... Logo menos, você se acostuma com as palavras e encontra todos facilmente! 😺

Legalzinho, né? 😃

Comments 1 total

Add comment