Documentation
¶
Index ¶
- Constants
- func AppendPlainEntry(path, dest, src string) error
- func AppendTargetEntry(path, dest, target, src string) error
- func ExpandDest(dest string) (string, error)
- func FindStore(startDir string) (string, error)
- func Init(dir string) (string, error)
- func NormalizeDest(raw string) (string, error)
- func SrcForDest(normalizedDest string) (string, error)
- func SrcForDestWithTarget(normalizedDest, target string) (string, error)
- type Config
- type Entry
- type EntryValue
- type TargetValue
Constants ¶
const Template = `` /* 288-byte string literal not displayed */
Template は init が作る mdots.toml 雛形である。 サンプルはすべてコメントアウト済み。 生成物は Load/Validate を通る(Entry ゼロ件)。 記法は add の Save と同じテーブル形式に寄せる(インライン形式は使わない)。
Variables ¶
This section is empty.
Functions ¶
func AppendPlainEntry ¶
AppendPlainEntry は素のsrc形式の1 Entry分fragmentを生成し、 元ファイルに空行1行で区切って追記した完成形を再Loadして問題なければatomicに置換する。 既存バイトは追記以外温存する。失敗時は元ファイルを不変に保つ。
func AppendTargetEntry ¶
AppendTargetEntry はtargets形式の新規1 Target分fragmentを生成し、 元ファイルに空行1行で区切って追記した完成形を再Loadして問題なければatomicに置換する。 新規dest・既存destへのTarget追記のいずれも末尾追記で統一する。 失敗時は元ファイルを不変に保つ。
func ExpandDest ¶
ExpandDest は Entry の dest の ~ / ~/ を os.UserHomeDir() で展開する。
func FindStore ¶
FindStore はカレント直下の mdots.toml のみを参照し、 見つかった Store ルートを返す。見つからないときは in <cwd> 形式のエラーを返す。
func Init ¶
Init は指定ディレクトリ直下に mdots.toml 雛形を作り、作ったパスを返す。 既にあるときは mdots.toml already exists in <dir> 形式のエラーを返す。
func NormalizeDest ¶
NormalizeDest は add の入力 dest を Entry の配置先キー形(~/...)に正規化する。 ~/... は残りを Clean して ~/... に整え、HOME 配下の絶対パスは ~/... に変換する。 HOME 自体・~/ 直下は ~ に整える。それ以外はエラーを返す。
func SrcForDest ¶
SrcForDest は正規化済み dest から Store 相対の src を算出する。 ~/ を除去し dotfiles/ を付ける。~ 自体は dotfiles に写像する。
func SrcForDestWithTarget ¶
SrcForDestWithTarget は正規化済み dest と Target から Store 相対の src を算出する。 target 空時は SrcForDest と同じ。target 指定時は dotfiles/<target>/... に写像する。 ~ 自体は dotfiles/<target> に写像する。
Types ¶
type Config ¶
type Config struct {
Entries map[string]EntryValue `toml:"entries"`
}
Config は Store 直下の mdots.toml 全体を表す。 [entries] は配置先キー化され、値は {src} か {targets} の排他いずれかである。
func Load ¶
Load は Store の mdots.toml を読み込み、validation して返す。 未知フィールドは一律 unknown field で拒否し、型不正は Decode エラーに任せる。
func (*Config) Add ¶
Add は未登録の配置先を素の src 形式で新規 Entry として登録する。 既存 dest はエラーを返し、override は書かない(省略時 true として解決される)。
func (*Config) AddTarget ¶
AddTarget は配置先を targets 形式で登録する。 dest 未登録なら新規 Entry を作り、targets 形式で登録済みかつ指定 Target が 未登録なら追記マージする。素の src 形式で登録済み、または同一 Target が 登録済みならエラーを返す。 override は書かない(省略時 true として解決される)。
func (Config) Resolve ¶
Resolve は指定 Target に対する解決済み Entry 群を配置先ソート順で返す. 指定なし Entry は Target の有無・値に関わらず常に適用される. {targets} は完全一致のみ適用され、不一致・無指定時はスキップされる. "common" は普通のTargetとしてのみ一致する. override は解決結果に引き継ぐのみで、選択自体には影響しない。省略時は true。
type Entry ¶
type Entry struct {
Src string `toml:"src"`
Dest string `toml:"dest"`
Override bool `toml:"override"`
}
Entry は解決済みの1つの管理対象を表す src/dest ペア。 src は Store 相対のファイルパス、dest は ~ 展開される配置先パス。 Override は既存保護の解決結果で、false は既存を保護し新規作成のみ行う。
func (Entry) ExpandedDest ¶
ExpandedDest は Entry の dest を展開した配置先パスを返す。
type EntryValue ¶
type EntryValue struct {
Src *string `toml:"src"`
Override *bool `toml:"override"`
Targets *map[string]TargetValue `toml:"targets"`
}
EntryValue は1つの配置先に対する設定値である。 Src か Targets のいずれか一方のみを持つ(排他)。 Override は任意指定で、省略時は true として解決される。 Targets 形式では Target 値の override が優先され、なければ配置先直下が使われる。
type TargetValue ¶
TargetValue は Target キーごとの参照元である。Target はマップキー(単数文字列)。 Override は任意指定で、省略時は配置先直下・既定値 true に従う。