Skip to content

Commit 9357727

Browse files
committed
refactor
1 parent 2dba680 commit 9357727

39 files changed

Lines changed: 9390 additions & 380 deletions

.github/workflows/build.yml

Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
name: Build
2+
3+
on:
4+
push:
5+
branches: [ master, main ]
6+
pull_request:
7+
branches: [ master, main ]
8+
9+
jobs:
10+
build:
11+
runs-on: ubuntu-latest
12+
steps:
13+
- uses: actions/checkout@v4
14+
15+
- name: Set up Go
16+
uses: actions/setup-go@v5
17+
with:
18+
go-version: '1.21'
19+
20+
- name: Install golangci-lint
21+
uses: golangci/golangci-lint-action@v6
22+
with:
23+
version: latest
24+
args: --timeout=5m
25+
26+
- name: Format
27+
run: |
28+
go fix ./...
29+
go fmt ./...
30+
31+
- name: Test
32+
run: go test ./... -v
33+
34+
- name: Build
35+
run: go build -o namer .

.github/workflows/release.yml

Lines changed: 80 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,80 @@
1+
name: Release
2+
3+
on:
4+
workflow_dispatch:
5+
inputs:
6+
version:
7+
description: 'Release version (e.g. v1.0.0)'
8+
required: true
9+
type: string
10+
11+
permissions:
12+
contents: write
13+
14+
jobs:
15+
release:
16+
runs-on: ubuntu-latest
17+
strategy:
18+
matrix:
19+
include:
20+
- goos: linux
21+
goarch: amd64
22+
suffix: ''
23+
- goos: linux
24+
goarch: arm64
25+
suffix: ''
26+
- goos: darwin
27+
goarch: amd64
28+
suffix: ''
29+
- goos: darwin
30+
goarch: arm64
31+
suffix: ''
32+
- goos: windows
33+
goarch: amd64
34+
suffix: '.exe'
35+
steps:
36+
- uses: actions/checkout@v4
37+
38+
- name: Set up Go
39+
uses: actions/setup-go@v5
40+
with:
41+
go-version: '1.21'
42+
43+
- name: Build
44+
env:
45+
GOOS: ${{ matrix.goos }}
46+
GOARCH: ${{ matrix.goarch }}
47+
run: |
48+
output="namer-${{ github.event.inputs.version }}-${{ matrix.goos }}-${{ matrix.goarch }}${{ matrix.suffix }}"
49+
go build -ldflags="-s -w" -o "$output" .
50+
51+
- name: Upload artifact
52+
uses: actions/upload-artifact@v4
53+
with:
54+
name: namer-${{ matrix.goos }}-${{ matrix.goarch }}
55+
path: namer-${{ github.event.inputs.version }}-*
56+
57+
publish:
58+
needs: release
59+
runs-on: ubuntu-latest
60+
steps:
61+
- uses: actions/checkout@v4
62+
63+
- name: Download all artifacts
64+
uses: actions/download-artifact@v4
65+
with:
66+
path: dist
67+
merge-multiple: true
68+
69+
- name: Create tag
70+
run: |
71+
git tag ${{ github.event.inputs.version }}
72+
git push origin ${{ github.event.inputs.version }}
73+
74+
- name: Create Release
75+
uses: softprops/action-gh-release@v2
76+
with:
77+
tag_name: ${{ github.event.inputs.version }}
78+
name: ${{ github.event.inputs.version }}
79+
files: dist/*
80+
generate_release_notes: true

Makefile

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
.PHONY: build
2+
3+
lint:
4+
golangci-lint run
5+
6+
format:
7+
go fix ./...
8+
go fmt ./...
9+
10+
test:
11+
go test ./... -v
12+
13+
build: format lint test

README.md

Lines changed: 92 additions & 33 deletions
Original file line numberDiff line numberDiff line change
@@ -1,54 +1,113 @@
1-
# Namer 是中文取名工具,其根据你喜欢的字,自动组合出符合阴阳五行的名字。
1+
# Namer
22

3-
> 也许你不相信阴阳五行,但工具产生出诸多好名字,会为你带来灵感,让你取一个满意的名字
3+
中文取名工具,根据你喜欢的字,自动组合出符合阴阳五行的名字
44

5-
## 如何使用
5+
> 也许你不相信阴阳五行,但工具产生出诸多好名字,会为你带来灵感,让你取一个满意的名字。
6+
7+
## 安装
8+
9+
[Releases](https://github.com/vogo/namer/releases) 页面下载对应平台的二进制文件(支持 macOS、Linux、Windows)。
10+
11+
或通过源码编译:
12+
13+
```bash
14+
go install github.com/vogo/namer@latest
15+
```
16+
17+
## 使用方法
18+
19+
### 交互式批量评分
20+
21+
```bash
22+
namer
23+
```
24+
25+
首次运行时会交互式引导创建配置文件(`~/.namer.conf`),配置项包括姓氏、出生年月日时分、性别、名字备选字。
26+
27+
### 单个名字评分
28+
29+
```bash
30+
namer <> <> # 使用已有配置中的生辰信息
31+
namer <> <> <生日> # 指定生日,格式: 2024-03-15
32+
```
33+
34+
示例:
35+
36+
```bash
37+
namer 王 明轩
38+
namer 王 明轩 2024-03-15
39+
```
40+
41+
### 指定配置文件
642

7-
1. 首先, 下载工具:
843
```bash
9-
go get github.com/wongoo/namer
44+
namer -c <配置文件>
1045
```
1146

12-
2. 其次, 准备配置文件config.json:
47+
### Web 界面
48+
49+
```bash
50+
namer -web # 随机端口,自动打开浏览器
51+
namer -web -port 8080 # 指定端口
52+
```
53+
54+
### 其他
55+
56+
```bash
57+
namer -h # 显示帮助
58+
namer -v # 显示版本
59+
```
60+
61+
## 配置文件
62+
63+
默认路径:`~/.namer.conf`,首次运行会交互式引导创建。
64+
65+
也可以手动创建 JSON 配置文件:
66+
1367
```json
1468
{
1569
"last_name": "",
16-
"year": 2018,
17-
"month": 8,
70+
"year": 2024,
71+
"month": 3,
1872
"day": 15,
1973
"hour": 11,
2074
"minute": 1,
21-
"gender": 0,
22-
"min_candidate_score":82,
23-
"first_name_key_words": "可,计,学,习,书,意,义,复,开,程,进,望"
75+
"gender": 0,
76+
"min_candidate_score": 82,
77+
"first_name_key_words": "可,学,书,意,义,程,进,望"
2478
}
2579
```
26-
说明:
27-
- `last_name`: 姓
28-
- `year`: 年
29-
- `month`: 月
30-
- `day`: 日
31-
- `hour`: 时
32-
- `minute`: 分
33-
- `gender`: 0-男, 1-女
34-
- `min_candidate_score`: 最小候选分数
35-
- `first_name_key_words`: 关键字
36-
37-
3. 最后, 执行命令 `namer -c config.json`, 命令会输出分数排名前10的名字列表:
38-
```bash
80+
81+
| 字段 | 说明 |
82+
|------|------|
83+
| `last_name` ||
84+
| `year` / `month` / `day` / `hour` / `minute` | 出生年月日时分 |
85+
| `gender` | 0-男, 1-女 |
86+
| `min_candidate_score` | 最小候选分数 |
87+
| `first_name_key_words` | 名字备选字(逗号分隔) |
88+
89+
## 评分维度
90+
91+
总分 100 分:
92+
93+
| 维度 | 分值 | 说明 |
94+
|------|------|------|
95+
| 五格数理 | 30分 | 天格、人格、地格、总格、外格的数理吉凶 |
96+
| 三才配置 | 25分 | 天人地三才的五行生克关系 |
97+
| 喜用神 | 20分 | 名字五行是否补益八字喜用神 |
98+
| 内部五行 | 15分 | 姓名各字之间的五行生克 |
99+
| 阴阳平衡 | 10分 | 姓名各字笔画的阴阳搭配 |
100+
101+
## 输出示例
102+
103+
```
39104
score: 93, names: [王程]
40105
score: 92, names: [王计程]
41106
score: 89, names: [王望进 王开]
42107
score: 88, names: [王望程 王望开 王习程 王程意 王程义 王程进 王计开]
43-
score: 87, names: [王程开 王程程 王开程 王计学]
44-
score: 86, names: [王程习 王程望 王开望]
45-
score: 85, names: [王望学 王望意 王望复 王望义 王习进 王开进]
46-
score: 84, names: [王习开 王程复 王程学 王开意 王开义 王开开 王书进]
47-
score: 83, names: [王义程 王意程]
48-
score: 82, names: [王习意 王习义 王习复 王开习 王书望]
49108
```
50109

51110
## 注意
52-
- 配置可以修改以后再次执行;
53-
- 可以`ctrl+c`中断执行,立即给出已经检测的结果;
54-
- 命令会在配置文件同目录下生成后缀为`.data`的缓存文件,请勿删除;
111+
112+
- 配置可以修改后再次执行
113+
- 可以 `Ctrl+C` 中断执行,立即给出已检测的结果

0 commit comments

Comments
 (0)