O projeto Windows Custom Commands tem por objetivo disponibilizar novos comandos para serem executados no PowerShell do Windows.
Antes de tudo, é importante explicar como criar novos comandos no windows. Para fazer isso você precisará adicionar algumas coisas no seu arquivo $PROFILE
Para acessar o $PROFILE
basta abrir o seu PowerShell e rodar o seguinte comando:
notepad $PROFILE
DICA: caso prefira, abra o
$PROFILE
em outro app como o VSCode ou o Sublime.
Este arquivo carrega sempre que você abre o terminal no windows, então tudo o que você coloca nele torna-se o "padrão do terminal".
Assim, existem 2 formas (que eu conheço) para criarmos novos comandos no nosso terminal e ambas são modificando nosso arquivo $PROFILE
A primeira é adicionando novos aliases ao $PROFILE
, você pode fazer isso com o seguinte comando:
New-Alias -Name meu-comando -Value Caminho\Para\Meu\Comando.bat
Agora, o que está acontecendo?
Ação | Definição |
---|---|
New-Alias | Cria aliases que associam comandos a determinados arquivos, clique aqui para mais informações |
-Name | Define o nome do comando que será executado no powershell, no caso do exemplo seria "meu-comando" |
-Value | Define qual arquivo será chamado quando o comando for executado |
A outra forma que você pode criar novos comando é adicionando functions ao $PROFILE
, por exemplo:
Function meu-comando-custom {
param (
[string[]]$ExtraArgs
)
$loginCommand = "meu-comando"
$loginCommand += " --meu-parametro=meu-valor"
echo $ExtraArgs
foreach ($arg in $ExtraArgs) {
echo $arg
if ($arg.StartsWith("--")) {
$loginCommand += " $arg"
} elseif ($arg.StartsWith("-")) {
$loginCommand += " $arg"
} else {
$loginCommand += " '$arg'"
}
}
Invoke-Expression $loginCommand
}
Neste caso,estamos criando uma function chamada meu-comando-custom
e ele chama o comando previamente definido meu-comando
passando parâmetros específicos.
Assim que você clonar esse repositório rode seguinte comando para instalar as dependências do app
npm install
O comando login
abre um browser e faz o login de acordo com as configurações. Ele aceita os seguintes parâmetros:
Parâmetro longo | Parâmetro curto | Obrigatório | Descrição |
---|---|---|---|
--action | -a | SIM | Indica qual ação o login irá realizar |
--verbose | -v | NÃO | Indica se irá mostrar logs durante a execução |
Antes de usar o comando login
, é necessário configurar as ações desejadas. Para isso é preciso criar o arquivo config.json
no diretório ./config/
, Há um exemplo de como deve ser esse config na mesma pasta e ele é desse jeito:
{
"browseAndLogin": {
"[actions]": {
"url": "",
"usernameInput": "",
"usernameValue": "",
"passwordInput": "",
"passwordValue": "",
"loginButton": ""
}
}
}
Digamos, então, que você quer fazer um comando que loga no seu email, para isso basta mudar onde está "[action]" por "logar-email" e preencher os outros campos de acordo com os ids do formulário de acesso e seus dados.
DICA: como o browseAndLogin é um objeto de objetos você pode ter
n
ações de login para diferentes sites, desde que as adicionem no arquivo config devidamente.
Agora é preciso configurar o comando no seu $PROFILE
, como já foi mencionado no step 1.2 desde README.
Assim, basta adicionar o seguinte código no $PROFILE
:
New-Alias -Name login -Value Path\To\Your\Cloned\Repo\browse-and-login\browse-and-login.bat
Function logar-email {
param (
[string[]]$ExtraArgs
)
$loginCommand = "login"
$loginCommand += " --action=logar-email"
echo $ExtraArgs
foreach ($arg in $ExtraArgs) {
echo $arg
if ($arg.StartsWith("--")) {
$loginCommand += " $arg"
} elseif ($arg.StartsWith("-")) {
$loginCommand += " $arg"
} else {
$loginCommand += " '$arg'"
}
}
Invoke-Expression $loginCommand
}
O que essa configuração faz é definir um alias chamado login que roda o arquivo browse-and-login.bat que está nesse repositório e depois cria uma função que executa o comando "login" recem criado passando por padrão o argumento --action=logar-email
. Ou seja os seguintes comandos são equivalentes:
login --action=logar-email
&
logar-email
O comando touch
cria um novo arquivo vazio ou atualiza a data de modificação de um arquivo existente. Ele funciona de maneira semelhante ao comando touch
no Unix.
Por exemplo, o comando touch arquivo.txt
cria o arquivo arquivo.txt
se ele não existir ou atualiza a data de modificação para o momento atual se já existir.
De maneira semelhante ao comando anterior e como mencionado na seção 1.2 deste README, é preciso configurar o comando no $PROFILE
. Uma vez aberto o profile o comando fica da seguinte maneira:
New-Alias -Name touch -Value Path\To\Your\Cloned\Repo\touch\touch.bat
O comando reinitialize
reinicializa o seu PowerShell, carregando quaisquer novas alterações feitas no seu $PROFILE
sem que você precise fechar o terminal.
da mesma forma que o comando anterior e conforme mencionado na seção 1.2 deste README, você precisa configurar o comando no $PROFILE
. Uma vez aberto o profile, o comando fica assim:
New-Alias -Name reinitialize -Value Caminho\Para\Seu\Repositorio\Clonado\reinitialize\reinitialize.bat
Claro, aqui está o markdown traduzido para o português:
O comando scheduler
abre um navegador e mostra a lista de tarefas agendadas do computador, permitindo as ações de CRUD para tarefas agendadas. O comando salva as tarefas agendadas em um arquivo temporário e inicia um servidor Node para servir os arquivos HTML e rotas. Por padrão, o comando inicia em um terminal separado.
Ele aceita os seguintes parâmetros:
Parâmetro Longo | Parâmetro Curto | Obrigatório | Descrição |
---|---|---|---|
_start_ | NÃO | Inicia o servidor no mesmo terminal que executou o comando | |
--verbose | -v | NÃO | Indica se deve exibir logs durante a execução |
Antes de usar o comando scheduler
, você precisa configurar a porta do servidor que deve ser usada (o padrão é 3002) e inserir a senha do usuário do computador, pois isso é necessário para atualizar as tarefas agendadas. Para fazer isso, você precisa criar/atualizar o arquivo config.json
no diretório ./config/
. Há um exemplo de como essa configuração deve parecer na mesma pasta, e está estruturado da seguinte forma:
{
"scheduler": {
"serverPort": 3002,
"userPassword": ""
}
}
De forma semelhante ao comando anterior e conforme mencionado na seção 1.2 deste README, você precisa configurar o comando no $PROFILE
. Uma vez que o perfil esteja aberto, o comando fica assim:
New-Alias -Name scheduler -Value Caminho\Para\Seu\Repositório\Clonado\scheduler\scheduler.bat