imersao-7-codepix's Issues
Problema ao instalar spf13/cobra devido a versão do Go
Problema referente a aula 02
Esse projeto tem sido minha primeira experiência com a linguagem Go, logo, peço desculpas se eu estiver falando alguma besteira.
Notei que a versão do Go utilizada no projeto é a 1.15
(você pode checar aqui e aqui) e devido a forma como o pacote spf13/cobra
está sendo instalado (veja aqui) a versão mais atual do mesmo está sendo selecionada.
Até então ta tranquilo, porém, ao checar o changelog da versão mais atual do pacote, houve uma grande mudança onde várias dependências da CLI foram removidas e a mesma foi extraída para um repositório independente. Sendo assim, a partir dessa versão, ao instalar o pacote spf13/cobra
você está na verdade obtendo apenas o core e não mais a CLI incluída.
Isso explica porque várias pessoas não estão conseguindo rodar o comando cobra
mesmo após essa correção ter sido feita.
Encontrei algumas formas de abordar o problema e compartilho abaixo.
Particularmente, preferi fazer o upgrade da versão do Go para 1.18
por ser uma versão estável e ser a que estou usando local. Algumas poucas alterações são necessárias serem feitas no Dockerfile
a fim de resolver o problema:
-FROM golang:1.15
+FROM golang:1.18
WORKDIR /go/src
ENV PATH="/go/bin:${PATH}"
ENV GO111MODULE=on
ENV CGO_ENABLED=1
RUN apt-get update && \
apt-get install build-essential protobuf-compiler librdkafka-dev -y && \
- go get google.golang.org/grpc/cmd/protoc-gen-go-grpc && \
- go get google.golang.org/protobuf/cmd/protoc-gen-go && \
- go get github.com/spf13/cobra && \
+ go install google.golang.org/grpc/cmd/protoc-gen-go-grpc@latest && \
+ go install google.golang.org/protobuf/cmd/protoc-gen-go@latest && \
+ go install github.com/spf13/cobra-cli@latest && \
wget https://github.com/ktr0731/evans/releases/download/0.9.1/evans_linux_amd64.tar.gz && \
tar -xzvf evans_linux_amd64.tar.gz && \
mv evans ../bin && rm -f evans_linux_amd64.tar.gz
CMD ["tail", "-f", "/dev/null"]
Após realizar essas alterações, basta rebuildar o serviço $ docker-compose build --no-cache app
e iniciar os containers $ docker-compose up -d
. Lembrando que o comando passa a ser chamado de cobra-cli
como você pode ver no documentação oficial e as opções do mesmo são um pouco diferentes, mas o resultado é exatamente o mesmo.
A propósito, vale a pena lembrar que go get
funciona apenas para incluir dependências no projeto a partir da versão 1.17
, por isso alterei para go install
, pois esses pacotes se tratam de CLI (https://go.dev/doc/go-get-install-deprecation).
Caso você não queira alterar a versão do Go, basta realizar essa alteração:
FROM golang:1.15
WORKDIR /go/src
ENV PATH="/go/bin:${PATH}"
ENV GO111MODULE=on
ENV CGO_ENABLED=1
RUN apt-get update && \
apt-get install build-essential protobuf-compiler librdkafka-dev -y && \
go get google.golang.org/grpc/cmd/protoc-gen-go-grpc && \
go get google.golang.org/protobuf/cmd/protoc-gen-go && \
- go get github.com/spf13/cobra && \
+ go get github.com/spf13/cobra/[email protected] && \
wget https://github.com/ktr0731/evans/releases/download/0.9.1/evans_linux_amd64.tar.gz && \
tar -xzvf evans_linux_amd64.tar.gz && \
mv evans ../bin && rm -f evans_linux_amd64.tar.gz
CMD ["tail", "-f", "/dev/null"]
Após alterar o arquivo, basta realizar os passos mencionados anteriormente para rebuildar e iniciar os containers. Nesse caso, o comando é exatamente o mesmo que o Wesley utilizou no vídeo.
Ainda não assisti todas as aulas do projeto, logo, não sei se ao alterar a versão do Go algo possa ser impactado no projeto. Acredito que não, mas vai que 🤷♂️
Sendo assim, fico a disposição para criar o PR uma vez que a melhor solução seja escolhida.
Desculpa pelo textão!
(caso alguém queira criar o PR, sem problema algum!)
extra unnecessary /cobra path
imersao-7-codepix/codepix/Dockerfile
Line 12 in b7ed410
Erro ao executar comando protoc
Quando executo o comando protoc ocorre o erro abaixo:
The import path must contain at least one period ('.') or forward slash ('/') character.
Encontrei uma solução. Caso ocorra erro ao executar o comando protoc, é necessário add o ./ antes do protofiles;pb
. Da seguinte forma:
option go_package = "./protofiles;pb";
Yeah cold it is for cheating
I believe all this is just for cheaters
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
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.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.