diff options
| author | Paul Buetow <paul@buetow.org> | 2025-07-13 21:26:16 +0300 |
|---|---|---|
| committer | Paul Buetow <paul@buetow.org> | 2025-07-13 21:26:16 +0300 |
| commit | 735cbc11e1a3e103a69c03390b5f40ecc810dc9c (patch) | |
| tree | 0622c72f3c9d3ea2f8c9e9fd39d59a68b87d6351 | |
| parent | fa5ef028ec9a7af801710eed190057d3b3c172f0 (diff) | |
fix: update default config path to follow XDG Base Directory spec
- Change default config from ~/.gitsyncer.json to ~/.config/gitsyncer/config
- Update all documentation and help text to reflect new path
- LoadConfig still checks common locations for backward compatibility:
- ./gitsyncer.json
- ~/.config/gitsyncer/config (new default)
- ~/.gitsyncer.json
This follows the XDG Base Directory specification for better organization
of configuration files.
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
| -rw-r--r-- | README.md | 12 | ||||
| -rw-r--r-- | internal/cli/handlers.go | 4 | ||||
| -rw-r--r-- | internal/cmd/root.go | 2 | ||||
| -rw-r--r-- | internal/cmd/test.go | 2 | ||||
| -rw-r--r-- | internal/config/config.go | 3 |
5 files changed, 12 insertions, 11 deletions
@@ -39,7 +39,7 @@ go build -o gitsyncer ./cmd/gitsyncer ## Configuration -Create a `gitsyncer.json` file: +Create a configuration file at `~/.config/gitsyncer/config` (or specify a custom path with `-c`): ```json { @@ -245,13 +245,13 @@ gitsyncer version These options are available for all commands: -- `-c, --config` - Path to configuration file (default: ~/.gitsyncer.json) +- `-c, --config` - Path to configuration file (default: ~/.config/gitsyncer/config) - `-w, --work-dir` - Working directory (default: ~/git/gitsyncer-workdir) - `-h, --help` - Show help for any command ## The --backup Flag -The `--backup` flag enables syncing to backup locations configured in your `gitsyncer.json`. This is particularly useful when: +The `--backup` flag enables syncing to backup locations configured in your config file. This is particularly useful when: - Your backup server might be offline (e.g., home NAS) - You want to control when backups happen - You need to separate regular syncing from backup operations @@ -328,7 +328,7 @@ You can configure SSH backup locations for one-way repository backups to private ### SSH Backup Example ```bash -# Configure your gitsyncer.json with an SSH backup location +# Configure your config file with an SSH backup location # Backup locations are DISABLED by default to handle offline servers # Sync without backup (default behavior) @@ -436,7 +436,7 @@ The batch-run feature is designed for automated weekly synchronization from cron ### Sync specific repositories 1. Create repositories on all platforms (GitHub, Codeberg, etc.) -2. Add the repository name to your `gitsyncer.json` +2. Add the repository name to your configuration file 3. Run `gitsyncer sync repo repo-name` 4. GitSyncer will: - Clone from the first organization @@ -444,7 +444,7 @@ The batch-run feature is designed for automated weekly synchronization from cron - Keep them in sync going forward ### Sync all public Codeberg repositories -1. Ensure Codeberg is in your organizations list +1. Ensure Codeberg is in your organizations list in the config 2. Run `gitsyncer sync codeberg-to-github` 3. GitSyncer will: - Fetch all public repositories from your Codeberg account diff --git a/internal/cli/handlers.go b/internal/cli/handlers.go index 02df7ae..44c64c6 100644 --- a/internal/cli/handlers.go +++ b/internal/cli/handlers.go @@ -69,7 +69,7 @@ func findDefaultConfigPath() string { // Check common config locations configLocations := []string{ filepath.Join(".", "gitsyncer.json"), - filepath.Join(home, ".config", "gitsyncer", "config.json"), + filepath.Join(home, ".config", "gitsyncer", "config"), filepath.Join(home, ".gitsyncer.json"), } @@ -88,7 +88,7 @@ func ShowConfigHelp() { fmt.Println("No configuration file found. Please create one of:") fmt.Printf(" - ./gitsyncer.json\n") - fmt.Printf(" - %s/.config/gitsyncer/config.json\n", home) + fmt.Printf(" - %s/.config/gitsyncer/config\n", home) fmt.Printf(" - %s/.gitsyncer.json\n", home) fmt.Println("\nOr specify a config file with --config flag") fmt.Println("\nExample configuration:") diff --git a/internal/cmd/root.go b/internal/cmd/root.go index 04ea6dd..927a9b8 100644 --- a/internal/cmd/root.go +++ b/internal/cmd/root.go @@ -53,7 +53,7 @@ func Execute() { func init() { // Global flags - rootCmd.PersistentFlags().StringVarP(&cfgFile, "config", "c", "", "configuration file (default: ~/.gitsyncer.json)") + rootCmd.PersistentFlags().StringVarP(&cfgFile, "config", "c", "", "configuration file (default: ~/.config/gitsyncer/config)") // Set default work directory home, err := os.UserHomeDir() diff --git a/internal/cmd/test.go b/internal/cmd/test.go index 0590719..2c50112 100644 --- a/internal/cmd/test.go +++ b/internal/cmd/test.go @@ -44,7 +44,7 @@ var testConfigCmd = &cobra.Command{ gitsyncer test config # Test specific config file - gitsyncer test config -c ~/my-gitsyncer.json`, + gitsyncer test config -c ~/my-config.json`, Run: func(cmd *cobra.Command, args []string) { // Try to load and validate config cfg, err := config.Load(cfgFile) diff --git a/internal/config/config.go b/internal/config/config.go index 799c792..a141c81 100644 --- a/internal/config/config.go +++ b/internal/config/config.go @@ -34,7 +34,8 @@ func Load(path string) (*Config, error) { if err != nil { return nil, fmt.Errorf("failed to get home directory: %w", err) } - path = filepath.Join(home, ".gitsyncer.json") + // Use XDG config directory + path = filepath.Join(home, ".config", "gitsyncer", "config") } else if len(path) >= 2 && path[:2] == "~/" { // Expand home directory if needed home, err := os.UserHomeDir() |
