Compare commits
2 Commits
Author | SHA1 | Date | |
---|---|---|---|
b9d6dea90b | |||
db062baab2 |
80
.air.toml
Normal file
80
.air.toml
Normal file
@ -0,0 +1,80 @@
|
|||||||
|
# .air.toml
|
||||||
|
#
|
||||||
|
# A configuration file for the 'air' live-reloading tool.
|
||||||
|
# This configuration is tailored for a Go project that needs to be run with specific command-line flags
|
||||||
|
# and requires graceful handling of system signals like SIGINT and SIGTERM.
|
||||||
|
#
|
||||||
|
# To use:
|
||||||
|
# 1. Install air: `go install github.com/cosmtrek/air@latest`
|
||||||
|
# 2. Place this file, renamed to `.air.toml`, in the root of your project.
|
||||||
|
# 3. Run `air` from your terminal in the project root.
|
||||||
|
|
||||||
|
# The root directory of your project to watch for changes.
|
||||||
|
# '.' indicates the current directory where air is run.
|
||||||
|
root = "."
|
||||||
|
|
||||||
|
# A temporary directory for air to store its build artifacts.
|
||||||
|
# You should add this directory to your .gitignore file.
|
||||||
|
tmp_dir = "tmp"
|
||||||
|
|
||||||
|
[build]
|
||||||
|
# Step 1: Build the Go binary and place it in the tmp directory.
|
||||||
|
# Step 2: Copy the configuration file into the tmp directory as well.
|
||||||
|
# This ensures all runtime assets are in one place.
|
||||||
|
cmd = "go build -o ./tmp/main . && cp config.yaml ./tmp/"
|
||||||
|
|
||||||
|
# The 'full_bin' command gives us complete control over how the app is run.
|
||||||
|
# We first change the directory to 'tmp' so that the application's working
|
||||||
|
# directory is where the binary and its config file are located.
|
||||||
|
# Then, we execute the binary, pointing it to the config file in the same directory.
|
||||||
|
full_bin = "cd ./tmp && ./main -config config.yaml"
|
||||||
|
|
||||||
|
# A list of directories to watch for file changes.
|
||||||
|
# Air will recursively watch these directories.
|
||||||
|
include_dir = ["."]
|
||||||
|
|
||||||
|
# A list of file extensions to watch.
|
||||||
|
# Air will restart when any of these files change.
|
||||||
|
include_ext = ["go", "toml", "yaml", "yml"]
|
||||||
|
|
||||||
|
# A list of directories to ignore.
|
||||||
|
# It's good practice to ignore temporary directories, vendor folders, and git history.
|
||||||
|
exclude_dir = ["tmp", "vendor", ".git"]
|
||||||
|
|
||||||
|
# A list of specific files to ignore.
|
||||||
|
exclude_file = []
|
||||||
|
|
||||||
|
# A list of regular expressions to exclude files or directories.
|
||||||
|
exclude_regex = ["_test.go"]
|
||||||
|
|
||||||
|
# A list of files or directories to watch that are not in the 'include_dir'.
|
||||||
|
# Useful for watching template files if they are outside your main source directories.
|
||||||
|
include_file = []
|
||||||
|
|
||||||
|
# This setting is crucial for graceful shutdowns.
|
||||||
|
# It stops the running process on a file change before building and restarting.
|
||||||
|
# This ensures that your application's shutdown logic is triggered.
|
||||||
|
stop_on_error = true
|
||||||
|
|
||||||
|
# Send SIGINT (Ctrl+C) to the running process before killing it.
|
||||||
|
# This is essential for allowing your application to handle the signal and shut down gracefully.
|
||||||
|
send_interrupt = true
|
||||||
|
|
||||||
|
# The delay in milliseconds to wait for the process to shut down gracefully after sending SIGINT.
|
||||||
|
# If your app needs more time for cleanup, you can increase this value.
|
||||||
|
kill_delay = 500 # ms
|
||||||
|
|
||||||
|
[log]
|
||||||
|
# Show timestamps in the log output.
|
||||||
|
time = true
|
||||||
|
|
||||||
|
[color]
|
||||||
|
# Customize colors for different parts of the air output.
|
||||||
|
main = "magenta"
|
||||||
|
watcher = "cyan"
|
||||||
|
build = "yellow"
|
||||||
|
runner = "green"
|
||||||
|
|
||||||
|
[misc]
|
||||||
|
# Delete the temporary binary file on exit.
|
||||||
|
clean_on_exit = true
|
@ -10,6 +10,7 @@ Check out the [go-app framework](https://gitea.libretechconsulting.com/rmcguire/
|
|||||||
|
|
||||||
- **📈 OpenTelemetry (OTEL) Metrics & Traces** – Comprehensive observability with built-in support for metrics and traces.
|
- **📈 OpenTelemetry (OTEL) Metrics & Traces** – Comprehensive observability with built-in support for metrics and traces.
|
||||||
- 📝 Logging with Zerolog – High-performance structured logging with zerolog for ultra-fast, leveled logging.
|
- 📝 Logging with Zerolog – High-performance structured logging with zerolog for ultra-fast, leveled logging.
|
||||||
|
- 💻 Local dev with air pre-configured (just run `air`)
|
||||||
- **💬 GRPC + GRPC-Gateway** – Supports RESTful JSON APIs alongside gRPC with auto-generated Swagger (OpenAPI2) specs.
|
- **💬 GRPC + GRPC-Gateway** – Supports RESTful JSON APIs alongside gRPC with auto-generated Swagger (OpenAPI2) specs.
|
||||||
- 🌐 HTTP and GRPC Middleware – Flexible middleware support for HTTP and GRPC to enhance request handling, authentication, and observability.
|
- 🌐 HTTP and GRPC Middleware – Flexible middleware support for HTTP and GRPC to enhance request handling, authentication, and observability.
|
||||||
- **📦 Multi-Arch Builds** – Robust Makefile that supports building for multiple architectures (amd64, arm64, etc.).
|
- **📦 Multi-Arch Builds** – Robust Makefile that supports building for multiple architectures (amd64, arm64, etc.).
|
||||||
|
7
main.go
7
main.go
@ -31,12 +31,15 @@ import (
|
|||||||
const terminationGracePeriod = 30 * time.Second
|
const terminationGracePeriod = 30 * time.Second
|
||||||
|
|
||||||
var (
|
var (
|
||||||
flagSchema bool
|
|
||||||
|
|
||||||
// TODO: Register your service.AppService implementers here
|
// TODO: Register your service.AppService implementers here
|
||||||
|
// This should be the only change necessary here
|
||||||
|
// NOTE: At least one service needs to add a dial option
|
||||||
|
// for transport credentials, otherwise you will have to do it here
|
||||||
appServices = []service.AppService{
|
appServices = []service.AppService{
|
||||||
&demo.DemoService{},
|
&demo.DemoService{},
|
||||||
}
|
}
|
||||||
|
|
||||||
|
flagSchema bool
|
||||||
)
|
)
|
||||||
|
|
||||||
func main() {
|
func main() {
|
||||||
|
Reference in New Issue
Block a user