Add dryrun functionality

This commit is contained in:
2025-10-15 10:20:15 +02:00
parent b286d5578e
commit 219a75a1d3

12
main.go
View File

@@ -20,11 +20,11 @@ var Version = "2.0.0"
func main() { func main() {
name := flag.StringP("name", "n", "", "Name of the repository") name := flag.StringP("name", "n", "", "Name of the repository")
private := flag.BoolP("private", "p", false, "Make the repository private") private := flag.BoolP("private", "p", false, "Make the repository private")
noinit := flag.BoolP("noinit", "ni", false, "Do not add remote to the new repo") noinit := flag.Bool("noinit", false, "Do not add remote to the new repo")
forceInit := flag.BoolP("force", "f", false, "Force assignment of the remote (deletes existing origin)") forceInit := flag.BoolP("force", "f", false, "Force assignment of the remote (deletes existing origin)")
remote := flag.StringP("remote", "r", "origin", "Name of the remote to create for the new repository") remote := flag.StringP("remote", "r", "origin", "Name of the remote to create for the new repository")
version := flag.BoolP("version", "v", false, "Show version") version := flag.BoolP("version", "v", false, "Show version")
dryrun := flag.Bool("dryrun", false, "Dry run") dryrun := flag.Bool("dry-run", false, "Dry run")
help := flag.BoolP("help", "h", false, "Show help") help := flag.BoolP("help", "h", false, "Show help")
flag.Parse() flag.Parse()
@@ -100,6 +100,7 @@ func main() {
clipboard.Write(clipboard.FmtText, []byte(repo.CloneURL)) clipboard.Write(clipboard.FmtText, []byte(repo.CloneURL))
} else { } else {
logger.Info("Repository does not exist, creating...") logger.Info("Repository does not exist, creating...")
if !*dryrun {
repo, _, err = client.CreateRepo(gitea.CreateRepoOption{ repo, _, err = client.CreateRepo(gitea.CreateRepoOption{
Name: *name, Name: *name,
Private: *private, Private: *private,
@@ -109,6 +110,7 @@ func main() {
logger.Error("Error creating repository: %v", err) logger.Error("Error creating repository: %v", err)
return return
} }
}
logger.Info("Repository created at: %s", repo.CloneURL) logger.Info("Repository created at: %s", repo.CloneURL)
clipboard.Write(clipboard.FmtText, []byte(repo.CloneURL)) clipboard.Write(clipboard.FmtText, []byte(repo.CloneURL))
} }
@@ -132,23 +134,27 @@ func main() {
return return
} }
} else { } else {
if !*dryrun {
localRepo, err = git.PlainInit(cwd, false) localRepo, err = git.PlainInit(cwd, false)
if err != nil { if err != nil {
logger.Error("Error initializing git repository: %v", err) logger.Error("Error initializing git repository: %v", err)
return return
} }
} }
}
logger.Info("Checking if remote %s exists in local repository...", *remote) logger.Info("Checking if remote %s exists in local repository...", *remote)
_, err = localRepo.Remote(*remote) _, err = localRepo.Remote(*remote)
if err == nil { if err == nil {
logger.Info("Remote %s exists in local repository", *remote) logger.Info("Remote %s exists in local repository", *remote)
if *forceInit { if *forceInit {
logger.Info("Deleting remote %s from local repository...", *remote) logger.Info("Deleting remote %s from local repository...", *remote)
if !*dryrun {
err = localRepo.DeleteRemote(*remote) err = localRepo.DeleteRemote(*remote)
if err != nil { if err != nil {
logger.Error("Error deleting remote %s from local repository: %v", *remote, err) logger.Error("Error deleting remote %s from local repository: %v", *remote, err)
return return
} }
}
logger.Info("Remote %s deleted from local repository", *remote) logger.Info("Remote %s deleted from local repository", *remote)
} else { } else {
logger.Error("Remote %s already exists in local repository", *remote) logger.Error("Remote %s already exists in local repository", *remote)
@@ -157,6 +163,7 @@ func main() {
} }
logger.Info("Adding remote %s to local repository...", *remote) logger.Info("Adding remote %s to local repository...", *remote)
if !*dryrun {
_, err = localRepo.CreateRemote(&config.RemoteConfig{ _, err = localRepo.CreateRemote(&config.RemoteConfig{
Name: *remote, Name: *remote,
URLs: []string{repo.CloneURL}, URLs: []string{repo.CloneURL},
@@ -165,6 +172,7 @@ func main() {
logger.Error("Error adding remote %s to local repository: %v", *remote, err) logger.Error("Error adding remote %s to local repository: %v", *remote, err)
return return
} }
}
logger.Info("Remote added to local repository") logger.Info("Remote added to local repository")
} }
logger.Info("Done") logger.Info("Done")