diff --git a/.portsync.example b/.portsync.example index da694f2..786d0af 100644 --- a/.portsync.example +++ b/.portsync.example @@ -1,8 +1,9 @@ # Path to your local ports directory. -#base = "/usr/ports" +#base = "/usr/ports" # Default +#base = "~/git/ports" # Default maintainer used by portscout. -#maintainer = "ports@FreeBSD.org" +#maintainer = "ports@FreeBSD.org" # Default # By default all packages associated with a # maintainer are used. You can limit this @@ -12,4 +13,5 @@ # Location in which the Makefile scripts # are located. -#scriptDir = "/usr/lcoal/share/portsync/Mk" +#scriptDir = "/usr/lcoal/share/portsync/Mk" # Default +#scriptDir = "~/Mk" diff --git a/internal/fetcher/portscout.go b/internal/fetcher/portscout.go index bce0612..36251eb 100644 --- a/internal/fetcher/portscout.go +++ b/internal/fetcher/portscout.go @@ -10,6 +10,7 @@ import ( "fmt" "os" "os/exec" + "path/filepath" "slices" "strings" "sync" @@ -87,6 +88,10 @@ func (ps Portscout) Fetch(cmd *cobra.Command) (*Packages, error) { func (ps Portscout) Transform(cmd *cobra.Command, pkg *Package) (*Package, error) { base := viper.GetString("base") + if strings.HasPrefix(base, "~/") { + dir, _ := os.UserHomeDir() + base = filepath.Join(dir, base[2:]) + } if !strings.HasSuffix(base, "/") { base += "/" } diff --git a/internal/mk/mk.go b/internal/mk/mk.go index 4914c08..d5e2e36 100644 --- a/internal/mk/mk.go +++ b/internal/mk/mk.go @@ -9,6 +9,7 @@ package mk import ( "os" "os/exec" + "path/filepath" "strings" . "github.com/lcook/portsync/internal/_package" @@ -17,6 +18,10 @@ import ( func run(pkg *Package, makefile string) { base := viper.GetString("base") + if strings.HasPrefix(base, "~/") { + dir, _ := os.UserHomeDir() + base = filepath.Join(dir, base[2:]) + } if !strings.HasSuffix(base, "/") { base += "/" } @@ -31,6 +36,10 @@ func run(pkg *Package, makefile string) { os.Setenv(k, v) } scriptDir := viper.GetString("scriptdir") + if strings.HasPrefix(scriptDir, "~/") { + dir, _ := os.UserHomeDir() + base = filepath.Join(dir, scriptDir[2:]) + } if !strings.HasSuffix(scriptDir, "/") { scriptDir += "/" }