summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPaul Buetow <paul@buetow.org>2025-07-13 21:26:16 +0300
committerPaul Buetow <paul@buetow.org>2025-07-13 21:26:16 +0300
commit735cbc11e1a3e103a69c03390b5f40ecc810dc9c (patch)
tree0622c72f3c9d3ea2f8c9e9fd39d59a68b87d6351
parentfa5ef028ec9a7af801710eed190057d3b3c172f0 (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.md12
-rw-r--r--internal/cli/handlers.go4
-rw-r--r--internal/cmd/root.go2
-rw-r--r--internal/cmd/test.go2
-rw-r--r--internal/config/config.go3
5 files changed, 12 insertions, 11 deletions
diff --git a/README.md b/README.md
index b55df79..afaaeb9 100644
--- a/README.md
+++ b/README.md
@@ -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()