Fuego is written in the go programming language (1.12 or newer), you need to have it installed and be familiar with it, to contribute code to fuego.
All new features should be based on the develop
branch. The master
branch always contains the current stable version and the latest release.
Fuego uses go modules, which means you’ll need at least go version 1.11 to compile the program.
Fork and clone the repository and then build it:
cd fuego
go build
All dependencies will be downloaded and built automatically and the fuego binary will be created in the project directory (use go install to move the binary to your GOPATH if you wish).
The tests are located in test as a shunit2 shell script, against a the firebase emulator.
To run the tests, you’ll need to install:
To execute the tests, follow these steps
$ gcloud beta emulators firestore start --host-port localhost:8080
Executing: /home/user/google-cloud-sdk/platform/cloud-firestore-emulator/cloud_firestore_emulator start --host=localhost --port=8080
[firestore] API endpoint: http://localhost:8080
[firestore] If you are using a library that supports the FIRESTORE_EMULATOR_HOST environment variable, run:
[firestore]
[firestore] export FIRESTORE_EMULATOR_HOST=localhost:8080
[firestore]
[firestore] Dev App Server is now running.
tests
directory and run the tests script:cd tests
./tests
or
./tests -- nameoffirsttest nameofsecondtest
master
branch always contains the latest stable version of fuego, and
corresponds to the latest release. Under normal circumstances, only the
develop
branch should be merged into master. (Exceptions being hot fixes).
develop
branch contains the current development version. It should be kept
as clean as possible. It should always compile and pass the tests. Most new
development should start from this branch.
Other branches should be named as following:
group/name
Where group is one of the following items:
Example: feat/add-xyz-command
.
The name of the branch should be short, hyphen-separated and represent the purpose of the branch.
Branches should be created with a single purpose and have a reduced number of commits. Use ‘smash and merge’ if possible when merging to develop. Keep the develop branch free of ‘wip’s commits.
Releases are managed by a github action and a new release is created whenever
something is pushed into the master
branch. Therefore pushing into master
should be done carefully.
Release notes are taken from files in the release-notes
directory,
following this convention:
release-notes/version.md (i.e. release-notes/0.15.0.md)
In order to create a new release you should:
Releases are managed by goreleaser.
Steps:
your_token