skip
This commit is contained in:
@@ -39,3 +39,6 @@ sigil unlink ~/.config/wezterm/wezterm.lua
|
|||||||
## Notes
|
## Notes
|
||||||
- If a repo file is missing, stale links should be pruned.
|
- If a repo file is missing, stale links should be pruned.
|
||||||
- Prefer `sigil add` over manual moves into `files/`.
|
- Prefer `sigil add` over manual moves into `files/`.
|
||||||
|
|
||||||
|
## Development
|
||||||
|
- When modifying this repo, rebuild and install the binary: `go build -o ~/.local/bin/sigil .`
|
||||||
|
|||||||
@@ -34,6 +34,8 @@ return {
|
|||||||
target = {
|
target = {
|
||||||
linux = "~/.config/nvim",
|
linux = "~/.config/nvim",
|
||||||
macos = "~/Library/Application Support/nvim",
|
macos = "~/Library/Application Support/nvim",
|
||||||
|
-- use false to skip applying on that platform
|
||||||
|
windows = false,
|
||||||
default = "~/.config/nvim",
|
default = "~/.config/nvim",
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -20,9 +20,12 @@ const (
|
|||||||
)
|
)
|
||||||
|
|
||||||
type packageConfig struct {
|
type packageConfig struct {
|
||||||
targets map[string]string
|
targets map[string]string
|
||||||
|
disabled map[string]bool
|
||||||
}
|
}
|
||||||
|
|
||||||
|
var errTargetDisabled = errors.New("target disabled for this platform")
|
||||||
|
|
||||||
func main() {
|
func main() {
|
||||||
if len(os.Args) < 2 {
|
if len(os.Args) < 2 {
|
||||||
usage()
|
usage()
|
||||||
@@ -179,8 +182,11 @@ func resolvePathSpec(pathSpec, repoAbs string) (string, string, error) {
|
|||||||
if err != nil {
|
if err != nil {
|
||||||
continue
|
continue
|
||||||
}
|
}
|
||||||
targetRoot, err := selectTarget(cfg.targets)
|
targetRoot, err := selectTarget(cfg)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
if errors.Is(err, errTargetDisabled) {
|
||||||
|
continue
|
||||||
|
}
|
||||||
continue
|
continue
|
||||||
}
|
}
|
||||||
absTarget, err := filepath.Abs(expandHome(targetRoot))
|
absTarget, err := filepath.Abs(expandHome(targetRoot))
|
||||||
@@ -240,8 +246,11 @@ func applyCmd(args []string) error {
|
|||||||
return fmt.Errorf("%s: %w", entry.Name(), err)
|
return fmt.Errorf("%s: %w", entry.Name(), err)
|
||||||
}
|
}
|
||||||
|
|
||||||
targetRoot, err := selectTarget(cfg.targets)
|
targetRoot, err := selectTarget(cfg)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
if errors.Is(err, errTargetDisabled) {
|
||||||
|
continue
|
||||||
|
}
|
||||||
return fmt.Errorf("%s: %w", entry.Name(), err)
|
return fmt.Errorf("%s: %w", entry.Name(), err)
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -427,7 +436,7 @@ func unlinkCmd(args []string) error {
|
|||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
targetRoot, err := selectTarget(cfg.targets)
|
targetRoot, err := selectTarget(cfg)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
@@ -487,7 +496,7 @@ func removeCmd(args []string) error {
|
|||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
targetRoot, err := selectTarget(cfg.targets)
|
targetRoot, err := selectTarget(cfg)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
@@ -620,19 +629,31 @@ func loadConfig(path string) (*packageConfig, error) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
targets := make(map[string]string)
|
targets := make(map[string]string)
|
||||||
|
disabled := make(map[string]bool)
|
||||||
targetTbl.ForEach(func(k, v lua.LValue) {
|
targetTbl.ForEach(func(k, v lua.LValue) {
|
||||||
ks, ok1 := k.(lua.LString)
|
ks, ok := k.(lua.LString)
|
||||||
vs, ok2 := v.(lua.LString)
|
if !ok {
|
||||||
if ok1 && ok2 {
|
return
|
||||||
targets[string(ks)] = expandHome(string(vs))
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if v == lua.LNil || v == lua.LFalse {
|
||||||
|
disabled[string(ks)] = true
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
vs, ok := v.(lua.LString)
|
||||||
|
if !ok {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
targets[string(ks)] = expandHome(string(vs))
|
||||||
})
|
})
|
||||||
|
|
||||||
if len(targets) == 0 {
|
if len(targets) == 0 && len(disabled) == 0 {
|
||||||
return nil, errors.New("config.target is empty")
|
return nil, errors.New("config.target is empty")
|
||||||
}
|
}
|
||||||
|
|
||||||
return &packageConfig{targets: targets}, nil
|
return &packageConfig{targets: targets, disabled: disabled}, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func statusCmd() error {
|
func statusCmd() error {
|
||||||
@@ -658,8 +679,11 @@ func statusCmd() error {
|
|||||||
return fmt.Errorf("%s: %w", entry.Name(), err)
|
return fmt.Errorf("%s: %w", entry.Name(), err)
|
||||||
}
|
}
|
||||||
|
|
||||||
targetRoot, err := selectTarget(cfg.targets)
|
targetRoot, err := selectTarget(cfg)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
if errors.Is(err, errTargetDisabled) {
|
||||||
|
continue
|
||||||
|
}
|
||||||
return fmt.Errorf("%s: %w", entry.Name(), err)
|
return fmt.Errorf("%s: %w", entry.Name(), err)
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -682,15 +706,18 @@ func statusCmd() error {
|
|||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func selectTarget(targets map[string]string) (string, error) {
|
func selectTarget(cfg *packageConfig) (string, error) {
|
||||||
osKey := runtime.GOOS
|
osKey := runtime.GOOS
|
||||||
if osKey == "darwin" {
|
if osKey == "darwin" {
|
||||||
osKey = "macos"
|
osKey = "macos"
|
||||||
}
|
}
|
||||||
if target, ok := targets[osKey]; ok {
|
if cfg.disabled[osKey] {
|
||||||
|
return "", errTargetDisabled
|
||||||
|
}
|
||||||
|
if target, ok := cfg.targets[osKey]; ok {
|
||||||
return expandHome(target), nil
|
return expandHome(target), nil
|
||||||
}
|
}
|
||||||
if target, ok := targets["default"]; ok {
|
if target, ok := cfg.targets["default"]; ok {
|
||||||
return expandHome(target), nil
|
return expandHome(target), nil
|
||||||
}
|
}
|
||||||
return "", fmt.Errorf("missing target for %s and default", osKey)
|
return "", fmt.Errorf("missing target for %s and default", osKey)
|
||||||
@@ -877,8 +904,11 @@ func findPackageByTarget(repo, targetRoot string) (string, error) {
|
|||||||
if err != nil {
|
if err != nil {
|
||||||
continue
|
continue
|
||||||
}
|
}
|
||||||
target, err := selectTarget(cfg.targets)
|
target, err := selectTarget(cfg)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
if errors.Is(err, errTargetDisabled) {
|
||||||
|
continue
|
||||||
|
}
|
||||||
continue
|
continue
|
||||||
}
|
}
|
||||||
absPkgTarget, err := filepath.Abs(expandHome(target))
|
absPkgTarget, err := filepath.Abs(expandHome(target))
|
||||||
|
|||||||
Reference in New Issue
Block a user