-
Notifications
You must be signed in to change notification settings - Fork 21
/
Copy pathgobuild.go
55 lines (46 loc) · 1.92 KB
/
gobuild.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
// SPDX-FileCopyrightText: 2015-2024 caixw
//
// SPDX-License-Identifier: MIT
//go:generate web locale -l=und -m -f=yaml ./
//go:generate web update-locale -src=./locales/und.yaml -dest=./locales/zh.yaml,./locales/zh-Hant.yaml
// Package gobuild 热编译 Go 代码
package gobuild
import (
"context"
"io"
"github.com/issue9/term/v3/colors"
"golang.org/x/text/message"
"github.com/caixw/gobuild/internal/config"
"github.com/caixw/gobuild/watch"
)
type (
WatchOptions = watch.Options
Logger = watch.Logger
)
// Watch 监视文件变化执行热编译服务
//
// p 用于处理本地化的错误信息;
// l 用于输出错误信息;
// 如果初始化参数有误,则反错误信息,如果是编译过程中出错,将直接将错误内容输出到 [Logger]。
func Watch(ctx context.Context, p *message.Printer, l Logger, o *WatchOptions) error {
return watch.Watch(ctx, p, l, o)
}
// Init 初始化一个空的项目
//
// wd 为工作目录,将在此目录下初始化项目;
// configFilename 为配置文件的文件名;
// name 为 go.mod 中定义的模块的名称。
// name 的最后一个元素会作为名称在 wd 指定的目录下创建子目录,
// 同时在子目录下会添加以下内容:
// - go.mod 以 name 作为模块名;
// - configFilename 指定的文件名作为 gobuild 的配置文件;
// - cmd/{base}/{base}.go 程序入口 main 函数,base 为 name 的最后一个元素;
func Init(wd, name, configFilename string) error { return config.Init(wd, name, configFilename) }
// NewConsoleLogger 将日志输出到控制台的 Logger 实现
//
// colors 表示各类日志的颜色值;
// sources 表示各类信息源的名称;
// colors 和 sources 可以为 nil,会采用默认值。
func NewConsoleLogger(showIgnore bool, out io.Writer, colors map[int8]colors.Color, sources map[string]string) Logger {
return watch.NewConsoleLogger(showIgnore, out, colors, sources)
}