jneo8.com

Search

Search IconIcon to open search

mermaid - golang DI and CLI builder-202301071458

Last updated Jan 7, 2023 Edit Source

# mermaid - golang DI and CLI builder-202301071458

# Summary

Mermaid is a tool helping user to use dependency injection more easily. By using dig, cobra and viper together.

# Notes

# Project

link: mermaid

Mermaid 這個專案的誕生, 是因為自己工作上時常需要寫cli tool而誕生的一個golang專案

介紹Mermaid之前, 可能需要先介紹一些使用場景:

如果上述需求你有符合, 那你就可以用Mermaid來開發你的程式 下面來說說這個專案的一些想法以及開發過程 最後再說使用方式


首先要達到上述的需求會有一些困難需要克服

# Dependency Injection

# Config

談config 之前, 我們可以先想看看有哪些東西是我們需要處理的範圍

一般來說要符合使用, 引用順序應該會是

default -> config -> environment -> input args

最後lib 選擇

而我們為了把所有的設定都給DI, 決定把他變成一個唯一的entity -> viper.Viper. 所以實作上

後續我們只需要處理viperdig之間的綁定就好

# Logger

為什麼會把 Logger 抽出來說, 是因為我認為一個好的cli tool, 他的Logger需要有一些特點:

Logger lib 是用 logrus

# Testing

global的東西真的不好測試, 所以為了讓東西變得測試容易

這樣的意思是說, 每個cmd之間, config跟logger都是獨立的, 這會讓測試變得容易許多


# Recap

嗯, 說了一些實作上的想法. Project本身沒什麼難度, 但其實省去了個人很多的開發時間, 希望大家可以使用看看

最後再附上一次連結 mermaid


# References