config

package
v0.0.21 Latest Latest
Warning

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

Go to latest
Published: Sep 20, 2026 License: MIT Imports: 7 Imported by: 0

Documentation

Index

Constants

View Source
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

func AppendPlainEntry(path, dest, src string) error

AppendPlainEntry は素のsrc形式の1 Entry分fragmentを生成し、 元ファイルに空行1行で区切って追記した完成形を再Loadして問題なければatomicに置換する。 既存バイトは追記以外温存する。失敗時は元ファイルを不変に保つ。

func AppendTargetEntry

func AppendTargetEntry(path, dest, target, src string) error

AppendTargetEntry はtargets形式の新規1 Target分fragmentを生成し、 元ファイルに空行1行で区切って追記した完成形を再Loadして問題なければatomicに置換する。 新規dest・既存destへのTarget追記のいずれも末尾追記で統一する。 失敗時は元ファイルを不変に保つ。

func ExpandDest

func ExpandDest(dest string) (string, error)

ExpandDest は Entry の dest の ~ / ~/ を os.UserHomeDir() で展開する。

func FindStore

func FindStore(startDir string) (string, error)

FindStore はカレント直下の mdots.toml のみを参照し、 見つかった Store ルートを返す。見つからないときは in <cwd> 形式のエラーを返す。

func Init

func Init(dir string) (string, error)

Init は指定ディレクトリ直下に mdots.toml 雛形を作り、作ったパスを返す。 既にあるときは mdots.toml already exists in <dir> 形式のエラーを返す。

func NormalizeDest

func NormalizeDest(raw string) (string, error)

NormalizeDest は add の入力 dest を Entry の配置先キー形(~/...)に正規化する。 ~/... は残りを Clean して ~/... に整え、HOME 配下の絶対パスは ~/... に変換する。 HOME 自体・~/ 直下は ~ に整える。それ以外はエラーを返す。

func SrcForDest

func SrcForDest(normalizedDest string) (string, error)

SrcForDest は正規化済み dest から Store 相対の src を算出する。 ~/ を除去し dotfiles/ を付ける。~ 自体は dotfiles に写像する。

func SrcForDestWithTarget

func SrcForDestWithTarget(normalizedDest, target string) (string, error)

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

func Load(path string) (Config, error)

Load は Store の mdots.toml を読み込み、validation して返す。 未知フィールドは一律 unknown field で拒否し、型不正は Decode エラーに任せる。

func (*Config) Add

func (c *Config) Add(dest, src string) error

Add は未登録の配置先を素の src 形式で新規 Entry として登録する。 既存 dest はエラーを返し、override は書かない(省略時 true として解決される)。

func (*Config) AddTarget

func (c *Config) AddTarget(dest, target, src string) error

AddTarget は配置先を targets 形式で登録する。 dest 未登録なら新規 Entry を作り、targets 形式で登録済みかつ指定 Target が 未登録なら追記マージする。素の src 形式で登録済み、または同一 Target が 登録済みならエラーを返す。 override は書かない(省略時 true として解決される)。

func (Config) Resolve

func (c Config) Resolve(target string) []Entry

Resolve は指定 Target に対する解決済み Entry 群を配置先ソート順で返す. 指定なし Entry は Target の有無・値に関わらず常に適用される. {targets} は完全一致のみ適用され、不一致・無指定時はスキップされる. "common" は普通のTargetとしてのみ一致する. override は解決結果に引き継ぐのみで、選択自体には影響しない。省略時は true。

func (Config) Targets

func (c Config) Targets() []string

Targets は全Entryのtargetsキーを集約し重複排除・ソートして返す。 指定なしEntryは無視し、targetsマップのキーのみを対象とする。 未定義時は空スライスを返す。

func (Config) Validate

func (c Config) Validate() error

Validate は配置先キー・{src}/{targets} 排他・空を検証する。 重複TargetはTOMLキー重複として構造上不可能なため検証しない。

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

func (e Entry) ExpandedDest() (string, error)

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

type TargetValue struct {
	Src      *string `toml:"src"`
	Override *bool   `toml:"override"`
}

TargetValue は Target キーごとの参照元である。Target はマップキー(単数文字列)。 Override は任意指定で、省略時は配置先直下・既定値 true に従う。

Jump to

Keyboard shortcuts

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