goodShell.
goodShell - Programming to People
Norma Shell Quality
Corpo-Inicial
Em linguagens de Script normalmente não seguimos um padrão preestabelecido de normas a serem seguidas, em Shell não é diferente.
Por não seguir nenhuma norma acaba que os programas fiquem bagunçados/desleixados, sem nenhum regra exposta, cada Shelleiro impõe a sua própria regra. Isto se podemos chamar de programas, muitas vezes estes programas possuem uma lógica boa e funcional, porem são simples scripts descartáveis.
Em muitos casos os próprios programadores não conseguem fazer leituras posteriormente de seus próprios programas, programadores que veem de fora para cooperar no desenvolvimento ou simplesmente forkar se descabelam.
Leigos ficam perdidos com tantas implementações que cada programador impõe em seus próprios programas...
A Shell Quality veio para suprir isto, assim criando um Modelo padronizado a ser seguido, fornecendo um template base para seus programas e scripts, facilitando a vida dos programadores e pessoas entusiastas a programação.
Se o Autor/Autores determinarem que o programa está sob a norma de padronização Shell Quality o programa deverá se manter com a norma preestabelecida, a não ser que o Autor/Autores resolvam revogar.
A Shebang não deve ser o caminho absoluto...
Chamamos o caminho completo do comando env e ele próprio irá se encarregar de encontrar!
/bin/bash [ERRADO]
/bin/sh	[ERRADO]
/bin/fish [ERRADO]
/usr/bin/env bash [CORRETO]
/usr/bin/env sh [CORRETO]
/usr/bin/env fish [CORRETO]
A super tag '' fica logo abaixo da Shebang, a tag é necessária indicando que o programa/script segue as normas estabelecidas pela Shell Quality - Programming to People, e devem seguir o padrão que foi estabelicido pelo autor.
#<@Shell Quality>
O box é formado por uma linha inicial e final de 80 colunas não devendendo ser ultrapassada. Na linha inicial em Qualquer parte ao decorrer da linha faça a chamada do 'HEADER'
#============HEADER===========================================================|
#=============================================================================|
Dentro devem conter informações primordiais do programa/script seguindo uma ordem.
Nome do Autor principal do programa, deve seguir 'Nome/Nick' seguido por 'email'
Nome do(s) Mantendedor(es), ***Está informação é válida se caso existir contribuintes para o seu programa.
***Caso seu programa não possui mantenedores, a chamada é OPCIONAL.
Licença do programa, pode conter um link externo ou em linha ***Caso o programa não esteja licenciado, a chamada é OPCIONAL
DESCRIÇÃO-CURTA
Curta Descrição do programa
Descrição completa do programa
NOTA Se caso houver alguma nota, como por exemplo ensinando o que se dever ser feito antes de iniciar o programa, o faça aqui.
***Caso seu programa não possui nenhuma nota que é interessante para o usuário, a chamada é OPCIONAL.
HOMEPAGE Se caso houver expecifique a página do projeto, como por exemplo (Notabug, Github).
***Caso seu programa não ter um site, ou não é hospedado em nenhum lugar, a chamada é OPCIONAL.
CHANGELOG Todas modificações do programa deversão estar aqui, pode ser externa como por exemplo em uma página HTML ou em Texto plano. Caso deseje você pode expecificar neste bloco embutido.
Após a 'Entrada/Cabeçalho' vem a parte do corpo inicial, basicamente fazemos as chamadas em ordens, iniciando com a chamada das váriaveis 'Globais' do programa, como por exemplo (Nome, Versão, Diretorios, Log) etc...
Todas váriaveis precisam ficar dentro de um simples box seguindo o mesmo modelo do 'Cabeçalho', porem em menor escala "45 Colunas", o box PODE ser ultrapassado!
#=========VARIAVEIS==========================|
#==========================================|
FUNCTIONS-BOX
Se caso o programa possui funções deverão ser feito as suas chamadas dentro deste box.
#=========FUNCOES==========================|
Todas bibliotecas externas 'Globais' deverão ser mantidos aqui Exemplo (Biblioteca de funções)
#=========BIBLIOTECA========================|
TEST-BOX (OPCIONAL)
Todos os testes 'Globais' do programa devem ser mantidos aqui. Exemplo (Usuário é root?, Programa existe no sistema?, Usuário tem internet?, Dispositivo está montado?) etc...
#=========TESTES===========================|
A linha separadadora é a responsável por separar o 'Entrada' 'Cabeçalho' 'Corpo Inicial' do programa em Si.