2.5 KiB
2.5 KiB
Rust Library
專案共用核心
建立專案的指令
cargo new my_project_name
推薦項目的目錄結構
my_project/
├── Cargo.toml
├── src/
│ ├── main.rs
│ ├── lib.rs
│ ├── common/
│ │ ├── mod.rs
│ │ ├── config.rs
│ │ ├── errors.rs
│ │ ├── utils.rs
│ │ ├── logger.rs
│ │ └── types.rs
│ └── some_other_module/
│ ├── mod.rs
│ └── other.rs
└── tests/
├── common_tests.rs
└── other_tests.rs
Current modules
module | latest version |
---|---|
config | v1.0.0 |
如何新增Module
假設新增一個
module
utils/first_utils/first
初始化
再一路的路徑底下的 mod.rs 新增資料匣或檔案名稱
- src/ 下 lib.rs
pub mod utils;
- utils/ 下 mod.rs
pub mod first_utils;
- first_utils/ 下 mod.rs
pub mod first;
這樣 first 裡面的 pub 函數就會被公開了
mkdir -p config
cd ./config
go mod init gitea.30cm.net/Ark/library-go/config
go work use ./config
p.s 建議測試覆蓋率盡量達到80%
before-commit-check
- commit
git add ./config
git commit -m "feat: add config module"
git tag "config/v1.0.0"
git push origin config/v1.0.0
- Merge request and Code Review
如何使用私有Module
強制git使用ssh方式而不是https:
git config --global --add url."git@git.30cm.net:".insteadOf "https://gitea.30cm.net/"
設定go env
export GOPRIVATE="gitea.30cm.net"
產生ssh-key 請參考 github ssh , gitlab ssh
add ssh key to the ssh-agent 請參考 Adding your SSH key to the ssh-agent
$ eval "$(ssh-agent -s)"
> Agent pid 59566
$ touch ~/.ssh/config
Host yt.com
Hostname gitea.30cm.net
User igs170911
IdentityFile ~/.ssh/id_rsa
$ ssh-add --apple-use-keychain ~/.ssh/id_ed25519
在自己repo底下執行:
go get gitea.30cm.net/Ark/library-go/config@v1.0.0