mirror

package module
v0.0.0-...-309d3b1 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Jul 5, 2019 License: Apache-2.0 Imports: 9 Imported by: 0

README

Mirror

同步github issues、yuque(in progressing)上的内容,输出为 hugo 博客站点的构建内容

mirror 配置文件

mirror 的配置文件使用 yaml 格式, 参考 conf.yaml
mirror 查找运行目录下的mirror.yaml 作为输入配置文件

配置文件中可定义多个内容来源。 每一种不同的内容来源,都有其具体的配置项。

内容来源 "issues" 具体的配置内容有

  • token: github token, 需要有 issue 读取权限
  • login: github username
  • repo: 要抓取的 issue 所在的 repo 名称
  • prefix: 输出文件名的统一前缀
  • output: 转换成 hugo 博客内容后的本地输出目录,建议指定为 hugo 博客的 content 目录

内容来源 Issue 的抓取规则

draft

打开的Issue 视为博客草稿,不抓取。只抓取已经关闭的 Issue 内容。

content

issue 本身有 body 和 comment。 新建issue时的内容是body, 之后所有项目本人和其它 githuber 的追加的内容都是评论。

Mirror 支持将 Issue body 和 comment 都抓取下来余与body部分拼接合并作为完整博客内容。

由于 Issue 都是公开的,可能会被别人评论,作者还可能回复提问者。 为了区分这种情况,mirror 只拼接 comment 作者是项目作者本人, 且在 comment 开头有一句 html <!--mirror--> 注释语句的comment。

Run

cp conf.yaml mirror.yaml

然后修改 mirror.yaml 中的内容

go run app/main.go

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func RegsiterSource

func RegsiterSource(name string, handle func(config SourceConfig) Source)

A source handler return an instance of Source interface according the SourceConfig. The sync process find a handler by name firstly, then iterate the `Post` in the `Source`, output post to a specified location.

func Sync

func Sync()

Read Sync Config from file `./mirror.yaml`, Then run sync process to get content from the config source

func SyncWithConfig

func SyncWithConfig(configfile string)

Read Sync Config from `configfile`, Then run sync process to get content from the config source

Types

type Post

type Post interface {
	Title() string
	Tags() []string
	CreatedAt() time.Time
	UpdatedAt() time.Time
	Content() string
}

An abstract blog article

抽象的一篇文章(博文)

type Source

type Source interface {
	// return next post, or nil if no more
	//
	// 返回下一篇文章,如果没有更多内容返回 nil
	Next() Post

	// full filename (with path) to save the content
	//
	// 包含路径的文件名,用于保存博文
	FileName(post Post) string
}

An abstract interface for A collection of `Post`. Iterator Design

博文集合的抽象接口, 迭代器模式

type SourceConfig

type SourceConfig struct {
	// 类型
	Type string `yaml:"type"`

	// 具体的配置
	Config map[string]interface{} `yaml:"config"`
}

The post source config, parsed from config file. Contains source type and config for the source

文章内容的来源配置,从配置文件中解析得到内容。 包括来源类型和每一种来源的自定义配置。

Directories

Path Synopsis

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL