Coder Social home page Coder Social logo

go-brutils's Introduction

go-brutils

CI Pipeline Coverage go-brutils release (latest SemVer) PkgGoDev License: MIT

go-brutils é uma biblioteca que implementa algumas regras de negócio inerentes ao Brasil.

Algumas dessas regras, tais como geração e validação de números identificadores da Receita Federal do Brasil, foram implementas e exportadas em pacotes específicos do escopo funcional.

Atualmente, go-brutils requer a versão 1.17 ou superior do Go. Seguimos a política de suporte de versões do Go e fazemos o melhor pra não quebrar as versões mais velhas do Go, mas devido a restrições de ferramentas, nem sempre testamos versões mais antigas.

Instalação

Para instalar go-brutils, use go get:

go get github.com/aureliano/go-brutils

Ou instale uma versão específica:

go get github.com/aureliano/go-brutils/v1

Ou mesmo adicione-a como uma dependência do seu módulo:

require github.com/aureliano/go-brutils v1

Para instalar a aplicação de linha de comando, caso queira instalar no GOPATH:

go install github.com/aureliano/go-brutils@v1

Ficará acessível como go-brutils.

Para instalar via GitHub no Linux:

curl -OL https://github.com/aureliano/go-brutils/releases/download/v1.0.0/go-brutils_Linux_x86_64.tar.gz
tar xzf go-brutils_Linux_x86_64.tar.gz

Ficará acessível no diretório corrente como ./brutils.

Fique atualizado

Para atualizar para a última versão, use go get -u github.com/aureliano/go-brutils.

Uso

RFB

O pacote rfb possui as funcionalidades próprias da Receita Federal do Brasil. Tais como geração e validação de CPF e CNPJ.

Iniciação dos NIs

Para cada NI há um tipo personalizado. A iniciação desses tipos deve ser feita através das funções adequadas. Há duas formas de se obter um NI: passando o número base (um inteiro não negativo) ou passando o número completo como string com ou sem máscara.

// Passando o número base do CPF "000.001.234-39".
cpf := rfb.NewCPF(1234)

// Passando o número do CPF como texto sem máscara.
cpf, err := rfb.NewCPFFromStr("00000123439")

// Passando o número do CPF como texto com máscara.
cpf, err := rfb.NewCPFFromStr("000.001.234-39")

cpf.NumeroBase()           // 1234
cpf.DigitosVerificadores() // [3, 9]
cpf.Valido()               // true
cpf.Formatado()            // 000.001.234-39
cpf.Desformatado()         // 00000123439

Aplicação de linha de comando

Algumas das funcionalidades desta biblioteca estarão acessíveis para testes na aplicação de linha de comando. Com efeito, essa aplicação será disponibilizada no binário de fechamento da release.

Em desenvolvimento basta executar o comando go run main.go help na raiz do projeto para se ter acesso à ajuda do programa. Se quiser usar o binário tal como é disponibilizado no fechamento da release, execute o comando make snapshot e veja no diretório dist qual é binário da sua distribuição do Sistema Operacional.

Contribuindo

Sinta-se a vontade para criar issues, forks e enviar pull requests. Mas antes, leia este guia para obter orientações de como contribuir da melhor forma.

Licença

Este projeto está disponível sob os termo da licença MIT, que pode ser encontrada no arquivo LICENSE.

go-brutils's People

Contributors

aureliano avatar

Stargazers

Caio Martins  avatar Kauan Pacheco  avatar

Watchers

 avatar

go-brutils's Issues

Manipulação de CPF

Escopo RFB.

Pacote com funções para manipulação de CPF. Implementar interface da issue #1.

Manipulação de CNPJ

Escopo RFB.

Pacote com funções para manipulação de CNPJ. Implementar interface da issue #1.

Pacote RFB

Pacote RFB para abarcar as funcionalidades relativas aos números identificadores da Receita Federal do Brasil. Neste momento, apenas montar os arquétipos para implementação das funcionalidades:

  • Estado/Região Fiscal
  • CPF
  • CNPJ

Os NIs deverão implementar uma interface que possibilite:

  • Obter o número base.
  • Obter os dígitos verificadores.
  • Validar.
  • Formatar.
  • Desformatar.

Manipulação de Esta/Região Fiscal

Escopo RFB.

Pacote com funções para manipulação de Estado/RF. Obter um tipo Estado a partir de uma Unidade Federativa.
Estado{UF, Nome, RegiaoFiscal}

estado := rfb.NewEstado("MG")
fmt.Println(estado)

// Output: &Estado{"MG", "Minas Gerais", 6}

Release

Automatizar a geração do binário do projeto. Usar o goreleaser para isto e adicionar o processo à integração contínua para que seja criada uma release ao se criar uma tag.

Aplicação de linha de comando

Criar uma aplicação de linha de comando que possibilite executar as funcionalidades exportadas pela biblioteca go-brutils.

Atualização na documentação

Atualizações e correções pendentes na primeira versão do projeto. A partir de agora as alterações não devem ser feitas no branch main. Ou se faz fork ou se cria um branch.

  • Documentar rfb.go (tipos e implementações)
  • Corrigir typo em number/doc.go e substituir entre zero e nove por de zero a nove.
  • Corrigir, na seção Geração de NIs do rfb/doc.go, a verificação de erro (err não foi instanciado).
  • Corrigir subtítulo CNPJ - Implementação adicionando #.
  • Adicionar arquivo doc.go na raiz do projeto.
  • Atualizar seção Instalação no README.md (v0 para v1), inclusive adicionando a instalação do binário (go install github.com/aureliano/go-brutils@v1) e download da release.

Atualização da aplicação cli

Permitir que o usuário atualize a versão da aplicação de linha de comando. Adicionar a ação atualizar e fazer uso da biblioteca caravela para verificação de novas versões e atualização.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.