From 33937f1fb64e9051c83cc3ae4d42dd5cd4edc25e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Michael=20Mur=C3=A9?= Date: Tue, 22 Sep 2020 22:12:11 +0200 Subject: [PATCH 1/3] plenty of structure improvements --- Makefile | 2 +- commands/root.go | 106 ---------------- env.go | 116 ++++++++++++++++++ go.sum | 2 + main.go | 15 +-- migration.go | 6 + {migration01 => migration1}/README.md | 0 {migration01 => migration1}/after/bug/bug.go | 10 +- .../after/bug/bug_actions.go | 4 +- .../after/bug/clocks.go | 2 +- .../after/bug/comment.go | 8 +- .../after/bug/identity.go | 2 +- .../after/bug/interface.go | 6 +- .../after/bug/label.go | 2 +- .../after/bug/op_add_comment.go | 10 +- .../after/bug/op_create.go | 10 +- .../after/bug/op_edit_comment.go | 10 +- .../after/bug/op_label_change.go | 6 +- .../after/bug/op_noop.go | 4 +- .../after/bug/op_set_metadata.go | 4 +- .../after/bug/op_set_status.go | 6 +- .../after/bug/op_set_title.go | 8 +- .../after/bug/operation.go | 6 +- .../after/bug/operation_iterator.go | 0 .../after/bug/operation_pack.go | 4 +- .../after/bug/snapshot.go | 4 +- .../after/bug/sorting.go | 0 .../after/bug/status.go | 0 .../after/bug/timeline.go | 8 +- .../after/bug/with_snapshot.go | 2 +- .../after/entity/doc.go | 0 .../after/entity/err.go | 0 .../after/entity/id.go | 0 .../after/entity/interface.go | 0 .../after/entity/merge.go | 0 .../after/identity/bare.go | 10 +- .../after/identity/common.go | 2 +- .../after/identity/identity.go | 10 +- .../after/identity/identity_actions.go | 4 +- .../after/identity/identity_stub.go | 8 +- .../after/identity/interface.go | 8 +- .../after/identity/key.go | 0 .../after/identity/resolver.go | 4 +- .../after/identity/version.go | 8 +- .../after/repository/config.go | 0 .../after/repository/config_mem.go | 0 .../after/repository/git.go | 4 +- .../after/repository/git_config.go | 0 .../after/repository/repo.go | 4 +- .../after}/repository/tree_entry.go | 2 +- .../after/util/colors/colors.go | 0 .../after/util/git/hash.go | 0 .../after/util/interrupt/cleaner.go | 0 .../after/util/lamport/clock.go | 0 .../after/util/lamport/clock_testing.go | 0 .../after/util/lamport/mem_clock.go | 0 .../after/util/lamport/persisted_clock.go | 0 .../after/util/process/process.go | 0 .../after/util/text/transform.go | 0 .../after/util/text/validate.go | 0 .../after/util/timestamp/timestamp.go | 0 {migration01 => migration1}/before/README.md | 0 {migration01 => migration1}/before/bug/bug.go | 6 +- .../before/bug/bug_actions.go | 2 +- .../before/bug/clocks.go | 2 +- .../before/bug/comment.go | 2 +- .../before/bug/interface.go | 4 +- .../before/bug/label.go | 2 +- .../before/bug/op_add_comment.go | 4 +- .../before/bug/op_create.go | 4 +- .../before/bug/op_edit_comment.go | 4 +- .../before/bug/op_label_change.go | 2 +- .../before/bug/op_noop.go | 2 +- .../before/bug/op_set_metadata.go | 2 +- .../before/bug/op_set_status.go | 2 +- .../before/bug/op_set_title.go | 4 +- .../before/bug/operation.go | 2 +- .../before/bug/operation_iterator.go | 0 .../before/bug/operation_pack.go | 4 +- .../before/bug/person.go | 4 +- .../before/bug/snapshot.go | 2 +- .../before/bug/sorting.go | 0 .../before/bug/status.go | 0 .../before/bug/time.go | 0 .../before/bug/timeline.go | 2 +- .../before/bug/with_snapshot.go | 2 +- .../before/repository/git.go | 4 +- .../before/repository/repo.go | 4 +- .../before}/repository/tree_entry.go | 2 +- .../before/util/colors/colors.go | 0 .../before/util/git/hash.go | 0 .../before/util/lamport/lamport.go | 0 .../before/util/lamport/persisted_lamport.go | 0 .../before/util/process/process.go | 0 .../before/util/text/left_padded.go | 0 .../before/util/text/text.go | 0 .../before/util/text/validate.go | 0 .../migration1.go | 65 ++++++---- .../migration1_test.go | 32 ++--- migration12/migration12.go | 68 ---------- migration12/migration12_test.go | 84 ------------- {migration12 => migration2}/README.md | 0 .../after/bridge/core/auth/credential.go | 4 +- .../after/bridge/core/auth/credential_base.go | 2 +- .../bridge/core/auth/credential_test.go | 4 +- .../after/bridge/core/auth/login.go | 2 +- .../after/bridge/core/auth/login_password.go | 2 +- .../bridge/core/auth/login_password_test.go | 0 .../after/bridge/core/auth/login_test.go | 0 .../after/bridge/core/auth/options.go | 0 .../after/bridge/core/auth/token.go | 2 +- .../after/bridge/core/auth/token_test.go | 0 .../after/entity/doc.go | 0 .../after/entity/err.go | 0 .../after/entity/id.go | 0 .../after/entity/interface.go | 0 .../after/entity/merge.go | 0 .../after/repository/config.go | 0 .../after/repository/config_mem.go | 0 .../after/repository/config_mem_test.go | 0 .../after/repository/config_testing.go | 0 .../after/repository/git.go | 2 +- .../after/repository/git_config.go | 0 .../after/repository/git_test.go | 0 .../after/repository/git_testing.go | 0 .../after/repository/gogit.go | 2 +- .../after/repository/gogit_config.go | 0 .../after/repository/gogit_test.go | 0 .../after/repository/gogit_testing.go | 0 .../after/repository/hash.go | 0 .../after/repository/keyring.go | 0 .../after/repository/mock_repo.go | 2 +- .../after/repository/mock_repo_test.go | 0 .../after/repository/repo.go | 2 +- .../after/repository/repo_testing.go | 0 .../after/repository/tree_entry.go | 0 .../after/repository/tree_entry_test.go | 0 .../after/util/colors/colors.go | 0 .../after/util/interrupt/cleaner.go | 0 .../after/util/interrupt/cleaner_test.go | 0 .../after/util/lamport/clock.go | 0 .../after/util/lamport/clock_testing.go | 0 .../after/util/lamport/mem_clock.go | 0 .../after/util/lamport/mem_clock_test.go | 0 .../after/util/lamport/persisted_clock.go | 0 .../util/lamport/persisted_clock_test.go | 0 .../after/util/process/process.go | 0 .../after/util/text/transform.go | 0 .../after/util/text/validate.go | 0 .../after/util/timestamp/timestamp.go | 0 .../before/bridge/core/auth/credential.go | 4 +- .../bridge/core/auth/credential_base.go | 2 +- .../bridge/core/auth/credential_test.go | 4 +- .../before/bridge/core/auth/login.go | 2 +- .../before/bridge/core/auth/login_password.go | 2 +- .../bridge/core/auth/login_password_test.go | 0 .../before/bridge/core/auth/login_test.go | 0 .../before/bridge/core/auth/options.go | 0 .../before/bridge/core/auth/token.go | 2 +- .../before/bridge/core/auth/token_test.go | 0 .../before/entity/doc.go | 0 .../before/entity/err.go | 0 .../before/entity/id.go | 0 .../before/entity/interface.go | 0 .../before/entity/merge.go | 0 .../before/repository/config.go | 0 .../before/repository/config_git.go | 0 .../before/repository/config_mem.go | 0 .../before/repository/git.go | 4 +- .../before/repository/git_test.go | 0 .../before/repository/git_testing.go | 0 .../before/repository/mock_repo.go | 4 +- .../before/repository/repo.go | 4 +- .../before/repository/tree_entry.go | 2 +- .../before/repository/tree_entry_test.go | 2 +- .../before/util/colors/colors.go | 0 .../before/util/git/hash.go | 0 .../before/util/interrupt/cleaner.go | 0 .../before/util/interrupt/cleaner_test.go | 0 .../before/util/lamport/lamport.go | 0 .../before/util/lamport/lamport_test.go | 0 .../before/util/lamport/persisted_lamport.go | 0 .../before/util/process/process.go | 0 .../before/util/text/transform.go | 0 .../before/util/text/validate.go | 0 .../before/util/timestamp/timestamp.go | 0 migration2/migration2.go | 88 +++++++++++++ migration2/migration2_test.go | 60 +++++++++ root.go | 65 ++++++++++ version.go | 37 ++++++ 190 files changed, 587 insertions(+), 463 deletions(-) delete mode 100644 commands/root.go create mode 100644 env.go create mode 100644 migration.go rename {migration01 => migration1}/README.md (100%) rename {migration01 => migration1}/after/bug/bug.go (97%) rename {migration01 => migration1}/after/bug/bug_actions.go (96%) rename {migration01 => migration1}/after/bug/clocks.go (90%) rename {migration01 => migration1}/after/bug/comment.go (76%) rename {migration01 => migration1}/after/bug/identity.go (88%) rename {migration01 => migration1}/after/bug/interface.go (86%) rename {migration01 => migration1}/after/bug/label.go (96%) rename {migration01 => migration1}/after/bug/op_add_comment.go (89%) rename {migration01 => migration1}/after/bug/op_create.go (90%) rename {migration01 => migration1}/after/bug/op_edit_comment.go (92%) rename {migration01 => migration1}/after/bug/op_label_change.go (96%) rename {migration01 => migration1}/after/bug/op_noop.go (92%) rename {migration01 => migration1}/after/bug/op_set_metadata.go (95%) rename {migration01 => migration1}/after/bug/op_set_status.go (92%) rename {migration01 => migration1}/after/bug/op_set_title.go (91%) rename {migration01 => migration1}/after/bug/operation.go (96%) rename {migration01 => migration1}/after/bug/operation_iterator.go (100%) rename {migration01 => migration1}/after/bug/operation_pack.go (96%) rename {migration01 => migration1}/after/bug/snapshot.go (95%) rename {migration01 => migration1}/after/bug/sorting.go (100%) rename {migration01 => migration1}/after/bug/status.go (100%) rename {migration01 => migration1}/after/bug/timeline.go (86%) rename {migration01 => migration1}/after/bug/with_snapshot.go (93%) rename {migration01 => migration1}/after/entity/doc.go (100%) rename {migration01 => migration1}/after/entity/err.go (100%) rename {migration01 => migration1}/after/entity/id.go (100%) rename {migration01 => migration1}/after/entity/interface.go (100%) rename {migration01 => migration1}/after/entity/merge.go (100%) rename {migration01 => migration1}/after/identity/bare.go (93%) rename {migration01 => migration1}/after/identity/common.go (94%) rename {migration01 => migration1}/after/identity/identity.go (97%) rename {migration01 => migration1}/after/identity/identity_actions.go (95%) rename {migration01 => migration1}/after/identity/identity_stub.go (89%) rename {migration01 => migration1}/after/identity/interface.go (86%) rename {migration01 => migration1}/after/identity/key.go (100%) rename {migration01 => migration1}/after/identity/resolver.go (80%) rename {migration01 => migration1}/after/identity/version.go (95%) rename {migration01 => migration1}/after/repository/config.go (100%) rename {migration01 => migration1}/after/repository/config_mem.go (100%) rename {migration01 => migration1}/after/repository/git.go (98%) rename {migration01 => migration1}/after/repository/git_config.go (100%) rename {migration01 => migration1}/after/repository/repo.go (97%) rename {migration12/before => migration1/after}/repository/tree_entry.go (94%) rename {migration01 => migration1}/after/util/colors/colors.go (100%) rename {migration01 => migration1}/after/util/git/hash.go (100%) rename {migration01 => migration1}/after/util/interrupt/cleaner.go (100%) rename {migration01 => migration1}/after/util/lamport/clock.go (100%) rename {migration01 => migration1}/after/util/lamport/clock_testing.go (100%) rename {migration01 => migration1}/after/util/lamport/mem_clock.go (100%) rename {migration01 => migration1}/after/util/lamport/persisted_clock.go (100%) rename {migration01 => migration1}/after/util/process/process.go (100%) rename {migration01 => migration1}/after/util/text/transform.go (100%) rename {migration01 => migration1}/after/util/text/validate.go (100%) rename {migration01 => migration1}/after/util/timestamp/timestamp.go (100%) rename {migration01 => migration1}/before/README.md (100%) rename {migration01 => migration1}/before/bug/bug.go (98%) rename {migration01 => migration1}/before/bug/bug_actions.go (98%) rename {migration01 => migration1}/before/bug/clocks.go (85%) rename {migration01 => migration1}/before/bug/comment.go (89%) rename {migration01 => migration1}/before/bug/interface.go (90%) rename {migration01 => migration1}/before/bug/label.go (91%) rename {migration01 => migration1}/before/bug/op_add_comment.go (94%) rename {migration01 => migration1}/before/bug/op_create.go (94%) rename {migration01 => migration1}/before/bug/op_edit_comment.go (94%) rename {migration01 => migration1}/before/bug/op_label_change.go (98%) rename {migration01 => migration1}/before/bug/op_noop.go (93%) rename {migration01 => migration1}/before/bug/op_set_metadata.go (95%) rename {migration01 => migration1}/before/bug/op_set_status.go (96%) rename {migration01 => migration1}/before/bug/op_set_title.go (94%) rename {migration01 => migration1}/before/bug/operation.go (98%) rename {migration01 => migration1}/before/bug/operation_iterator.go (100%) rename {migration01 => migration1}/before/bug/operation_pack.go (95%) rename {migration01 => migration1}/before/bug/person.go (93%) rename {migration01 => migration1}/before/bug/snapshot.go (95%) rename {migration01 => migration1}/before/bug/sorting.go (100%) rename {migration01 => migration1}/before/bug/status.go (100%) rename {migration01 => migration1}/before/bug/time.go (100%) rename {migration01 => migration1}/before/bug/timeline.go (95%) rename {migration01 => migration1}/before/bug/with_snapshot.go (93%) rename {migration01 => migration1}/before/repository/git.go (98%) rename {migration01 => migration1}/before/repository/repo.go (96%) rename {migration01/after => migration1/before}/repository/tree_entry.go (95%) rename {migration01 => migration1}/before/util/colors/colors.go (100%) rename {migration01 => migration1}/before/util/git/hash.go (100%) rename {migration01 => migration1}/before/util/lamport/lamport.go (100%) rename {migration01 => migration1}/before/util/lamport/persisted_lamport.go (100%) rename {migration01 => migration1}/before/util/process/process.go (100%) rename {migration01 => migration1}/before/util/text/left_padded.go (100%) rename {migration01 => migration1}/before/util/text/text.go (100%) rename {migration01 => migration1}/before/util/text/validate.go (100%) rename migration01/migration01.go => migration1/migration1.go (56%) rename migration01/migration01_test.go => migration1/migration1_test.go (70%) delete mode 100644 migration12/migration12.go delete mode 100644 migration12/migration12_test.go rename {migration12 => migration2}/README.md (100%) rename {migration12 => migration2}/after/bridge/core/auth/credential.go (97%) rename {migration12 => migration2}/after/bridge/core/auth/credential_base.go (97%) rename {migration12/before => migration2/after}/bridge/core/auth/credential_test.go (95%) rename {migration12 => migration2}/after/bridge/core/auth/login.go (94%) rename {migration12 => migration2}/after/bridge/core/auth/login_password.go (95%) rename {migration12 => migration2}/after/bridge/core/auth/login_password_test.go (100%) rename {migration12 => migration2}/after/bridge/core/auth/login_test.go (100%) rename {migration12 => migration2}/after/bridge/core/auth/options.go (100%) rename {migration12 => migration2}/after/bridge/core/auth/token.go (94%) rename {migration12 => migration2}/after/bridge/core/auth/token_test.go (100%) rename {migration12 => migration2}/after/entity/doc.go (100%) rename {migration12 => migration2}/after/entity/err.go (100%) rename {migration12 => migration2}/after/entity/id.go (100%) rename {migration12 => migration2}/after/entity/interface.go (100%) rename {migration12 => migration2}/after/entity/merge.go (100%) rename {migration12 => migration2}/after/repository/config.go (100%) rename {migration12 => migration2}/after/repository/config_mem.go (100%) rename {migration12 => migration2}/after/repository/config_mem_test.go (100%) rename {migration12 => migration2}/after/repository/config_testing.go (100%) rename {migration12 => migration2}/after/repository/git.go (99%) rename {migration12 => migration2}/after/repository/git_config.go (100%) rename {migration12 => migration2}/after/repository/git_test.go (100%) rename {migration12 => migration2}/after/repository/git_testing.go (100%) rename {migration12 => migration2}/after/repository/gogit.go (99%) rename {migration12 => migration2}/after/repository/gogit_config.go (100%) rename {migration12 => migration2}/after/repository/gogit_test.go (100%) rename {migration12 => migration2}/after/repository/gogit_testing.go (100%) rename {migration12 => migration2}/after/repository/hash.go (100%) rename {migration12 => migration2}/after/repository/keyring.go (100%) rename {migration12 => migration2}/after/repository/mock_repo.go (98%) rename {migration12 => migration2}/after/repository/mock_repo_test.go (100%) rename {migration12 => migration2}/after/repository/repo.go (98%) rename {migration12 => migration2}/after/repository/repo_testing.go (100%) rename {migration12 => migration2}/after/repository/tree_entry.go (100%) rename {migration12 => migration2}/after/repository/tree_entry_test.go (100%) rename {migration12 => migration2}/after/util/colors/colors.go (100%) rename {migration12 => migration2}/after/util/interrupt/cleaner.go (100%) rename {migration12 => migration2}/after/util/interrupt/cleaner_test.go (100%) rename {migration12 => migration2}/after/util/lamport/clock.go (100%) rename {migration12 => migration2}/after/util/lamport/clock_testing.go (100%) rename {migration12 => migration2}/after/util/lamport/mem_clock.go (100%) rename {migration12 => migration2}/after/util/lamport/mem_clock_test.go (100%) rename {migration12 => migration2}/after/util/lamport/persisted_clock.go (100%) rename {migration12 => migration2}/after/util/lamport/persisted_clock_test.go (100%) rename {migration12 => migration2}/after/util/process/process.go (100%) rename {migration12 => migration2}/after/util/text/transform.go (100%) rename {migration12 => migration2}/after/util/text/validate.go (100%) rename {migration12 => migration2}/after/util/timestamp/timestamp.go (100%) rename {migration12 => migration2}/before/bridge/core/auth/credential.go (97%) rename {migration12 => migration2}/before/bridge/core/auth/credential_base.go (95%) rename {migration12/after => migration2/before}/bridge/core/auth/credential_test.go (95%) rename {migration12 => migration2}/before/bridge/core/auth/login.go (94%) rename {migration12 => migration2}/before/bridge/core/auth/login_password.go (95%) rename {migration12 => migration2}/before/bridge/core/auth/login_password_test.go (100%) rename {migration12 => migration2}/before/bridge/core/auth/login_test.go (100%) rename {migration12 => migration2}/before/bridge/core/auth/options.go (100%) rename {migration12 => migration2}/before/bridge/core/auth/token.go (94%) rename {migration12 => migration2}/before/bridge/core/auth/token_test.go (100%) rename {migration12 => migration2}/before/entity/doc.go (100%) rename {migration12 => migration2}/before/entity/err.go (100%) rename {migration12 => migration2}/before/entity/id.go (100%) rename {migration12 => migration2}/before/entity/interface.go (100%) rename {migration12 => migration2}/before/entity/merge.go (100%) rename {migration12 => migration2}/before/repository/config.go (100%) rename {migration12 => migration2}/before/repository/config_git.go (100%) rename {migration12 => migration2}/before/repository/config_mem.go (100%) rename {migration12 => migration2}/before/repository/git.go (98%) rename {migration12 => migration2}/before/repository/git_test.go (100%) rename {migration12 => migration2}/before/repository/git_testing.go (100%) rename {migration12 => migration2}/before/repository/mock_repo.go (97%) rename {migration12 => migration2}/before/repository/repo.go (96%) rename {migration01 => migration2}/before/repository/tree_entry.go (94%) rename {migration12 => migration2}/before/repository/tree_entry_test.go (89%) rename {migration12 => migration2}/before/util/colors/colors.go (100%) rename {migration12 => migration2}/before/util/git/hash.go (100%) rename {migration12 => migration2}/before/util/interrupt/cleaner.go (100%) rename {migration12 => migration2}/before/util/interrupt/cleaner_test.go (100%) rename {migration12 => migration2}/before/util/lamport/lamport.go (100%) rename {migration12 => migration2}/before/util/lamport/lamport_test.go (100%) rename {migration12 => migration2}/before/util/lamport/persisted_lamport.go (100%) rename {migration12 => migration2}/before/util/process/process.go (100%) rename {migration12 => migration2}/before/util/text/transform.go (100%) rename {migration12 => migration2}/before/util/text/validate.go (100%) rename {migration12 => migration2}/before/util/timestamp/timestamp.go (100%) create mode 100644 migration2/migration2.go create mode 100644 migration2/migration2_test.go create mode 100644 root.go create mode 100644 version.go diff --git a/Makefile b/Makefile index cc25307..1e4942e 100644 --- a/Makefile +++ b/Makefile @@ -4,7 +4,7 @@ GIT_COMMIT:=$(shell git rev-list -1 HEAD) GIT_LAST_TAG:=$(shell git describe --abbrev=0 --tags) GIT_EXACT_TAG:=$(shell git name-rev --name-only --tags HEAD) -COMMANDS_PATH:=github.com/MichaelMure/git-bug-migration/commands +COMMANDS_PATH:=main LDFLAGS:=-X '${COMMANDS_PATH}.GitCommit=${GIT_COMMIT}' \ -X '${COMMANDS_PATH}.GitLastTag=${GIT_LAST_TAG}' \ -X '${COMMANDS_PATH}.GitExactTag=${GIT_EXACT_TAG}' diff --git a/commands/root.go b/commands/root.go deleted file mode 100644 index d649763..0000000 --- a/commands/root.go +++ /dev/null @@ -1,106 +0,0 @@ -// Package commands contains the CLI commands -package commands - -// Imported from git-bug and edited accordingly - -import ( - "fmt" - "os" - - "github.com/spf13/cobra" - - mg1 "github.com/MichaelMure/git-bug-migration/migration01" - mg1b "github.com/MichaelMure/git-bug-migration/migration01/after/bug" - mg1r "github.com/MichaelMure/git-bug-migration/migration01/after/repository" -) - -const rootCommandName = "git-bug-migration" - -var ( - repo mg1r.ClockedRepo - - // These variables are initialized externally during the build. See the Makefile. - GitCommit = "" - GitLastTag = "" - GitExactTag = "" - - rootCmdShowVersion bool -) - -func runRootCmd(_ *cobra.Command, args []string) error { - if rootCmdShowVersion { - fmt.Printf(version()) - return nil - } - - return mg1.Migrate01(repo) -} - -func version() string { - if GitExactTag == "undefined" { - GitExactTag = "" - } - version := GitLastTag - if GitExactTag == "" { - version = fmt.Sprintf("%s-dev-%.10s", version, GitCommit) - } - return version -} - -// RootCmd represents the base command when called without any subcommands -var RootCmd = &cobra.Command{ - Use: rootCommandName, - Short: "A migratory tool for git-bug", - Long: `git-bug-migration is a tool to migrate git-bug data stored in git repository to a newer format when breaking - changes are made in git-bug. - - `, - - // For the root command, force the execution of the PreRun - // even if we just display the help. This is to make sure that we check - // the repository and give the user early feedback. - PreRunE: loadRepo, - RunE: runRootCmd, - - SilenceUsage: true, - DisableAutoGenTag: true, - - // Custom bash code to connect the git completion for "git bug migration" to the - // git-bug-migration completion for "git-bug-migration" - BashCompletionFunction: ` - _git_bug_migration() { - __start_git-bug-migration "$@" - } - `, -} - -// loadRepo is a pre-run function that load the repository for use in a command -func loadRepo(_ *cobra.Command, _ []string) error { - cwd, err := os.Getwd() - - if err != nil { - panic(fmt.Errorf("unable to get the current working directory: %q", err)) - } - - repo, err = mg1r.NewGitRepo(cwd, []mg1r.ClockLoader{mg1b.ClockLoader}) - if err == mg1r.ErrNotARepo { - return fmt.Errorf("%s must be run from within a git repo", rootCommandName) - } else if err != nil { - return err - } - - return nil -} - -func Execute() { - if err := RootCmd.Execute(); err != nil { - os.Exit(1) - } -} - -func init() { - RootCmd.Flags().SortFlags = false - - RootCmd.Flags().BoolVarP(&rootCmdShowVersion, "version", "v", false, - "Show the version of the migration tool. This will not run the tool.") -} diff --git a/env.go b/env.go new file mode 100644 index 0000000..9edf695 --- /dev/null +++ b/env.go @@ -0,0 +1,116 @@ +package main + +import ( + "fmt" + "io" + "os" + stdpath "path" + "path/filepath" + + "github.com/pkg/errors" + "github.com/spf13/cobra" +) + +// Env is the environment of a command +type Env struct { + out out + err out + + repoPath string +} + +func newEnv() *Env { + return &Env{ + out: out{Writer: os.Stdout}, + err: out{Writer: os.Stderr}, + } +} + +type out struct { + io.Writer +} + +func (o out) Printf(format string, a ...interface{}) { + _, _ = fmt.Fprintf(o, format, a...) +} + +func (o out) Print(a ...interface{}) { + _, _ = fmt.Fprint(o, a...) +} + +func (o out) Println(a ...interface{}) { + _, _ = fmt.Fprintln(o, a...) +} + +// findRepo is a pre-run function that find the repository +func findRepo(env *Env) func(*cobra.Command, []string) error { + return func(cmd *cobra.Command, args []string) error { + cwd, err := os.Getwd() + if err != nil { + return fmt.Errorf("unable to get the current working directory: %q", err) + } + + env.repoPath, err = detectGitPath(cwd) + if err != nil { + return errors.Wrap(err, "can't find the git repository") + } + + return nil + } +} + +func detectGitPath(path string) (string, error) { + // normalize the path + path, err := filepath.Abs(path) + if err != nil { + return "", err + } + + for { + fi, err := os.Stat(stdpath.Join(path, ".git")) + if err == nil { + if !fi.IsDir() { + return "", fmt.Errorf(".git exist but is not a directory") + } + return stdpath.Join(path, ".git"), nil + } + if !os.IsNotExist(err) { + // unknown error + return "", err + } + + // detect bare repo + ok, err := isGitDir(path) + if err != nil { + return "", err + } + if ok { + return path, nil + } + + if parent := filepath.Dir(path); parent == path { + return "", fmt.Errorf(".git not found") + } else { + path = parent + } + } +} + +func isGitDir(path string) (bool, error) { + markers := []string{"HEAD", "objects", "refs"} + + for _, marker := range markers { + _, err := os.Stat(stdpath.Join(path, marker)) + if err == nil { + continue + } + if !os.IsNotExist(err) { + // unknown error + return false, err + } else { + return false, nil + } + } + + return true, nil +} diff --git a/go.sum b/go.sum index c2b6688..043e452 100644 --- a/go.sum +++ b/go.sum @@ -58,6 +58,7 @@ github.com/go-kit/kit v0.8.0/go.mod h1:xBxKIO96dXMWWy0MnWVtmwkA9/13aqxPnvrjFYMA2 github.com/go-logfmt/logfmt v0.3.0/go.mod h1:Qt1PoO58o5twSAckw1HlFXLmHsOX5/0LbT9GBnD5lWE= github.com/go-logfmt/logfmt v0.4.0/go.mod h1:3RMwSq7FuexP4Kalkev3ejPJsZTpXXBr9+V4qmtdjCk= github.com/go-stack/stack v1.8.0/go.mod h1:v0f6uXyyMGvRgIKkXu+yp6POWl0qKG85gN/melR3HDY= +github.com/godbus/dbus v0.0.0-20190726142602-4481cbc300e2 h1:ZpnhV/YsD2/4cESfV5+Hoeu/iUR3ruzNvZ+yQfO03a0= github.com/godbus/dbus v0.0.0-20190726142602-4481cbc300e2/go.mod h1:bBOAhwG1umN6/6ZUMtDFBMQR8jRg9O75tm9K00oMsK4= github.com/gogo/protobuf v1.1.1/go.mod h1:r8qH/GZQm5c6nD/R0oafs1akxWv10x8SbQlK7atdtwQ= github.com/gogo/protobuf v1.2.1/go.mod h1:hp+jE20tsWTFYpLwKvXlhS1hjn+gTNwPg2I6zVXpSg4= @@ -76,6 +77,7 @@ github.com/gorilla/websocket v1.4.0/go.mod h1:E7qHFY5m1UJ88s3WnNqhKjPHQ0heANvMoA github.com/grpc-ecosystem/go-grpc-middleware v1.0.0/go.mod h1:FiyG127CGDf3tlThmgyCl78X/SZQqEOJBCDaAfeWzPs= github.com/grpc-ecosystem/go-grpc-prometheus v1.2.0/go.mod h1:8NvIoxWQoOIhqOTXgfV/d3M/q6VIi02HzZEHgUlZvzk= github.com/grpc-ecosystem/grpc-gateway v1.9.0/go.mod h1:vNeuVxBJEsws4ogUvrchl83t/GYV9WGTSLVdBhOQFDY= +github.com/gsterjov/go-libsecret v0.0.0-20161001094733-a6f4afe4910c h1:6rhixN/i8ZofjG1Y75iExal34USq5p+wiN1tpie8IrU= github.com/gsterjov/go-libsecret v0.0.0-20161001094733-a6f4afe4910c/go.mod h1:NMPJylDgVpX0MLRlPy15sqSwOFv/U1GZ2m21JhFfek0= github.com/hashicorp/go-cleanhttp v0.5.1 h1:dH3aiDG9Jvb5r5+bYHsikaOUIpcM0xvgMXVoDkXMzJM= github.com/hashicorp/go-cleanhttp v0.5.1/go.mod h1:JpRdi6/HCYpAwUzNwuwqhbovhLtngrth3wmdIIUrZ80= diff --git a/main.go b/main.go index ac63221..62a827a 100644 --- a/main.go +++ b/main.go @@ -1,16 +1,9 @@ package main -import ( - "github.com/MichaelMure/git-bug-migration/commands" -) - -type Migration interface { - Name() string - Description() string - NeedToRun() bool - Run() error -} +import "os" func main() { - commands.Execute() + if err := NewRootCommand().Execute(); err != nil { + os.Exit(1) + } } diff --git a/migration.go b/migration.go new file mode 100644 index 0000000..ab67575 --- /dev/null +++ b/migration.go @@ -0,0 +1,6 @@ +package main + +type Migration interface { + Description() string + Run(repoPath string) error +} diff --git a/migration01/README.md b/migration1/README.md similarity index 100% rename from migration01/README.md rename to migration1/README.md diff --git a/migration01/after/bug/bug.go b/migration1/after/bug/bug.go similarity index 97% rename from migration01/after/bug/bug.go rename to migration1/after/bug/bug.go index 80c7a6c..7172079 100644 --- a/migration01/after/bug/bug.go +++ b/migration1/after/bug/bug.go @@ -8,11 +8,11 @@ import ( "github.com/pkg/errors" - "github.com/MichaelMure/git-bug-migration/migration01/after/entity" - "github.com/MichaelMure/git-bug-migration/migration01/after/identity" - "github.com/MichaelMure/git-bug-migration/migration01/after/repository" - "github.com/MichaelMure/git-bug-migration/migration01/after/util/git" - "github.com/MichaelMure/git-bug-migration/migration01/after/util/lamport" + "github.com/MichaelMure/git-bug-migration/migration1/after/entity" + "github.com/MichaelMure/git-bug-migration/migration1/after/identity" + "github.com/MichaelMure/git-bug-migration/migration1/after/repository" + "github.com/MichaelMure/git-bug-migration/migration1/after/util/git" + "github.com/MichaelMure/git-bug-migration/migration1/after/util/lamport" ) const bugsRefPattern = "refs/bugs/" diff --git a/migration01/after/bug/bug_actions.go b/migration1/after/bug/bug_actions.go similarity index 96% rename from migration01/after/bug/bug_actions.go rename to migration1/after/bug/bug_actions.go index e406898..2cbacd5 100644 --- a/migration01/after/bug/bug_actions.go +++ b/migration1/after/bug/bug_actions.go @@ -6,8 +6,8 @@ import ( "github.com/pkg/errors" - "github.com/MichaelMure/git-bug-migration/migration01/after/entity" - "github.com/MichaelMure/git-bug-migration/migration01/after/repository" + "github.com/MichaelMure/git-bug-migration/migration1/after/entity" + "github.com/MichaelMure/git-bug-migration/migration1/after/repository" ) // Fetch retrieve updates from a remote diff --git a/migration01/after/bug/clocks.go b/migration1/after/bug/clocks.go similarity index 90% rename from migration01/after/bug/clocks.go rename to migration1/after/bug/clocks.go index 0146676..a419296 100644 --- a/migration01/after/bug/clocks.go +++ b/migration1/after/bug/clocks.go @@ -1,7 +1,7 @@ package bug import ( - "github.com/MichaelMure/git-bug-migration/migration01/after/repository" + "github.com/MichaelMure/git-bug-migration/migration1/after/repository" ) // ClockLoader is the repository.ClockLoader for the Bug entity diff --git a/migration01/after/bug/comment.go b/migration1/after/bug/comment.go similarity index 76% rename from migration01/after/bug/comment.go rename to migration1/after/bug/comment.go index 45c4d64..65bc457 100644 --- a/migration01/after/bug/comment.go +++ b/migration1/after/bug/comment.go @@ -3,10 +3,10 @@ package bug import ( "github.com/dustin/go-humanize" - "github.com/MichaelMure/git-bug-migration/migration01/after/entity" - "github.com/MichaelMure/git-bug-migration/migration01/after/identity" - "github.com/MichaelMure/git-bug-migration/migration01/after/util/git" - "github.com/MichaelMure/git-bug-migration/migration01/after/util/timestamp" + "github.com/MichaelMure/git-bug-migration/migration1/after/entity" + "github.com/MichaelMure/git-bug-migration/migration1/after/identity" + "github.com/MichaelMure/git-bug-migration/migration1/after/util/git" + "github.com/MichaelMure/git-bug-migration/migration1/after/util/timestamp" ) // Comment represent a comment in a Bug diff --git a/migration01/after/bug/identity.go b/migration1/after/bug/identity.go similarity index 88% rename from migration01/after/bug/identity.go rename to migration1/after/bug/identity.go index 35f6430..44305b3 100644 --- a/migration01/after/bug/identity.go +++ b/migration1/after/bug/identity.go @@ -1,7 +1,7 @@ package bug import ( - "github.com/MichaelMure/git-bug-migration/migration01/after/identity" + "github.com/MichaelMure/git-bug-migration/migration1/after/identity" ) // EnsureIdentities walk the graph of operations and make sure that all Identity diff --git a/migration01/after/bug/interface.go b/migration1/after/bug/interface.go similarity index 86% rename from migration01/after/bug/interface.go rename to migration1/after/bug/interface.go index cf63c7c..e8f1e3d 100644 --- a/migration01/after/bug/interface.go +++ b/migration1/after/bug/interface.go @@ -1,9 +1,9 @@ package bug import ( - "github.com/MichaelMure/git-bug-migration/migration01/after/entity" - "github.com/MichaelMure/git-bug-migration/migration01/after/repository" - "github.com/MichaelMure/git-bug-migration/migration01/after/util/lamport" + "github.com/MichaelMure/git-bug-migration/migration1/after/entity" + "github.com/MichaelMure/git-bug-migration/migration1/after/repository" + "github.com/MichaelMure/git-bug-migration/migration1/after/util/lamport" ) type Interface interface { diff --git a/migration01/after/bug/label.go b/migration1/after/bug/label.go similarity index 96% rename from migration01/after/bug/label.go rename to migration1/after/bug/label.go index 0045160..650ee11 100644 --- a/migration01/after/bug/label.go +++ b/migration1/after/bug/label.go @@ -8,7 +8,7 @@ import ( fcolor "github.com/fatih/color" - "github.com/MichaelMure/git-bug-migration/migration01/after/util/text" + "github.com/MichaelMure/git-bug-migration/migration1/after/util/text" ) type Label string diff --git a/migration01/after/bug/op_add_comment.go b/migration1/after/bug/op_add_comment.go similarity index 89% rename from migration01/after/bug/op_add_comment.go rename to migration1/after/bug/op_add_comment.go index 3405b5d..765ffbf 100644 --- a/migration01/after/bug/op_add_comment.go +++ b/migration1/after/bug/op_add_comment.go @@ -4,11 +4,11 @@ import ( "encoding/json" "fmt" - "github.com/MichaelMure/git-bug-migration/migration01/after/entity" - "github.com/MichaelMure/git-bug-migration/migration01/after/identity" - "github.com/MichaelMure/git-bug-migration/migration01/after/util/git" - "github.com/MichaelMure/git-bug-migration/migration01/after/util/text" - "github.com/MichaelMure/git-bug-migration/migration01/after/util/timestamp" + "github.com/MichaelMure/git-bug-migration/migration1/after/entity" + "github.com/MichaelMure/git-bug-migration/migration1/after/identity" + "github.com/MichaelMure/git-bug-migration/migration1/after/util/git" + "github.com/MichaelMure/git-bug-migration/migration1/after/util/text" + "github.com/MichaelMure/git-bug-migration/migration1/after/util/timestamp" ) var _ Operation = &AddCommentOperation{} diff --git a/migration01/after/bug/op_create.go b/migration1/after/bug/op_create.go similarity index 90% rename from migration01/after/bug/op_create.go rename to migration1/after/bug/op_create.go index 2b14e03..b7d978b 100644 --- a/migration01/after/bug/op_create.go +++ b/migration1/after/bug/op_create.go @@ -5,11 +5,11 @@ import ( "fmt" "strings" - "github.com/MichaelMure/git-bug-migration/migration01/after/entity" - "github.com/MichaelMure/git-bug-migration/migration01/after/identity" - "github.com/MichaelMure/git-bug-migration/migration01/after/util/git" - "github.com/MichaelMure/git-bug-migration/migration01/after/util/text" - "github.com/MichaelMure/git-bug-migration/migration01/after/util/timestamp" + "github.com/MichaelMure/git-bug-migration/migration1/after/entity" + "github.com/MichaelMure/git-bug-migration/migration1/after/identity" + "github.com/MichaelMure/git-bug-migration/migration1/after/util/git" + "github.com/MichaelMure/git-bug-migration/migration1/after/util/text" + "github.com/MichaelMure/git-bug-migration/migration1/after/util/timestamp" ) var _ Operation = &CreateOperation{} diff --git a/migration01/after/bug/op_edit_comment.go b/migration1/after/bug/op_edit_comment.go similarity index 92% rename from migration01/after/bug/op_edit_comment.go rename to migration1/after/bug/op_edit_comment.go index 740bdfd..8b2a6a6 100644 --- a/migration01/after/bug/op_edit_comment.go +++ b/migration1/after/bug/op_edit_comment.go @@ -6,12 +6,12 @@ import ( "github.com/pkg/errors" - "github.com/MichaelMure/git-bug-migration/migration01/after/entity" - "github.com/MichaelMure/git-bug-migration/migration01/after/identity" - "github.com/MichaelMure/git-bug-migration/migration01/after/util/timestamp" + "github.com/MichaelMure/git-bug-migration/migration1/after/entity" + "github.com/MichaelMure/git-bug-migration/migration1/after/identity" + "github.com/MichaelMure/git-bug-migration/migration1/after/util/timestamp" - "github.com/MichaelMure/git-bug-migration/migration01/after/util/git" - "github.com/MichaelMure/git-bug-migration/migration01/after/util/text" + "github.com/MichaelMure/git-bug-migration/migration1/after/util/git" + "github.com/MichaelMure/git-bug-migration/migration1/after/util/text" ) var _ Operation = &EditCommentOperation{} diff --git a/migration01/after/bug/op_label_change.go b/migration1/after/bug/op_label_change.go similarity index 96% rename from migration01/after/bug/op_label_change.go rename to migration1/after/bug/op_label_change.go index 8fb8faf..4d51857 100644 --- a/migration01/after/bug/op_label_change.go +++ b/migration1/after/bug/op_label_change.go @@ -7,9 +7,9 @@ import ( "github.com/pkg/errors" - "github.com/MichaelMure/git-bug-migration/migration01/after/entity" - "github.com/MichaelMure/git-bug-migration/migration01/after/identity" - "github.com/MichaelMure/git-bug-migration/migration01/after/util/timestamp" + "github.com/MichaelMure/git-bug-migration/migration1/after/entity" + "github.com/MichaelMure/git-bug-migration/migration1/after/identity" + "github.com/MichaelMure/git-bug-migration/migration1/after/util/timestamp" ) var _ Operation = &LabelChangeOperation{} diff --git a/migration01/after/bug/op_noop.go b/migration1/after/bug/op_noop.go similarity index 92% rename from migration01/after/bug/op_noop.go rename to migration1/after/bug/op_noop.go index 89acb46..95e7f7c 100644 --- a/migration01/after/bug/op_noop.go +++ b/migration1/after/bug/op_noop.go @@ -3,8 +3,8 @@ package bug import ( "encoding/json" - "github.com/MichaelMure/git-bug-migration/migration01/after/entity" - "github.com/MichaelMure/git-bug-migration/migration01/after/identity" + "github.com/MichaelMure/git-bug-migration/migration1/after/entity" + "github.com/MichaelMure/git-bug-migration/migration1/after/identity" ) var _ Operation = &NoOpOperation{} diff --git a/migration01/after/bug/op_set_metadata.go b/migration1/after/bug/op_set_metadata.go similarity index 95% rename from migration01/after/bug/op_set_metadata.go rename to migration1/after/bug/op_set_metadata.go index 15505e0..063f8bc 100644 --- a/migration01/after/bug/op_set_metadata.go +++ b/migration1/after/bug/op_set_metadata.go @@ -5,8 +5,8 @@ import ( "github.com/pkg/errors" - "github.com/MichaelMure/git-bug-migration/migration01/after/entity" - "github.com/MichaelMure/git-bug-migration/migration01/after/identity" + "github.com/MichaelMure/git-bug-migration/migration1/after/entity" + "github.com/MichaelMure/git-bug-migration/migration1/after/identity" ) var _ Operation = &SetMetadataOperation{} diff --git a/migration01/after/bug/op_set_status.go b/migration1/after/bug/op_set_status.go similarity index 92% rename from migration01/after/bug/op_set_status.go rename to migration1/after/bug/op_set_status.go index b21e3c6..bcbf9de 100644 --- a/migration01/after/bug/op_set_status.go +++ b/migration1/after/bug/op_set_status.go @@ -5,9 +5,9 @@ import ( "github.com/pkg/errors" - "github.com/MichaelMure/git-bug-migration/migration01/after/entity" - "github.com/MichaelMure/git-bug-migration/migration01/after/identity" - "github.com/MichaelMure/git-bug-migration/migration01/after/util/timestamp" + "github.com/MichaelMure/git-bug-migration/migration1/after/entity" + "github.com/MichaelMure/git-bug-migration/migration1/after/identity" + "github.com/MichaelMure/git-bug-migration/migration1/after/util/timestamp" ) var _ Operation = &SetStatusOperation{} diff --git a/migration01/after/bug/op_set_title.go b/migration1/after/bug/op_set_title.go similarity index 91% rename from migration01/after/bug/op_set_title.go rename to migration1/after/bug/op_set_title.go index d8c0581..24ab84e 100644 --- a/migration01/after/bug/op_set_title.go +++ b/migration1/after/bug/op_set_title.go @@ -5,11 +5,11 @@ import ( "fmt" "strings" - "github.com/MichaelMure/git-bug-migration/migration01/after/entity" - "github.com/MichaelMure/git-bug-migration/migration01/after/identity" - "github.com/MichaelMure/git-bug-migration/migration01/after/util/timestamp" + "github.com/MichaelMure/git-bug-migration/migration1/after/entity" + "github.com/MichaelMure/git-bug-migration/migration1/after/identity" + "github.com/MichaelMure/git-bug-migration/migration1/after/util/timestamp" - "github.com/MichaelMure/git-bug-migration/migration01/after/util/text" + "github.com/MichaelMure/git-bug-migration/migration1/after/util/text" ) var _ Operation = &SetTitleOperation{} diff --git a/migration01/after/bug/operation.go b/migration1/after/bug/operation.go similarity index 96% rename from migration01/after/bug/operation.go rename to migration1/after/bug/operation.go index 62cceac..9497568 100644 --- a/migration01/after/bug/operation.go +++ b/migration1/after/bug/operation.go @@ -8,9 +8,9 @@ import ( "github.com/pkg/errors" - "github.com/MichaelMure/git-bug-migration/migration01/after/entity" - "github.com/MichaelMure/git-bug-migration/migration01/after/identity" - "github.com/MichaelMure/git-bug-migration/migration01/after/util/git" + "github.com/MichaelMure/git-bug-migration/migration1/after/entity" + "github.com/MichaelMure/git-bug-migration/migration1/after/identity" + "github.com/MichaelMure/git-bug-migration/migration1/after/util/git" ) // OperationType is an operation type identifier diff --git a/migration01/after/bug/operation_iterator.go b/migration1/after/bug/operation_iterator.go similarity index 100% rename from migration01/after/bug/operation_iterator.go rename to migration1/after/bug/operation_iterator.go diff --git a/migration01/after/bug/operation_pack.go b/migration1/after/bug/operation_pack.go similarity index 96% rename from migration01/after/bug/operation_pack.go rename to migration1/after/bug/operation_pack.go index 3f80126..80dfd4b 100644 --- a/migration01/after/bug/operation_pack.go +++ b/migration1/after/bug/operation_pack.go @@ -6,8 +6,8 @@ import ( "github.com/pkg/errors" - "github.com/MichaelMure/git-bug-migration/migration01/after/repository" - "github.com/MichaelMure/git-bug-migration/migration01/after/util/git" + "github.com/MichaelMure/git-bug-migration/migration1/after/repository" + "github.com/MichaelMure/git-bug-migration/migration1/after/util/git" ) const formatVersion = 1 diff --git a/migration01/after/bug/snapshot.go b/migration1/after/bug/snapshot.go similarity index 95% rename from migration01/after/bug/snapshot.go rename to migration1/after/bug/snapshot.go index 2097033..b20a916 100644 --- a/migration01/after/bug/snapshot.go +++ b/migration1/after/bug/snapshot.go @@ -4,8 +4,8 @@ import ( "fmt" "time" - "github.com/MichaelMure/git-bug-migration/migration01/after/entity" - "github.com/MichaelMure/git-bug-migration/migration01/after/identity" + "github.com/MichaelMure/git-bug-migration/migration1/after/entity" + "github.com/MichaelMure/git-bug-migration/migration1/after/identity" ) // Snapshot is a compiled form of the Bug data structure used for storage and merge diff --git a/migration01/after/bug/sorting.go b/migration1/after/bug/sorting.go similarity index 100% rename from migration01/after/bug/sorting.go rename to migration1/after/bug/sorting.go diff --git a/migration01/after/bug/status.go b/migration1/after/bug/status.go similarity index 100% rename from migration01/after/bug/status.go rename to migration1/after/bug/status.go diff --git a/migration01/after/bug/timeline.go b/migration1/after/bug/timeline.go similarity index 86% rename from migration01/after/bug/timeline.go rename to migration1/after/bug/timeline.go index 3632b78..86ca2dd 100644 --- a/migration01/after/bug/timeline.go +++ b/migration1/after/bug/timeline.go @@ -3,10 +3,10 @@ package bug import ( "strings" - "github.com/MichaelMure/git-bug-migration/migration01/after/entity" - "github.com/MichaelMure/git-bug-migration/migration01/after/identity" - "github.com/MichaelMure/git-bug-migration/migration01/after/util/git" - "github.com/MichaelMure/git-bug-migration/migration01/after/util/timestamp" + "github.com/MichaelMure/git-bug-migration/migration1/after/entity" + "github.com/MichaelMure/git-bug-migration/migration1/after/identity" + "github.com/MichaelMure/git-bug-migration/migration1/after/util/git" + "github.com/MichaelMure/git-bug-migration/migration1/after/util/timestamp" ) type TimelineItem interface { diff --git a/migration01/after/bug/with_snapshot.go b/migration1/after/bug/with_snapshot.go similarity index 93% rename from migration01/after/bug/with_snapshot.go rename to migration1/after/bug/with_snapshot.go index 958b80d..e1a5ea8 100644 --- a/migration01/after/bug/with_snapshot.go +++ b/migration1/after/bug/with_snapshot.go @@ -1,6 +1,6 @@ package bug -import "github.com/MichaelMure/git-bug-migration/migration01/after/repository" +import "github.com/MichaelMure/git-bug-migration/migration1/after/repository" var _ Interface = &WithSnapshot{} diff --git a/migration01/after/entity/doc.go b/migration1/after/entity/doc.go similarity index 100% rename from migration01/after/entity/doc.go rename to migration1/after/entity/doc.go diff --git a/migration01/after/entity/err.go b/migration1/after/entity/err.go similarity index 100% rename from migration01/after/entity/err.go rename to migration1/after/entity/err.go diff --git a/migration01/after/entity/id.go b/migration1/after/entity/id.go similarity index 100% rename from migration01/after/entity/id.go rename to migration1/after/entity/id.go diff --git a/migration01/after/entity/interface.go b/migration1/after/entity/interface.go similarity index 100% rename from migration01/after/entity/interface.go rename to migration1/after/entity/interface.go diff --git a/migration01/after/entity/merge.go b/migration1/after/entity/merge.go similarity index 100% rename from migration01/after/entity/merge.go rename to migration1/after/entity/merge.go diff --git a/migration01/after/identity/bare.go b/migration1/after/identity/bare.go similarity index 93% rename from migration01/after/identity/bare.go rename to migration1/after/identity/bare.go index 03075e7..42ea4eb 100644 --- a/migration01/after/identity/bare.go +++ b/migration1/after/identity/bare.go @@ -6,11 +6,11 @@ import ( "fmt" "strings" - "github.com/MichaelMure/git-bug-migration/migration01/after/entity" - "github.com/MichaelMure/git-bug-migration/migration01/after/repository" - "github.com/MichaelMure/git-bug-migration/migration01/after/util/lamport" - "github.com/MichaelMure/git-bug-migration/migration01/after/util/text" - "github.com/MichaelMure/git-bug-migration/migration01/after/util/timestamp" + "github.com/MichaelMure/git-bug-migration/migration1/after/entity" + "github.com/MichaelMure/git-bug-migration/migration1/after/repository" + "github.com/MichaelMure/git-bug-migration/migration1/after/util/lamport" + "github.com/MichaelMure/git-bug-migration/migration1/after/util/text" + "github.com/MichaelMure/git-bug-migration/migration1/after/util/timestamp" ) var _ Interface = &Bare{} diff --git a/migration01/after/identity/common.go b/migration1/after/identity/common.go similarity index 94% rename from migration01/after/identity/common.go rename to migration1/after/identity/common.go index 1a0722b..56e5fa2 100644 --- a/migration01/after/identity/common.go +++ b/migration1/after/identity/common.go @@ -5,7 +5,7 @@ import ( "errors" "fmt" - "github.com/MichaelMure/git-bug-migration/migration01/after/entity" + "github.com/MichaelMure/git-bug-migration/migration1/after/entity" ) var ErrIdentityNotExist = errors.New("identity doesn't exist") diff --git a/migration01/after/identity/identity.go b/migration1/after/identity/identity.go similarity index 97% rename from migration01/after/identity/identity.go rename to migration1/after/identity/identity.go index eb44a28..4495f96 100644 --- a/migration01/after/identity/identity.go +++ b/migration1/after/identity/identity.go @@ -11,11 +11,11 @@ import ( "github.com/pkg/errors" - "github.com/MichaelMure/git-bug-migration/migration01/after/entity" - "github.com/MichaelMure/git-bug-migration/migration01/after/repository" - "github.com/MichaelMure/git-bug-migration/migration01/after/util/git" - "github.com/MichaelMure/git-bug-migration/migration01/after/util/lamport" - "github.com/MichaelMure/git-bug-migration/migration01/after/util/timestamp" + "github.com/MichaelMure/git-bug-migration/migration1/after/entity" + "github.com/MichaelMure/git-bug-migration/migration1/after/repository" + "github.com/MichaelMure/git-bug-migration/migration1/after/util/git" + "github.com/MichaelMure/git-bug-migration/migration1/after/util/lamport" + "github.com/MichaelMure/git-bug-migration/migration1/after/util/timestamp" ) const identityRefPattern = "refs/identities/" diff --git a/migration01/after/identity/identity_actions.go b/migration1/after/identity/identity_actions.go similarity index 95% rename from migration01/after/identity/identity_actions.go rename to migration1/after/identity/identity_actions.go index 2f6a19a..fba918a 100644 --- a/migration01/after/identity/identity_actions.go +++ b/migration1/after/identity/identity_actions.go @@ -6,8 +6,8 @@ import ( "github.com/pkg/errors" - "github.com/MichaelMure/git-bug-migration/migration01/after/entity" - "github.com/MichaelMure/git-bug-migration/migration01/after/repository" + "github.com/MichaelMure/git-bug-migration/migration1/after/entity" + "github.com/MichaelMure/git-bug-migration/migration1/after/repository" ) // Fetch retrieve updates from a remote diff --git a/migration01/after/identity/identity_stub.go b/migration1/after/identity/identity_stub.go similarity index 89% rename from migration01/after/identity/identity_stub.go rename to migration1/after/identity/identity_stub.go index d3ed9bd..9067b08 100644 --- a/migration01/after/identity/identity_stub.go +++ b/migration1/after/identity/identity_stub.go @@ -3,10 +3,10 @@ package identity import ( "encoding/json" - "github.com/MichaelMure/git-bug-migration/migration01/after/entity" - "github.com/MichaelMure/git-bug-migration/migration01/after/repository" - "github.com/MichaelMure/git-bug-migration/migration01/after/util/lamport" - "github.com/MichaelMure/git-bug-migration/migration01/after/util/timestamp" + "github.com/MichaelMure/git-bug-migration/migration1/after/entity" + "github.com/MichaelMure/git-bug-migration/migration1/after/repository" + "github.com/MichaelMure/git-bug-migration/migration1/after/util/lamport" + "github.com/MichaelMure/git-bug-migration/migration1/after/util/timestamp" ) var _ Interface = &IdentityStub{} diff --git a/migration01/after/identity/interface.go b/migration1/after/identity/interface.go similarity index 86% rename from migration01/after/identity/interface.go rename to migration1/after/identity/interface.go index aa783ad..19808d9 100644 --- a/migration01/after/identity/interface.go +++ b/migration1/after/identity/interface.go @@ -1,10 +1,10 @@ package identity import ( - "github.com/MichaelMure/git-bug-migration/migration01/after/entity" - "github.com/MichaelMure/git-bug-migration/migration01/after/repository" - "github.com/MichaelMure/git-bug-migration/migration01/after/util/lamport" - "github.com/MichaelMure/git-bug-migration/migration01/after/util/timestamp" + "github.com/MichaelMure/git-bug-migration/migration1/after/entity" + "github.com/MichaelMure/git-bug-migration/migration1/after/repository" + "github.com/MichaelMure/git-bug-migration/migration1/after/util/lamport" + "github.com/MichaelMure/git-bug-migration/migration1/after/util/timestamp" ) type Interface interface { diff --git a/migration01/after/identity/key.go b/migration1/after/identity/key.go similarity index 100% rename from migration01/after/identity/key.go rename to migration1/after/identity/key.go diff --git a/migration01/after/identity/resolver.go b/migration1/after/identity/resolver.go similarity index 80% rename from migration01/after/identity/resolver.go rename to migration1/after/identity/resolver.go index 3e0cd96..947a735 100644 --- a/migration01/after/identity/resolver.go +++ b/migration1/after/identity/resolver.go @@ -1,8 +1,8 @@ package identity import ( - "github.com/MichaelMure/git-bug-migration/migration01/after/entity" - "github.com/MichaelMure/git-bug-migration/migration01/after/repository" + "github.com/MichaelMure/git-bug-migration/migration1/after/entity" + "github.com/MichaelMure/git-bug-migration/migration1/after/repository" ) // Resolver define the interface of an Identity resolver, able to load diff --git a/migration01/after/identity/version.go b/migration1/after/identity/version.go similarity index 95% rename from migration01/after/identity/version.go rename to migration1/after/identity/version.go index 5fa0557..5c659a7 100644 --- a/migration01/after/identity/version.go +++ b/migration1/after/identity/version.go @@ -8,10 +8,10 @@ import ( "github.com/pkg/errors" - "github.com/MichaelMure/git-bug-migration/migration01/after/repository" - "github.com/MichaelMure/git-bug-migration/migration01/after/util/git" - "github.com/MichaelMure/git-bug-migration/migration01/after/util/lamport" - "github.com/MichaelMure/git-bug-migration/migration01/after/util/text" + "github.com/MichaelMure/git-bug-migration/migration1/after/repository" + "github.com/MichaelMure/git-bug-migration/migration1/after/util/git" + "github.com/MichaelMure/git-bug-migration/migration1/after/util/lamport" + "github.com/MichaelMure/git-bug-migration/migration1/after/util/text" ) const formatVersion = 1 diff --git a/migration01/after/repository/config.go b/migration1/after/repository/config.go similarity index 100% rename from migration01/after/repository/config.go rename to migration1/after/repository/config.go diff --git a/migration01/after/repository/config_mem.go b/migration1/after/repository/config_mem.go similarity index 100% rename from migration01/after/repository/config_mem.go rename to migration1/after/repository/config_mem.go diff --git a/migration01/after/repository/git.go b/migration1/after/repository/git.go similarity index 98% rename from migration01/after/repository/git.go rename to migration1/after/repository/git.go index 8840da9..8b0b729 100644 --- a/migration01/after/repository/git.go +++ b/migration1/after/repository/git.go @@ -10,8 +10,8 @@ import ( "strings" "sync" - "github.com/MichaelMure/git-bug-migration/migration01/after/util/git" - "github.com/MichaelMure/git-bug-migration/migration01/after/util/lamport" + "github.com/MichaelMure/git-bug-migration/migration1/after/util/git" + "github.com/MichaelMure/git-bug-migration/migration1/after/util/lamport" ) const ( diff --git a/migration01/after/repository/git_config.go b/migration1/after/repository/git_config.go similarity index 100% rename from migration01/after/repository/git_config.go rename to migration1/after/repository/git_config.go diff --git a/migration01/after/repository/repo.go b/migration1/after/repository/repo.go similarity index 97% rename from migration01/after/repository/repo.go rename to migration1/after/repository/repo.go index 44fb1cb..15bfe8b 100644 --- a/migration01/after/repository/repo.go +++ b/migration1/after/repository/repo.go @@ -6,8 +6,8 @@ import ( "errors" "strings" - "github.com/MichaelMure/git-bug-migration/migration01/after/util/git" - "github.com/MichaelMure/git-bug-migration/migration01/after/util/lamport" + "github.com/MichaelMure/git-bug-migration/migration1/after/util/git" + "github.com/MichaelMure/git-bug-migration/migration1/after/util/lamport" ) var ( diff --git a/migration12/before/repository/tree_entry.go b/migration1/after/repository/tree_entry.go similarity index 94% rename from migration12/before/repository/tree_entry.go rename to migration1/after/repository/tree_entry.go index 5ea5f6b..fac369d 100644 --- a/migration12/before/repository/tree_entry.go +++ b/migration1/after/repository/tree_entry.go @@ -4,7 +4,7 @@ import ( "fmt" "strings" - "github.com/MichaelMure/git-bug-migration/migration12/before/util/git" + "github.com/MichaelMure/git-bug-migration/migration1/after/util/git" ) type TreeEntry struct { diff --git a/migration01/after/util/colors/colors.go b/migration1/after/util/colors/colors.go similarity index 100% rename from migration01/after/util/colors/colors.go rename to migration1/after/util/colors/colors.go diff --git a/migration01/after/util/git/hash.go b/migration1/after/util/git/hash.go similarity index 100% rename from migration01/after/util/git/hash.go rename to migration1/after/util/git/hash.go diff --git a/migration01/after/util/interrupt/cleaner.go b/migration1/after/util/interrupt/cleaner.go similarity index 100% rename from migration01/after/util/interrupt/cleaner.go rename to migration1/after/util/interrupt/cleaner.go diff --git a/migration01/after/util/lamport/clock.go b/migration1/after/util/lamport/clock.go similarity index 100% rename from migration01/after/util/lamport/clock.go rename to migration1/after/util/lamport/clock.go diff --git a/migration01/after/util/lamport/clock_testing.go b/migration1/after/util/lamport/clock_testing.go similarity index 100% rename from migration01/after/util/lamport/clock_testing.go rename to migration1/after/util/lamport/clock_testing.go diff --git a/migration01/after/util/lamport/mem_clock.go b/migration1/after/util/lamport/mem_clock.go similarity index 100% rename from migration01/after/util/lamport/mem_clock.go rename to migration1/after/util/lamport/mem_clock.go diff --git a/migration01/after/util/lamport/persisted_clock.go b/migration1/after/util/lamport/persisted_clock.go similarity index 100% rename from migration01/after/util/lamport/persisted_clock.go rename to migration1/after/util/lamport/persisted_clock.go diff --git a/migration01/after/util/process/process.go b/migration1/after/util/process/process.go similarity index 100% rename from migration01/after/util/process/process.go rename to migration1/after/util/process/process.go diff --git a/migration01/after/util/text/transform.go b/migration1/after/util/text/transform.go similarity index 100% rename from migration01/after/util/text/transform.go rename to migration1/after/util/text/transform.go diff --git a/migration01/after/util/text/validate.go b/migration1/after/util/text/validate.go similarity index 100% rename from migration01/after/util/text/validate.go rename to migration1/after/util/text/validate.go diff --git a/migration01/after/util/timestamp/timestamp.go b/migration1/after/util/timestamp/timestamp.go similarity index 100% rename from migration01/after/util/timestamp/timestamp.go rename to migration1/after/util/timestamp/timestamp.go diff --git a/migration01/before/README.md b/migration1/before/README.md similarity index 100% rename from migration01/before/README.md rename to migration1/before/README.md diff --git a/migration01/before/bug/bug.go b/migration1/before/bug/bug.go similarity index 98% rename from migration01/before/bug/bug.go rename to migration1/before/bug/bug.go index 06f15e6..a9a0251 100644 --- a/migration01/before/bug/bug.go +++ b/migration1/before/bug/bug.go @@ -8,9 +8,9 @@ import ( "github.com/pkg/errors" - "github.com/MichaelMure/git-bug-migration/migration01/before/repository" - "github.com/MichaelMure/git-bug-migration/migration01/before/util/git" - "github.com/MichaelMure/git-bug-migration/migration01/before/util/lamport" + "github.com/MichaelMure/git-bug-migration/migration1/before/repository" + "github.com/MichaelMure/git-bug-migration/migration1/before/util/git" + "github.com/MichaelMure/git-bug-migration/migration1/before/util/lamport" ) const bugsRefPattern = "refs/bugs/" diff --git a/migration01/before/bug/bug_actions.go b/migration1/before/bug/bug_actions.go similarity index 98% rename from migration01/before/bug/bug_actions.go rename to migration1/before/bug/bug_actions.go index e2f0a89..2b7d5b2 100644 --- a/migration01/before/bug/bug_actions.go +++ b/migration1/before/bug/bug_actions.go @@ -6,7 +6,7 @@ import ( "github.com/pkg/errors" - "github.com/MichaelMure/git-bug-migration/migration01/before/repository" + "github.com/MichaelMure/git-bug-migration/migration1/before/repository" ) // Fetch retrieve update from a remote diff --git a/migration01/before/bug/clocks.go b/migration1/before/bug/clocks.go similarity index 85% rename from migration01/before/bug/clocks.go rename to migration1/before/bug/clocks.go index d171d4b..ce633a3 100644 --- a/migration01/before/bug/clocks.go +++ b/migration1/before/bug/clocks.go @@ -1,7 +1,7 @@ package bug import ( - "github.com/MichaelMure/git-bug-migration/migration01/before/repository" + "github.com/MichaelMure/git-bug-migration/migration1/before/repository" ) // Witnesser will read all the available Bug to recreate the different logical diff --git a/migration01/before/bug/comment.go b/migration1/before/bug/comment.go similarity index 89% rename from migration01/before/bug/comment.go rename to migration1/before/bug/comment.go index e1d3589..bea1777 100644 --- a/migration01/before/bug/comment.go +++ b/migration1/before/bug/comment.go @@ -3,7 +3,7 @@ package bug import ( "github.com/dustin/go-humanize" - "github.com/MichaelMure/git-bug-migration/migration01/before/util/git" + "github.com/MichaelMure/git-bug-migration/migration1/before/util/git" ) // Comment represent a comment in a Bug diff --git a/migration01/before/bug/interface.go b/migration1/before/bug/interface.go similarity index 90% rename from migration01/before/bug/interface.go rename to migration1/before/bug/interface.go index ea69a67..312b80a 100644 --- a/migration01/before/bug/interface.go +++ b/migration1/before/bug/interface.go @@ -1,8 +1,8 @@ package bug import ( - "github.com/MichaelMure/git-bug-migration/migration01/before/repository" - "github.com/MichaelMure/git-bug-migration/migration01/before/util/lamport" + "github.com/MichaelMure/git-bug-migration/migration1/before/repository" + "github.com/MichaelMure/git-bug-migration/migration1/before/util/lamport" ) type Interface interface { diff --git a/migration01/before/bug/label.go b/migration1/before/bug/label.go similarity index 91% rename from migration01/before/bug/label.go rename to migration1/before/bug/label.go index 3d41571..b51f08d 100644 --- a/migration01/before/bug/label.go +++ b/migration1/before/bug/label.go @@ -5,7 +5,7 @@ import ( "io" "strings" - "github.com/MichaelMure/git-bug-migration/migration01/before/util/text" + "github.com/MichaelMure/git-bug-migration/migration1/before/util/text" ) type Label string diff --git a/migration01/before/bug/op_add_comment.go b/migration1/before/bug/op_add_comment.go similarity index 94% rename from migration01/before/bug/op_add_comment.go rename to migration1/before/bug/op_add_comment.go index d448836..d4639e4 100644 --- a/migration01/before/bug/op_add_comment.go +++ b/migration1/before/bug/op_add_comment.go @@ -3,8 +3,8 @@ package bug import ( "fmt" - "github.com/MichaelMure/git-bug-migration/migration01/before/util/git" - "github.com/MichaelMure/git-bug-migration/migration01/before/util/text" + "github.com/MichaelMure/git-bug-migration/migration1/before/util/git" + "github.com/MichaelMure/git-bug-migration/migration1/before/util/text" ) var _ Operation = &AddCommentOperation{} diff --git a/migration01/before/bug/op_create.go b/migration1/before/bug/op_create.go similarity index 94% rename from migration01/before/bug/op_create.go rename to migration1/before/bug/op_create.go index 4790a09..f00e14b 100644 --- a/migration01/before/bug/op_create.go +++ b/migration1/before/bug/op_create.go @@ -4,8 +4,8 @@ import ( "fmt" "strings" - "github.com/MichaelMure/git-bug-migration/migration01/before/util/git" - "github.com/MichaelMure/git-bug-migration/migration01/before/util/text" + "github.com/MichaelMure/git-bug-migration/migration1/before/util/git" + "github.com/MichaelMure/git-bug-migration/migration1/before/util/text" ) var _ Operation = &CreateOperation{} diff --git a/migration01/before/bug/op_edit_comment.go b/migration1/before/bug/op_edit_comment.go similarity index 94% rename from migration01/before/bug/op_edit_comment.go rename to migration1/before/bug/op_edit_comment.go index 16d536b..174d364 100644 --- a/migration01/before/bug/op_edit_comment.go +++ b/migration1/before/bug/op_edit_comment.go @@ -3,8 +3,8 @@ package bug import ( "fmt" - "github.com/MichaelMure/git-bug-migration/migration01/before/util/git" - "github.com/MichaelMure/git-bug-migration/migration01/before/util/text" + "github.com/MichaelMure/git-bug-migration/migration1/before/util/git" + "github.com/MichaelMure/git-bug-migration/migration1/before/util/text" ) var _ Operation = &EditCommentOperation{} diff --git a/migration01/before/bug/op_label_change.go b/migration1/before/bug/op_label_change.go similarity index 98% rename from migration01/before/bug/op_label_change.go rename to migration1/before/bug/op_label_change.go index 90dfa12..09e079b 100644 --- a/migration01/before/bug/op_label_change.go +++ b/migration1/before/bug/op_label_change.go @@ -6,7 +6,7 @@ import ( "github.com/pkg/errors" - "github.com/MichaelMure/git-bug-migration/migration01/before/util/git" + "github.com/MichaelMure/git-bug-migration/migration1/before/util/git" ) var _ Operation = &LabelChangeOperation{} diff --git a/migration01/before/bug/op_noop.go b/migration1/before/bug/op_noop.go similarity index 93% rename from migration01/before/bug/op_noop.go rename to migration1/before/bug/op_noop.go index 59e433e..c51ac73 100644 --- a/migration01/before/bug/op_noop.go +++ b/migration1/before/bug/op_noop.go @@ -1,6 +1,6 @@ package bug -import "github.com/MichaelMure/git-bug-migration/migration01/before/util/git" +import "github.com/MichaelMure/git-bug-migration/migration1/before/util/git" var _ Operation = &NoOpOperation{} diff --git a/migration01/before/bug/op_set_metadata.go b/migration1/before/bug/op_set_metadata.go similarity index 95% rename from migration01/before/bug/op_set_metadata.go rename to migration1/before/bug/op_set_metadata.go index 4f425d0..41ca1a5 100644 --- a/migration01/before/bug/op_set_metadata.go +++ b/migration1/before/bug/op_set_metadata.go @@ -1,6 +1,6 @@ package bug -import "github.com/MichaelMure/git-bug-migration/migration01/before/util/git" +import "github.com/MichaelMure/git-bug-migration/migration1/before/util/git" var _ Operation = &SetMetadataOperation{} diff --git a/migration01/before/bug/op_set_status.go b/migration1/before/bug/op_set_status.go similarity index 96% rename from migration01/before/bug/op_set_status.go rename to migration1/before/bug/op_set_status.go index 59b0cfa..27ae366 100644 --- a/migration01/before/bug/op_set_status.go +++ b/migration1/before/bug/op_set_status.go @@ -3,7 +3,7 @@ package bug import ( "github.com/pkg/errors" - "github.com/MichaelMure/git-bug-migration/migration01/before/util/git" + "github.com/MichaelMure/git-bug-migration/migration1/before/util/git" ) var _ Operation = &SetStatusOperation{} diff --git a/migration01/before/bug/op_set_title.go b/migration1/before/bug/op_set_title.go similarity index 94% rename from migration01/before/bug/op_set_title.go rename to migration1/before/bug/op_set_title.go index 654a88a..003dde9 100644 --- a/migration01/before/bug/op_set_title.go +++ b/migration1/before/bug/op_set_title.go @@ -4,8 +4,8 @@ import ( "fmt" "strings" - "github.com/MichaelMure/git-bug-migration/migration01/before/util/git" - "github.com/MichaelMure/git-bug-migration/migration01/before/util/text" + "github.com/MichaelMure/git-bug-migration/migration1/before/util/git" + "github.com/MichaelMure/git-bug-migration/migration1/before/util/text" ) var _ Operation = &SetTitleOperation{} diff --git a/migration01/before/bug/operation.go b/migration1/before/bug/operation.go similarity index 98% rename from migration01/before/bug/operation.go rename to migration1/before/bug/operation.go index 30fc90d..ef3a998 100644 --- a/migration01/before/bug/operation.go +++ b/migration1/before/bug/operation.go @@ -8,7 +8,7 @@ import ( "github.com/pkg/errors" - "github.com/MichaelMure/git-bug-migration/migration01/before/util/git" + "github.com/MichaelMure/git-bug-migration/migration1/before/util/git" ) // OperationType is an operation type identifier diff --git a/migration01/before/bug/operation_iterator.go b/migration1/before/bug/operation_iterator.go similarity index 100% rename from migration01/before/bug/operation_iterator.go rename to migration1/before/bug/operation_iterator.go diff --git a/migration01/before/bug/operation_pack.go b/migration1/before/bug/operation_pack.go similarity index 95% rename from migration01/before/bug/operation_pack.go rename to migration1/before/bug/operation_pack.go index f56660c..e271451 100644 --- a/migration01/before/bug/operation_pack.go +++ b/migration1/before/bug/operation_pack.go @@ -6,8 +6,8 @@ import ( "github.com/pkg/errors" - "github.com/MichaelMure/git-bug-migration/migration01/before/repository" - "github.com/MichaelMure/git-bug-migration/migration01/before/util/git" + "github.com/MichaelMure/git-bug-migration/migration1/before/repository" + "github.com/MichaelMure/git-bug-migration/migration1/before/util/git" ) const formatVersion = 1 diff --git a/migration01/before/bug/person.go b/migration1/before/bug/person.go similarity index 93% rename from migration01/before/bug/person.go rename to migration1/before/bug/person.go index 35ca270..49d2a15 100644 --- a/migration01/before/bug/person.go +++ b/migration1/before/bug/person.go @@ -5,8 +5,8 @@ import ( "fmt" "strings" - "github.com/MichaelMure/git-bug-migration/migration01/before/repository" - "github.com/MichaelMure/git-bug-migration/migration01/before/util/text" + "github.com/MichaelMure/git-bug-migration/migration1/before/repository" + "github.com/MichaelMure/git-bug-migration/migration1/before/util/text" ) type Person struct { diff --git a/migration01/before/bug/snapshot.go b/migration1/before/bug/snapshot.go similarity index 95% rename from migration01/before/bug/snapshot.go rename to migration1/before/bug/snapshot.go index c966b50..88f22f6 100644 --- a/migration01/before/bug/snapshot.go +++ b/migration1/before/bug/snapshot.go @@ -4,7 +4,7 @@ import ( "fmt" "time" - "github.com/MichaelMure/git-bug-migration/migration01/before/util/git" + "github.com/MichaelMure/git-bug-migration/migration1/before/util/git" ) // Snapshot is a compiled form of the Bug data structure used for storage and merge diff --git a/migration01/before/bug/sorting.go b/migration1/before/bug/sorting.go similarity index 100% rename from migration01/before/bug/sorting.go rename to migration1/before/bug/sorting.go diff --git a/migration01/before/bug/status.go b/migration1/before/bug/status.go similarity index 100% rename from migration01/before/bug/status.go rename to migration1/before/bug/status.go diff --git a/migration01/before/bug/time.go b/migration1/before/bug/time.go similarity index 100% rename from migration01/before/bug/time.go rename to migration1/before/bug/time.go diff --git a/migration01/before/bug/timeline.go b/migration1/before/bug/timeline.go similarity index 95% rename from migration01/before/bug/timeline.go rename to migration1/before/bug/timeline.go index c1601ba..02b9866 100644 --- a/migration01/before/bug/timeline.go +++ b/migration1/before/bug/timeline.go @@ -1,7 +1,7 @@ package bug import ( - "github.com/MichaelMure/git-bug-migration/migration01/before/util/git" + "github.com/MichaelMure/git-bug-migration/migration1/before/util/git" ) type TimelineItem interface { diff --git a/migration01/before/bug/with_snapshot.go b/migration1/before/bug/with_snapshot.go similarity index 93% rename from migration01/before/bug/with_snapshot.go rename to migration1/before/bug/with_snapshot.go index 1bb6d7f..1ea30e9 100644 --- a/migration01/before/bug/with_snapshot.go +++ b/migration1/before/bug/with_snapshot.go @@ -1,6 +1,6 @@ package bug -import "github.com/MichaelMure/git-bug-migration/migration01/before/repository" +import "github.com/MichaelMure/git-bug-migration/migration1/before/repository" var _ Interface = &WithSnapshot{} diff --git a/migration01/before/repository/git.go b/migration1/before/repository/git.go similarity index 98% rename from migration01/before/repository/git.go rename to migration1/before/repository/git.go index 65b0ce4..cc7f4c0 100644 --- a/migration01/before/repository/git.go +++ b/migration1/before/repository/git.go @@ -10,8 +10,8 @@ import ( "path" "strings" - "github.com/MichaelMure/git-bug-migration/migration01/before/util/git" - "github.com/MichaelMure/git-bug-migration/migration01/before/util/lamport" + "github.com/MichaelMure/git-bug-migration/migration1/before/util/git" + "github.com/MichaelMure/git-bug-migration/migration1/before/util/lamport" ) const createClockFile = "/.git/git-bug/create-clock" diff --git a/migration01/before/repository/repo.go b/migration1/before/repository/repo.go similarity index 96% rename from migration01/before/repository/repo.go rename to migration1/before/repository/repo.go index 76205d6..57b293d 100644 --- a/migration01/before/repository/repo.go +++ b/migration1/before/repository/repo.go @@ -5,8 +5,8 @@ import ( "bytes" "strings" - "github.com/MichaelMure/git-bug-migration/migration01/before/util/git" - "github.com/MichaelMure/git-bug-migration/migration01/before/util/lamport" + "github.com/MichaelMure/git-bug-migration/migration1/before/util/git" + "github.com/MichaelMure/git-bug-migration/migration1/before/util/lamport" ) // RepoCommon represent the common function the we want all the repo to implement diff --git a/migration01/after/repository/tree_entry.go b/migration1/before/repository/tree_entry.go similarity index 95% rename from migration01/after/repository/tree_entry.go rename to migration1/before/repository/tree_entry.go index 09b5e9a..23575ca 100644 --- a/migration01/after/repository/tree_entry.go +++ b/migration1/before/repository/tree_entry.go @@ -4,7 +4,7 @@ import ( "fmt" "strings" - "github.com/MichaelMure/git-bug-migration/migration01/after/util/git" + "github.com/MichaelMure/git-bug-migration/migration1/before/util/git" ) type TreeEntry struct { diff --git a/migration01/before/util/colors/colors.go b/migration1/before/util/colors/colors.go similarity index 100% rename from migration01/before/util/colors/colors.go rename to migration1/before/util/colors/colors.go diff --git a/migration01/before/util/git/hash.go b/migration1/before/util/git/hash.go similarity index 100% rename from migration01/before/util/git/hash.go rename to migration1/before/util/git/hash.go diff --git a/migration01/before/util/lamport/lamport.go b/migration1/before/util/lamport/lamport.go similarity index 100% rename from migration01/before/util/lamport/lamport.go rename to migration1/before/util/lamport/lamport.go diff --git a/migration01/before/util/lamport/persisted_lamport.go b/migration1/before/util/lamport/persisted_lamport.go similarity index 100% rename from migration01/before/util/lamport/persisted_lamport.go rename to migration1/before/util/lamport/persisted_lamport.go diff --git a/migration01/before/util/process/process.go b/migration1/before/util/process/process.go similarity index 100% rename from migration01/before/util/process/process.go rename to migration1/before/util/process/process.go diff --git a/migration01/before/util/text/left_padded.go b/migration1/before/util/text/left_padded.go similarity index 100% rename from migration01/before/util/text/left_padded.go rename to migration1/before/util/text/left_padded.go diff --git a/migration01/before/util/text/text.go b/migration1/before/util/text/text.go similarity index 100% rename from migration01/before/util/text/text.go rename to migration1/before/util/text/text.go diff --git a/migration01/before/util/text/validate.go b/migration1/before/util/text/validate.go similarity index 100% rename from migration01/before/util/text/validate.go rename to migration1/before/util/text/validate.go diff --git a/migration01/migration01.go b/migration1/migration1.go similarity index 56% rename from migration01/migration01.go rename to migration1/migration1.go index bda06c1..8d035fe 100644 --- a/migration01/migration01.go +++ b/migration1/migration1.go @@ -1,37 +1,42 @@ -package migration01 +package migration1 import ( "fmt" - mg1b "github.com/MichaelMure/git-bug-migration/migration01/after/bug" - mg1i "github.com/MichaelMure/git-bug-migration/migration01/after/identity" - mg1r "github.com/MichaelMure/git-bug-migration/migration01/after/repository" + afterbug "github.com/MichaelMure/git-bug-migration/migration1/after/bug" + afteridentity "github.com/MichaelMure/git-bug-migration/migration1/after/identity" + afterrepo "github.com/MichaelMure/git-bug-migration/migration1/after/repository" ) -var identities1 []*mg1i.Identity +type Migration1 struct { + allIdentities []*afteridentity.Identity +} -func readIdentities(repo mg1r.ClockedRepo) { - for streamedIdentity := range mg1i.ReadAllLocalIdentities(repo) { - if streamedIdentity.Err != nil { - fmt.Printf("Got error when reading identity: %q", streamedIdentity.Err) - continue - } - identities1 = append(identities1, streamedIdentity.Identity) +func (m *Migration1) Description() string { + return "Convert legacy identities into a complete data structure in git" +} + +func (m *Migration1) Run(repoPath string) error { + repo, err := afterrepo.NewGitRepo(repoPath, nil) + if err != nil { + return err } + + return m.migrate(repo) } -func Migrate01(repo mg1r.ClockedRepo) error { - readIdentities(repo) +func (m *Migration1) migrate(repo afterrepo.ClockedRepo) error { + m.readIdentities(repo) // Iterating through all the bugs in the repo - for streamedBug := range mg1b.ReadAllLocalBugs(repo) { + for streamedBug := range afterbug.ReadAllLocalBugs(repo) { if streamedBug.Err != nil { fmt.Printf("Got error when reading bug: %q\n", streamedBug.Err) continue } oldBug := streamedBug.Bug - newBug, changed, err := migrateBug01(oldBug) + newBug, changed, err := m.migrateBug(oldBug) if err != nil { fmt.Printf("Got error when parsing bug: %q", err) } @@ -44,7 +49,7 @@ func Migrate01(repo mg1r.ClockedRepo) error { continue } - err = mg1b.RemoveLocalBug(repo, oldBug.Id()) + err = afterbug.RemoveLocalBug(repo, oldBug.Id()) if err != nil { fmt.Printf("Got error when attempting to remove bug: %q\n", err) continue @@ -55,25 +60,35 @@ func Migrate01(repo mg1r.ClockedRepo) error { return nil } -func migrateBug01(oldBug *mg1b.Bug) (*mg1b.Bug, bool, error) { +func (m *Migration1) readIdentities(repo afterrepo.ClockedRepo) { + for streamedIdentity := range afteridentity.ReadAllLocalIdentities(repo) { + if streamedIdentity.Err != nil { + fmt.Printf("Got error when reading identity: %q", streamedIdentity.Err) + continue + } + m.allIdentities = append(m.allIdentities, streamedIdentity.Identity) + } +} + +func (m *Migration1) migrateBug(oldBug *afterbug.Bug) (*afterbug.Bug, bool, error) { // Making a new bug - newBug := mg1b.NewBug() + newBug := afterbug.NewBug() bugChange := false // Iterating over each operation in the bug - it := mg1b.NewOperationIterator(oldBug) + it := afterbug.NewOperationIterator(oldBug) for it.Next() { operation := it.Value() oldAuthor := operation.GetAuthor() // Checking if the author is of the legacy (bare) type switch oldAuthor.(type) { - case *mg1i.Bare: + case *afteridentity.Bare: bugChange = true // Search existing identities for any traces of this old identity - var newAuthor *mg1i.Identity = nil - for _, identity := range identities1 { + var newAuthor *afteridentity.Identity = nil + for _, identity := range m.allIdentities { if oldAuthor.Name() == identity.Name() { newAuthor = identity } @@ -81,7 +96,7 @@ func migrateBug01(oldBug *mg1b.Bug) (*mg1b.Bug, bool, error) { // If no existing identity is found, create a new one if newAuthor == nil { - newAuthor = mg1i.NewIdentityFull( + newAuthor = afteridentity.NewIdentityFull( oldAuthor.Name(), oldAuthor.Email(), oldAuthor.Login(), @@ -95,7 +110,7 @@ func migrateBug01(oldBug *mg1b.Bug) (*mg1b.Bug, bool, error) { continue // If the author's identity is a new identity type, its fine. Just append it to the cache - case *mg1i.Identity: + case *afteridentity.Identity: newBug.Append(operation) continue diff --git a/migration01/migration01_test.go b/migration1/migration1_test.go similarity index 70% rename from migration01/migration01_test.go rename to migration1/migration1_test.go index 15a681d..78815a0 100644 --- a/migration01/migration01_test.go +++ b/migration1/migration1_test.go @@ -1,4 +1,4 @@ -package migration01 +package migration1 import ( "fmt" @@ -9,12 +9,11 @@ import ( "github.com/stretchr/testify/require" - mg1b "github.com/MichaelMure/git-bug-migration/migration01/after/bug" - mg1i "github.com/MichaelMure/git-bug-migration/migration01/after/identity" - mg0b "github.com/MichaelMure/git-bug-migration/migration01/before/bug" - mg0r "github.com/MichaelMure/git-bug-migration/migration01/before/repository" - - mg1r "github.com/MichaelMure/git-bug-migration/migration01/after/repository" + afterbug "github.com/MichaelMure/git-bug-migration/migration1/after/bug" + afteridentity "github.com/MichaelMure/git-bug-migration/migration1/after/identity" + afterrepo "github.com/MichaelMure/git-bug-migration/migration1/after/repository" + beforebug "github.com/MichaelMure/git-bug-migration/migration1/before/bug" + beforerepo "github.com/MichaelMure/git-bug-migration/migration1/before/repository" ) func createFolder() (string, error) { @@ -30,14 +29,14 @@ func TestMigrate01(t *testing.T) { cwd, err := os.Getwd() require.Nil(t, err, "got error when attempting to access the current working directory") - oldVinc := mg0b.Person{ + oldVinc := beforebug.Person{ Name: "Vincent Tiu", Email: "vincetiu8@gmail.com", Login: "invincibot", AvatarUrl: "https://avatars2.githubusercontent.com/u/46623413?s=460&u=56824597898bc22464222f5c33e8eae6d72def5b&v=4", } - newVinc := mg1i.NewIdentityFull( + newVinc := afteridentity.NewIdentityFull( oldVinc.Name, oldVinc.Email, oldVinc.Login, @@ -51,23 +50,24 @@ func TestMigrate01(t *testing.T) { err = os.Chdir(dir) require.Nil(t, err, "got error when opening temporary repository folder") - repo0, err := mg0r.InitGitRepo(dir) + repo0, err := beforerepo.InitGitRepo(dir) - bug0, _, err := mg0b.Create(oldVinc, unix, "bug1", "beep bop bug") + bug0, _, err := beforebug.Create(oldVinc, unix, "bug1", "beep bop bug") require.Nil(t, err, "got error when creating bug") err = bug0.Commit(repo0) require.Nil(t, err, "got error when committing bug") - repo1, err := mg1r.NewGitRepo(dir, []mg1r.ClockLoader{mg1b.ClockLoader}) + repo1, err := afterrepo.NewGitRepo(dir, nil) require.Nil(t, err, "got error when loading repository with version 1") - err = Migrate01(repo1) + m := Migration1{} + err = m.migrate(repo1) require.Nil(t, err, "got error when migrating repository with version 1") - bugs1 := mg1b.ReadAllLocalBugs(repo1) + bugs1 := afterbug.ReadAllLocalBugs(repo1) bug1 := (<-bugs1).Bug - operations := mg1b.NewOperationIterator(bug1) + operations := afterbug.NewOperationIterator(bug1) require.Equal(t, true, operations.Next(), "unable to get first operation") operation := operations.Value() @@ -79,7 +79,7 @@ func TestMigrate01(t *testing.T) { require.Equal(t, newVinc.Login(), author.Login(), "author login mismatch") require.Equal(t, newVinc.AvatarUrl(), author.AvatarUrl(), "author avatarUrl mismatch") - var bug mg1b.StreamedBug + var bug afterbug.StreamedBug require.Equal(t, bug, <-bugs1, "got additional bug when getting bugs in repository") err = os.Chdir(cwd) diff --git a/migration12/migration12.go b/migration12/migration12.go deleted file mode 100644 index 46052e1..0000000 --- a/migration12/migration12.go +++ /dev/null @@ -1,68 +0,0 @@ -package migration12 - -import ( - "errors" - - mg2b "github.com/MichaelMure/git-bug-migration/migration12/after/bridge/core/auth" - mg2e "github.com/MichaelMure/git-bug-migration/migration12/after/entity" - mg2r "github.com/MichaelMure/git-bug-migration/migration12/after/repository" - mg1b "github.com/MichaelMure/git-bug-migration/migration12/before/bridge/core/auth" - mg1r "github.com/MichaelMure/git-bug-migration/migration12/before/repository" -) - -func Migrate12(oldRepo mg1r.ClockedRepo, newRepo mg2r.ClockedRepo) error { - creds, err := mg1b.List(oldRepo) - if err != nil { - return err - } - - for _, cred := range creds { - var newCred mg2b.Credential - if mg2b.IdExist(newRepo, mg2e.Id(cred.ID().String())) { - continue - } - - switch cred := cred.(type) { - case *mg1b.Login: - newCred = &mg2b.Login{ - Login: cred.Login, - CredentialBase: mg2b.NewCredentialBase( - cred.Target(), - cred.CreateTime(), - cred.Salt(), - cred.Metadata(), - ), - } - case *mg1b.LoginPassword: - newCred = &mg2b.LoginPassword{ - Login: cred.Login, - Password: cred.Password, - CredentialBase: mg2b.NewCredentialBase( - cred.Target(), - cred.CreateTime(), - cred.Salt(), - cred.Metadata(), - ), - } - case *mg1b.Token: - newCred = &mg2b.Token{ - Value: cred.Value, - CredentialBase: mg2b.NewCredentialBase( - cred.Target(), - cred.CreateTime(), - cred.Salt(), - cred.Metadata(), - ), - } - default: - return errors.New("unknown credential encountered") - } - - err = mg2b.Store(newRepo, newCred) - if err != nil { - return err - } - } - - return nil -} diff --git a/migration12/migration12_test.go b/migration12/migration12_test.go deleted file mode 100644 index 6348021..0000000 --- a/migration12/migration12_test.go +++ /dev/null @@ -1,84 +0,0 @@ -package migration12 - -import ( - "bytes" - "encoding/json" - "io/ioutil" - "os" - "sort" - "testing" - - "github.com/stretchr/testify/require" - - mg1b "github.com/MichaelMure/git-bug-migration/migration12/before/bridge/core/auth" - mg1r "github.com/MichaelMure/git-bug-migration/migration12/before/repository" - - mg2b "github.com/MichaelMure/git-bug-migration/migration12/after/bridge/core/auth" - mg2r "github.com/MichaelMure/git-bug-migration/migration12/after/repository" -) - -func createFolder() (string, error) { - dir, err := ioutil.TempDir("", "") - return dir, err -} - -func removeFolder(path string) error { - return os.RemoveAll(path) -} - -func TestMigrate12(t *testing.T) { - cwd, err := os.Getwd() - require.NoError(t, err, "got error when attempting to access the current working directory") - - dir, err := createFolder() - require.NoError(t, err, "got error when creating temporary repository dir with version 1") - err = os.Chdir(dir) - require.NoError(t, err, "got error when opening temporary repository folder") - - repo1 := mg1r.NewMockRepoForTest() - - login := mg1b.NewLogin("target", "login") - loginPassword := mg1b.NewLoginPassword("target", "login", "password") - token := mg1b.NewToken("target", "value") - - err = mg1b.Store(repo1, login) - require.NoError(t, err) - err = mg1b.Store(repo1, loginPassword) - require.NoError(t, err) - err = mg1b.Store(repo1, token) - require.NoError(t, err) - - oldCredentials, err := mg1b.List(repo1) - require.NoError(t, err) - require.NoError(t, err) - sort.Slice(oldCredentials, func(i, j int) bool { - k := bytes.Compare(oldCredentials[i].Salt(), oldCredentials[j].Salt()) - require.NotEqual(t, 0, k) - return k < 0 - }) - - oldJSON, err := json.Marshal(oldCredentials) - require.NoError(t, err) - - repo2 := mg2r.NewMockRepoForTest() - require.NoError(t, err) - - err = Migrate12(repo1, repo2) - require.NoError(t, err, "got error when migrating repository with version 2") - - newCredentials, err := mg2b.List(repo2) - require.NoError(t, err) - sort.Slice(newCredentials, func(i, j int) bool { - k := bytes.Compare(newCredentials[i].Salt(), newCredentials[j].Salt()) - require.NotEqual(t, 0, k) - return k < 0 - }) - - newJSON, err := json.Marshal(newCredentials) - require.NoError(t, err) - require.Equal(t, oldJSON, newJSON) - - err = os.Chdir(cwd) - err = removeFolder(dir) - require.NoError(t, err, "got error when removing temporary folder") -} diff --git a/migration12/README.md b/migration2/README.md similarity index 100% rename from migration12/README.md rename to migration2/README.md diff --git a/migration12/after/bridge/core/auth/credential.go b/migration2/after/bridge/core/auth/credential.go similarity index 97% rename from migration12/after/bridge/core/auth/credential.go rename to migration2/after/bridge/core/auth/credential.go index c2142f5..d3b4731 100644 --- a/migration12/after/bridge/core/auth/credential.go +++ b/migration2/after/bridge/core/auth/credential.go @@ -9,8 +9,8 @@ import ( "strings" "time" - "github.com/MichaelMure/git-bug-migration/migration12/after/entity" - "github.com/MichaelMure/git-bug-migration/migration12/after/repository" + "github.com/MichaelMure/git-bug-migration/migration2/after/entity" + "github.com/MichaelMure/git-bug-migration/migration2/after/repository" ) const ( diff --git a/migration12/after/bridge/core/auth/credential_base.go b/migration2/after/bridge/core/auth/credential_base.go similarity index 97% rename from migration12/after/bridge/core/auth/credential_base.go rename to migration2/after/bridge/core/auth/credential_base.go index 37facc9..14a278e 100644 --- a/migration12/after/bridge/core/auth/credential_base.go +++ b/migration2/after/bridge/core/auth/credential_base.go @@ -7,7 +7,7 @@ import ( "strings" "time" - "github.com/MichaelMure/git-bug-migration/migration12/after/repository" + "github.com/MichaelMure/git-bug-migration/migration2/after/repository" ) type CredentialBase struct { diff --git a/migration12/before/bridge/core/auth/credential_test.go b/migration2/after/bridge/core/auth/credential_test.go similarity index 95% rename from migration12/before/bridge/core/auth/credential_test.go rename to migration2/after/bridge/core/auth/credential_test.go index a769a49..10377d5 100644 --- a/migration12/before/bridge/core/auth/credential_test.go +++ b/migration2/after/bridge/core/auth/credential_test.go @@ -5,8 +5,8 @@ import ( "github.com/stretchr/testify/require" - "github.com/MichaelMure/git-bug-migration/migration12/before/entity" - "github.com/MichaelMure/git-bug-migration/migration12/before/repository" + "github.com/MichaelMure/git-bug-migration/migration2/after/entity" + "github.com/MichaelMure/git-bug-migration/migration2/after/repository" ) func TestCredential(t *testing.T) { diff --git a/migration12/after/bridge/core/auth/login.go b/migration2/after/bridge/core/auth/login.go similarity index 94% rename from migration12/after/bridge/core/auth/login.go rename to migration2/after/bridge/core/auth/login.go index ad8fefd..c33e3c8 100644 --- a/migration12/after/bridge/core/auth/login.go +++ b/migration2/after/bridge/core/auth/login.go @@ -4,7 +4,7 @@ import ( "crypto/sha256" "fmt" - "github.com/MichaelMure/git-bug-migration/migration12/after/entity" + "github.com/MichaelMure/git-bug-migration/migration2/after/entity" ) const ( diff --git a/migration12/after/bridge/core/auth/login_password.go b/migration2/after/bridge/core/auth/login_password.go similarity index 95% rename from migration12/after/bridge/core/auth/login_password.go rename to migration2/after/bridge/core/auth/login_password.go index 8fe4513..777d5dc 100644 --- a/migration12/after/bridge/core/auth/login_password.go +++ b/migration2/after/bridge/core/auth/login_password.go @@ -4,7 +4,7 @@ import ( "crypto/sha256" "fmt" - "github.com/MichaelMure/git-bug-migration/migration12/after/entity" + "github.com/MichaelMure/git-bug-migration/migration2/after/entity" ) const ( diff --git a/migration12/after/bridge/core/auth/login_password_test.go b/migration2/after/bridge/core/auth/login_password_test.go similarity index 100% rename from migration12/after/bridge/core/auth/login_password_test.go rename to migration2/after/bridge/core/auth/login_password_test.go diff --git a/migration12/after/bridge/core/auth/login_test.go b/migration2/after/bridge/core/auth/login_test.go similarity index 100% rename from migration12/after/bridge/core/auth/login_test.go rename to migration2/after/bridge/core/auth/login_test.go diff --git a/migration12/after/bridge/core/auth/options.go b/migration2/after/bridge/core/auth/options.go similarity index 100% rename from migration12/after/bridge/core/auth/options.go rename to migration2/after/bridge/core/auth/options.go diff --git a/migration12/after/bridge/core/auth/token.go b/migration2/after/bridge/core/auth/token.go similarity index 94% rename from migration12/after/bridge/core/auth/token.go rename to migration2/after/bridge/core/auth/token.go index 70190f6..022c1b5 100644 --- a/migration12/after/bridge/core/auth/token.go +++ b/migration2/after/bridge/core/auth/token.go @@ -4,7 +4,7 @@ import ( "crypto/sha256" "fmt" - "github.com/MichaelMure/git-bug-migration/migration12/after/entity" + "github.com/MichaelMure/git-bug-migration/migration2/after/entity" ) const ( diff --git a/migration12/after/bridge/core/auth/token_test.go b/migration2/after/bridge/core/auth/token_test.go similarity index 100% rename from migration12/after/bridge/core/auth/token_test.go rename to migration2/after/bridge/core/auth/token_test.go diff --git a/migration12/after/entity/doc.go b/migration2/after/entity/doc.go similarity index 100% rename from migration12/after/entity/doc.go rename to migration2/after/entity/doc.go diff --git a/migration12/after/entity/err.go b/migration2/after/entity/err.go similarity index 100% rename from migration12/after/entity/err.go rename to migration2/after/entity/err.go diff --git a/migration12/after/entity/id.go b/migration2/after/entity/id.go similarity index 100% rename from migration12/after/entity/id.go rename to migration2/after/entity/id.go diff --git a/migration12/after/entity/interface.go b/migration2/after/entity/interface.go similarity index 100% rename from migration12/after/entity/interface.go rename to migration2/after/entity/interface.go diff --git a/migration12/after/entity/merge.go b/migration2/after/entity/merge.go similarity index 100% rename from migration12/after/entity/merge.go rename to migration2/after/entity/merge.go diff --git a/migration12/after/repository/config.go b/migration2/after/repository/config.go similarity index 100% rename from migration12/after/repository/config.go rename to migration2/after/repository/config.go diff --git a/migration12/after/repository/config_mem.go b/migration2/after/repository/config_mem.go similarity index 100% rename from migration12/after/repository/config_mem.go rename to migration2/after/repository/config_mem.go diff --git a/migration12/after/repository/config_mem_test.go b/migration2/after/repository/config_mem_test.go similarity index 100% rename from migration12/after/repository/config_mem_test.go rename to migration2/after/repository/config_mem_test.go diff --git a/migration12/after/repository/config_testing.go b/migration2/after/repository/config_testing.go similarity index 100% rename from migration12/after/repository/config_testing.go rename to migration2/after/repository/config_testing.go diff --git a/migration12/after/repository/git.go b/migration2/after/repository/git.go similarity index 99% rename from migration12/after/repository/git.go rename to migration2/after/repository/git.go index a45264b..ff0dbe4 100644 --- a/migration12/after/repository/git.go +++ b/migration2/after/repository/git.go @@ -10,7 +10,7 @@ import ( "strings" "sync" - "github.com/MichaelMure/git-bug-migration/migration12/after/util/lamport" + "github.com/MichaelMure/git-bug-migration/migration2/after/util/lamport" ) const ( diff --git a/migration12/after/repository/git_config.go b/migration2/after/repository/git_config.go similarity index 100% rename from migration12/after/repository/git_config.go rename to migration2/after/repository/git_config.go diff --git a/migration12/after/repository/git_test.go b/migration2/after/repository/git_test.go similarity index 100% rename from migration12/after/repository/git_test.go rename to migration2/after/repository/git_test.go diff --git a/migration12/after/repository/git_testing.go b/migration2/after/repository/git_testing.go similarity index 100% rename from migration12/after/repository/git_testing.go rename to migration2/after/repository/git_testing.go diff --git a/migration12/after/repository/gogit.go b/migration2/after/repository/gogit.go similarity index 99% rename from migration12/after/repository/gogit.go rename to migration2/after/repository/gogit.go index 99fbba7..00b2560 100644 --- a/migration12/after/repository/gogit.go +++ b/migration2/after/repository/gogit.go @@ -17,7 +17,7 @@ import ( "github.com/go-git/go-git/v5/plumbing/filemode" "github.com/go-git/go-git/v5/plumbing/object" - "github.com/MichaelMure/git-bug-migration/migration12/after/util/lamport" + "github.com/MichaelMure/git-bug-migration/migration2/after/util/lamport" ) var _ ClockedRepo = &GoGitRepo{} diff --git a/migration12/after/repository/gogit_config.go b/migration2/after/repository/gogit_config.go similarity index 100% rename from migration12/after/repository/gogit_config.go rename to migration2/after/repository/gogit_config.go diff --git a/migration12/after/repository/gogit_test.go b/migration2/after/repository/gogit_test.go similarity index 100% rename from migration12/after/repository/gogit_test.go rename to migration2/after/repository/gogit_test.go diff --git a/migration12/after/repository/gogit_testing.go b/migration2/after/repository/gogit_testing.go similarity index 100% rename from migration12/after/repository/gogit_testing.go rename to migration2/after/repository/gogit_testing.go diff --git a/migration12/after/repository/hash.go b/migration2/after/repository/hash.go similarity index 100% rename from migration12/after/repository/hash.go rename to migration2/after/repository/hash.go diff --git a/migration12/after/repository/keyring.go b/migration2/after/repository/keyring.go similarity index 100% rename from migration12/after/repository/keyring.go rename to migration2/after/repository/keyring.go diff --git a/migration12/after/repository/mock_repo.go b/migration2/after/repository/mock_repo.go similarity index 98% rename from migration12/after/repository/mock_repo.go rename to migration2/after/repository/mock_repo.go index d928f3e..43484ff 100644 --- a/migration12/after/repository/mock_repo.go +++ b/migration2/after/repository/mock_repo.go @@ -7,7 +7,7 @@ import ( "github.com/99designs/keyring" - "github.com/MichaelMure/git-bug-migration/migration12/after/util/lamport" + "github.com/MichaelMure/git-bug-migration/migration2/after/util/lamport" ) var _ ClockedRepo = &mockRepoForTest{} diff --git a/migration12/after/repository/mock_repo_test.go b/migration2/after/repository/mock_repo_test.go similarity index 100% rename from migration12/after/repository/mock_repo_test.go rename to migration2/after/repository/mock_repo_test.go diff --git a/migration12/after/repository/repo.go b/migration2/after/repository/repo.go similarity index 98% rename from migration12/after/repository/repo.go rename to migration2/after/repository/repo.go index 6a1b081..ba24332 100644 --- a/migration12/after/repository/repo.go +++ b/migration2/after/repository/repo.go @@ -4,7 +4,7 @@ package repository import ( "errors" - "github.com/MichaelMure/git-bug-migration/migration12/after/util/lamport" + "github.com/MichaelMure/git-bug-migration/migration2/after/util/lamport" ) var ( diff --git a/migration12/after/repository/repo_testing.go b/migration2/after/repository/repo_testing.go similarity index 100% rename from migration12/after/repository/repo_testing.go rename to migration2/after/repository/repo_testing.go diff --git a/migration12/after/repository/tree_entry.go b/migration2/after/repository/tree_entry.go similarity index 100% rename from migration12/after/repository/tree_entry.go rename to migration2/after/repository/tree_entry.go diff --git a/migration12/after/repository/tree_entry_test.go b/migration2/after/repository/tree_entry_test.go similarity index 100% rename from migration12/after/repository/tree_entry_test.go rename to migration2/after/repository/tree_entry_test.go diff --git a/migration12/after/util/colors/colors.go b/migration2/after/util/colors/colors.go similarity index 100% rename from migration12/after/util/colors/colors.go rename to migration2/after/util/colors/colors.go diff --git a/migration12/after/util/interrupt/cleaner.go b/migration2/after/util/interrupt/cleaner.go similarity index 100% rename from migration12/after/util/interrupt/cleaner.go rename to migration2/after/util/interrupt/cleaner.go diff --git a/migration12/after/util/interrupt/cleaner_test.go b/migration2/after/util/interrupt/cleaner_test.go similarity index 100% rename from migration12/after/util/interrupt/cleaner_test.go rename to migration2/after/util/interrupt/cleaner_test.go diff --git a/migration12/after/util/lamport/clock.go b/migration2/after/util/lamport/clock.go similarity index 100% rename from migration12/after/util/lamport/clock.go rename to migration2/after/util/lamport/clock.go diff --git a/migration12/after/util/lamport/clock_testing.go b/migration2/after/util/lamport/clock_testing.go similarity index 100% rename from migration12/after/util/lamport/clock_testing.go rename to migration2/after/util/lamport/clock_testing.go diff --git a/migration12/after/util/lamport/mem_clock.go b/migration2/after/util/lamport/mem_clock.go similarity index 100% rename from migration12/after/util/lamport/mem_clock.go rename to migration2/after/util/lamport/mem_clock.go diff --git a/migration12/after/util/lamport/mem_clock_test.go b/migration2/after/util/lamport/mem_clock_test.go similarity index 100% rename from migration12/after/util/lamport/mem_clock_test.go rename to migration2/after/util/lamport/mem_clock_test.go diff --git a/migration12/after/util/lamport/persisted_clock.go b/migration2/after/util/lamport/persisted_clock.go similarity index 100% rename from migration12/after/util/lamport/persisted_clock.go rename to migration2/after/util/lamport/persisted_clock.go diff --git a/migration12/after/util/lamport/persisted_clock_test.go b/migration2/after/util/lamport/persisted_clock_test.go similarity index 100% rename from migration12/after/util/lamport/persisted_clock_test.go rename to migration2/after/util/lamport/persisted_clock_test.go diff --git a/migration12/after/util/process/process.go b/migration2/after/util/process/process.go similarity index 100% rename from migration12/after/util/process/process.go rename to migration2/after/util/process/process.go diff --git a/migration12/after/util/text/transform.go b/migration2/after/util/text/transform.go similarity index 100% rename from migration12/after/util/text/transform.go rename to migration2/after/util/text/transform.go diff --git a/migration12/after/util/text/validate.go b/migration2/after/util/text/validate.go similarity index 100% rename from migration12/after/util/text/validate.go rename to migration2/after/util/text/validate.go diff --git a/migration12/after/util/timestamp/timestamp.go b/migration2/after/util/timestamp/timestamp.go similarity index 100% rename from migration12/after/util/timestamp/timestamp.go rename to migration2/after/util/timestamp/timestamp.go diff --git a/migration12/before/bridge/core/auth/credential.go b/migration2/before/bridge/core/auth/credential.go similarity index 97% rename from migration12/before/bridge/core/auth/credential.go rename to migration2/before/bridge/core/auth/credential.go index 920a464..4ea9024 100644 --- a/migration12/before/bridge/core/auth/credential.go +++ b/migration2/before/bridge/core/auth/credential.go @@ -9,8 +9,8 @@ import ( "strings" "time" - "github.com/MichaelMure/git-bug-migration/migration12/before/entity" - "github.com/MichaelMure/git-bug-migration/migration12/before/repository" + "github.com/MichaelMure/git-bug-migration/migration2/before/entity" + "github.com/MichaelMure/git-bug-migration/migration2/before/repository" ) const ( diff --git a/migration12/before/bridge/core/auth/credential_base.go b/migration2/before/bridge/core/auth/credential_base.go similarity index 95% rename from migration12/before/bridge/core/auth/credential_base.go rename to migration2/before/bridge/core/auth/credential_base.go index 1f6f0ff..753e237 100644 --- a/migration12/before/bridge/core/auth/credential_base.go +++ b/migration2/before/bridge/core/auth/credential_base.go @@ -4,7 +4,7 @@ import ( "fmt" "time" - "github.com/MichaelMure/git-bug-migration/migration12/before/repository" + "github.com/MichaelMure/git-bug-migration/migration2/before/repository" ) type CredentialBase struct { diff --git a/migration12/after/bridge/core/auth/credential_test.go b/migration2/before/bridge/core/auth/credential_test.go similarity index 95% rename from migration12/after/bridge/core/auth/credential_test.go rename to migration2/before/bridge/core/auth/credential_test.go index 24abeb9..d65a685 100644 --- a/migration12/after/bridge/core/auth/credential_test.go +++ b/migration2/before/bridge/core/auth/credential_test.go @@ -5,8 +5,8 @@ import ( "github.com/stretchr/testify/require" - "github.com/MichaelMure/git-bug-migration/migration12/after/entity" - "github.com/MichaelMure/git-bug-migration/migration12/after/repository" + "github.com/MichaelMure/git-bug-migration/migration2/before/entity" + "github.com/MichaelMure/git-bug-migration/migration2/before/repository" ) func TestCredential(t *testing.T) { diff --git a/migration12/before/bridge/core/auth/login.go b/migration2/before/bridge/core/auth/login.go similarity index 94% rename from migration12/before/bridge/core/auth/login.go rename to migration2/before/bridge/core/auth/login.go index 8ed7cfb..bf07adb 100644 --- a/migration12/before/bridge/core/auth/login.go +++ b/migration2/before/bridge/core/auth/login.go @@ -4,7 +4,7 @@ import ( "crypto/sha256" "fmt" - "github.com/MichaelMure/git-bug-migration/migration12/before/entity" + "github.com/MichaelMure/git-bug-migration/migration2/before/entity" ) const ( diff --git a/migration12/before/bridge/core/auth/login_password.go b/migration2/before/bridge/core/auth/login_password.go similarity index 95% rename from migration12/before/bridge/core/auth/login_password.go rename to migration2/before/bridge/core/auth/login_password.go index 127c923..7971ea4 100644 --- a/migration12/before/bridge/core/auth/login_password.go +++ b/migration2/before/bridge/core/auth/login_password.go @@ -4,7 +4,7 @@ import ( "crypto/sha256" "fmt" - "github.com/MichaelMure/git-bug-migration/migration12/before/entity" + "github.com/MichaelMure/git-bug-migration/migration2/before/entity" ) const ( diff --git a/migration12/before/bridge/core/auth/login_password_test.go b/migration2/before/bridge/core/auth/login_password_test.go similarity index 100% rename from migration12/before/bridge/core/auth/login_password_test.go rename to migration2/before/bridge/core/auth/login_password_test.go diff --git a/migration12/before/bridge/core/auth/login_test.go b/migration2/before/bridge/core/auth/login_test.go similarity index 100% rename from migration12/before/bridge/core/auth/login_test.go rename to migration2/before/bridge/core/auth/login_test.go diff --git a/migration12/before/bridge/core/auth/options.go b/migration2/before/bridge/core/auth/options.go similarity index 100% rename from migration12/before/bridge/core/auth/options.go rename to migration2/before/bridge/core/auth/options.go diff --git a/migration12/before/bridge/core/auth/token.go b/migration2/before/bridge/core/auth/token.go similarity index 94% rename from migration12/before/bridge/core/auth/token.go rename to migration2/before/bridge/core/auth/token.go index cbb87b3..b674d22 100644 --- a/migration12/before/bridge/core/auth/token.go +++ b/migration2/before/bridge/core/auth/token.go @@ -4,7 +4,7 @@ import ( "crypto/sha256" "fmt" - "github.com/MichaelMure/git-bug-migration/migration12/before/entity" + "github.com/MichaelMure/git-bug-migration/migration2/before/entity" ) const ( diff --git a/migration12/before/bridge/core/auth/token_test.go b/migration2/before/bridge/core/auth/token_test.go similarity index 100% rename from migration12/before/bridge/core/auth/token_test.go rename to migration2/before/bridge/core/auth/token_test.go diff --git a/migration12/before/entity/doc.go b/migration2/before/entity/doc.go similarity index 100% rename from migration12/before/entity/doc.go rename to migration2/before/entity/doc.go diff --git a/migration12/before/entity/err.go b/migration2/before/entity/err.go similarity index 100% rename from migration12/before/entity/err.go rename to migration2/before/entity/err.go diff --git a/migration12/before/entity/id.go b/migration2/before/entity/id.go similarity index 100% rename from migration12/before/entity/id.go rename to migration2/before/entity/id.go diff --git a/migration12/before/entity/interface.go b/migration2/before/entity/interface.go similarity index 100% rename from migration12/before/entity/interface.go rename to migration2/before/entity/interface.go diff --git a/migration12/before/entity/merge.go b/migration2/before/entity/merge.go similarity index 100% rename from migration12/before/entity/merge.go rename to migration2/before/entity/merge.go diff --git a/migration12/before/repository/config.go b/migration2/before/repository/config.go similarity index 100% rename from migration12/before/repository/config.go rename to migration2/before/repository/config.go diff --git a/migration12/before/repository/config_git.go b/migration2/before/repository/config_git.go similarity index 100% rename from migration12/before/repository/config_git.go rename to migration2/before/repository/config_git.go diff --git a/migration12/before/repository/config_mem.go b/migration2/before/repository/config_mem.go similarity index 100% rename from migration12/before/repository/config_mem.go rename to migration2/before/repository/config_mem.go diff --git a/migration12/before/repository/git.go b/migration2/before/repository/git.go similarity index 98% rename from migration12/before/repository/git.go rename to migration2/before/repository/git.go index b9ddf7c..f261e16 100644 --- a/migration12/before/repository/git.go +++ b/migration2/before/repository/git.go @@ -11,8 +11,8 @@ import ( "github.com/pkg/errors" - "github.com/MichaelMure/git-bug-migration/migration12/before/util/git" - "github.com/MichaelMure/git-bug-migration/migration12/before/util/lamport" + "github.com/MichaelMure/git-bug-migration/migration2/before/util/git" + "github.com/MichaelMure/git-bug-migration/migration2/before/util/lamport" ) const ( diff --git a/migration12/before/repository/git_test.go b/migration2/before/repository/git_test.go similarity index 100% rename from migration12/before/repository/git_test.go rename to migration2/before/repository/git_test.go diff --git a/migration12/before/repository/git_testing.go b/migration2/before/repository/git_testing.go similarity index 100% rename from migration12/before/repository/git_testing.go rename to migration2/before/repository/git_testing.go diff --git a/migration12/before/repository/mock_repo.go b/migration2/before/repository/mock_repo.go similarity index 97% rename from migration12/before/repository/mock_repo.go rename to migration2/before/repository/mock_repo.go index 9bf314d..504bdb5 100644 --- a/migration12/before/repository/mock_repo.go +++ b/migration2/before/repository/mock_repo.go @@ -4,8 +4,8 @@ import ( "crypto/sha1" "fmt" - "github.com/MichaelMure/git-bug-migration/migration12/before/util/git" - "github.com/MichaelMure/git-bug-migration/migration12/before/util/lamport" + "github.com/MichaelMure/git-bug-migration/migration2/before/util/git" + "github.com/MichaelMure/git-bug-migration/migration2/before/util/lamport" ) var _ ClockedRepo = &mockRepoForTest{} diff --git a/migration12/before/repository/repo.go b/migration2/before/repository/repo.go similarity index 96% rename from migration12/before/repository/repo.go rename to migration2/before/repository/repo.go index d5a27e7..0dbb1c7 100644 --- a/migration12/before/repository/repo.go +++ b/migration2/before/repository/repo.go @@ -6,8 +6,8 @@ import ( "errors" "strings" - "github.com/MichaelMure/git-bug-migration/migration12/before/util/git" - "github.com/MichaelMure/git-bug-migration/migration12/before/util/lamport" + "github.com/MichaelMure/git-bug-migration/migration2/before/util/git" + "github.com/MichaelMure/git-bug-migration/migration2/before/util/lamport" ) var ( diff --git a/migration01/before/repository/tree_entry.go b/migration2/before/repository/tree_entry.go similarity index 94% rename from migration01/before/repository/tree_entry.go rename to migration2/before/repository/tree_entry.go index 9404770..863221b 100644 --- a/migration01/before/repository/tree_entry.go +++ b/migration2/before/repository/tree_entry.go @@ -4,7 +4,7 @@ import ( "fmt" "strings" - "github.com/MichaelMure/git-bug-migration/migration01/before/util/git" + "github.com/MichaelMure/git-bug-migration/migration2/before/util/git" ) type TreeEntry struct { diff --git a/migration12/before/repository/tree_entry_test.go b/migration2/before/repository/tree_entry_test.go similarity index 89% rename from migration12/before/repository/tree_entry_test.go rename to migration2/before/repository/tree_entry_test.go index c08fc37..765d037 100644 --- a/migration12/before/repository/tree_entry_test.go +++ b/migration2/before/repository/tree_entry_test.go @@ -3,7 +3,7 @@ package repository import ( "testing" - "github.com/MichaelMure/git-bug-migration/migration12/before/util/git" + "github.com/MichaelMure/git-bug-migration/migration2/before/util/git" ) func TestTreeEntryFormat(t *testing.T) { diff --git a/migration12/before/util/colors/colors.go b/migration2/before/util/colors/colors.go similarity index 100% rename from migration12/before/util/colors/colors.go rename to migration2/before/util/colors/colors.go diff --git a/migration12/before/util/git/hash.go b/migration2/before/util/git/hash.go similarity index 100% rename from migration12/before/util/git/hash.go rename to migration2/before/util/git/hash.go diff --git a/migration12/before/util/interrupt/cleaner.go b/migration2/before/util/interrupt/cleaner.go similarity index 100% rename from migration12/before/util/interrupt/cleaner.go rename to migration2/before/util/interrupt/cleaner.go diff --git a/migration12/before/util/interrupt/cleaner_test.go b/migration2/before/util/interrupt/cleaner_test.go similarity index 100% rename from migration12/before/util/interrupt/cleaner_test.go rename to migration2/before/util/interrupt/cleaner_test.go diff --git a/migration12/before/util/lamport/lamport.go b/migration2/before/util/lamport/lamport.go similarity index 100% rename from migration12/before/util/lamport/lamport.go rename to migration2/before/util/lamport/lamport.go diff --git a/migration12/before/util/lamport/lamport_test.go b/migration2/before/util/lamport/lamport_test.go similarity index 100% rename from migration12/before/util/lamport/lamport_test.go rename to migration2/before/util/lamport/lamport_test.go diff --git a/migration12/before/util/lamport/persisted_lamport.go b/migration2/before/util/lamport/persisted_lamport.go similarity index 100% rename from migration12/before/util/lamport/persisted_lamport.go rename to migration2/before/util/lamport/persisted_lamport.go diff --git a/migration12/before/util/process/process.go b/migration2/before/util/process/process.go similarity index 100% rename from migration12/before/util/process/process.go rename to migration2/before/util/process/process.go diff --git a/migration12/before/util/text/transform.go b/migration2/before/util/text/transform.go similarity index 100% rename from migration12/before/util/text/transform.go rename to migration2/before/util/text/transform.go diff --git a/migration12/before/util/text/validate.go b/migration2/before/util/text/validate.go similarity index 100% rename from migration12/before/util/text/validate.go rename to migration2/before/util/text/validate.go diff --git a/migration12/before/util/timestamp/timestamp.go b/migration2/before/util/timestamp/timestamp.go similarity index 100% rename from migration12/before/util/timestamp/timestamp.go rename to migration2/before/util/timestamp/timestamp.go diff --git a/migration2/migration2.go b/migration2/migration2.go new file mode 100644 index 0000000..cea540a --- /dev/null +++ b/migration2/migration2.go @@ -0,0 +1,88 @@ +package migration2 + +import ( + "errors" + + afterauth "github.com/MichaelMure/git-bug-migration/migration2/after/bridge/core/auth" + afterentity "github.com/MichaelMure/git-bug-migration/migration2/after/entity" + afterrepo "github.com/MichaelMure/git-bug-migration/migration2/after/repository" + beforeauth "github.com/MichaelMure/git-bug-migration/migration2/before/bridge/core/auth" + beforerepo "github.com/MichaelMure/git-bug-migration/migration2/before/repository" +) + +type Migration2 struct{} + +func (m *Migration2) Description() string { + return "Migrate bridge credentials from the global git config to a keyring" +} + +func (m *Migration2) Run(repoPath string) error { + oldRepo, err := beforerepo.NewGitRepo(repoPath, nil) + if err != nil { + return err + } + + newRepo, err := afterrepo.NewGitRepo(repoPath, nil) + if err != nil { + return err + } + + return m.migrate(oldRepo, newRepo) +} + +func (m *Migration2) migrate(oldRepo beforerepo.ClockedRepo, newRepo afterrepo.ClockedRepo) error { + creds, err := beforeauth.List(oldRepo) + if err != nil { + return err + } + + for _, cred := range creds { + var newCred afterauth.Credential + if afterauth.IdExist(newRepo, afterentity.Id(cred.ID().String())) { + continue + } + + switch cred := cred.(type) { + case *beforeauth.Login: + newCred = &afterauth.Login{ + Login: cred.Login, + CredentialBase: afterauth.NewCredentialBase( + cred.Target(), + cred.CreateTime(), + cred.Salt(), + cred.Metadata(), + ), + } + case *beforeauth.LoginPassword: + newCred = &afterauth.LoginPassword{ + Login: cred.Login, + Password: cred.Password, + CredentialBase: afterauth.NewCredentialBase( + cred.Target(), + cred.CreateTime(), + cred.Salt(), + cred.Metadata(), + ), + } + case *beforeauth.Token: + newCred = &afterauth.Token{ + Value: cred.Value, + CredentialBase: afterauth.NewCredentialBase( + cred.Target(), + cred.CreateTime(), + cred.Salt(), + cred.Metadata(), + ), + } + default: + return errors.New("unknown credential encountered") + } + + err = afterauth.Store(newRepo, newCred) + if err != nil { + return err + } + } + + return nil +} diff --git a/migration2/migration2_test.go b/migration2/migration2_test.go new file mode 100644 index 0000000..9a1c1ad --- /dev/null +++ b/migration2/migration2_test.go @@ -0,0 +1,60 @@ +package migration2 + +import ( + "bytes" + "encoding/json" + "sort" + "testing" + + "github.com/stretchr/testify/require" + + afterauth "github.com/MichaelMure/git-bug-migration/migration2/after/bridge/core/auth" + afterrepo "github.com/MichaelMure/git-bug-migration/migration2/after/repository" + beforeauth "github.com/MichaelMure/git-bug-migration/migration2/before/bridge/core/auth" + beforerepo "github.com/MichaelMure/git-bug-migration/migration2/before/repository" +) + +func TestMigrate12(t *testing.T) { + repo1 := beforerepo.NewMockRepoForTest() + + login := beforeauth.NewLogin("target", "login") + loginPassword := beforeauth.NewLoginPassword("target", "login", "password") + token := beforeauth.NewToken("target", "value") + + err := beforeauth.Store(repo1, login) + require.NoError(t, err) + err = beforeauth.Store(repo1, loginPassword) + require.NoError(t, err) + err = beforeauth.Store(repo1, token) + require.NoError(t, err) + + oldCredentials, err := beforeauth.List(repo1) + require.NoError(t, err) + sort.Slice(oldCredentials, func(i, j int) bool { + k := bytes.Compare(oldCredentials[i].Salt(), oldCredentials[j].Salt()) + require.NotEqual(t, 0, k) + return k < 0 + }) + + oldJSON, err := json.Marshal(oldCredentials) + require.NoError(t, err) + + repo2 := afterrepo.NewMockRepoForTest() + require.NoError(t, err) + + m := Migration2{} + err = m.migrate(repo1, repo2) + require.NoError(t, err, "got error when migrating repository with version 2") + + newCredentials, err := afterauth.List(repo2) + require.NoError(t, err) + sort.Slice(newCredentials, func(i, j int) bool { + k := bytes.Compare(newCredentials[i].Salt(), newCredentials[j].Salt()) + require.NotEqual(t, 0, k) + return k < 0 + }) + + newJSON, err := json.Marshal(newCredentials) + require.NoError(t, err) + require.Equal(t, oldJSON, newJSON) +} diff --git a/root.go b/root.go new file mode 100644 index 0000000..bb6f88c --- /dev/null +++ b/root.go @@ -0,0 +1,65 @@ +// Package commands contains the CLI commands +package main + +import ( + "os" + + "github.com/spf13/cobra" + + "github.com/MichaelMure/git-bug-migration/migration1" + "github.com/MichaelMure/git-bug-migration/migration2" +) + +const rootCommandName = "git-bug-migration" + +func NewRootCommand() *cobra.Command { + env := newEnv() + + migrations := []Migration{ + &migration1.Migration1{}, + &migration2.Migration2{}, + } + + cmd := &cobra.Command{ + Use: rootCommandName, + Short: "A migration tool for git-bug", + Long: `git-bug-migration is a tool to migrate git-bug data stored in git repository to a newer format when breaking +changes are made in git-bug. + + `, + + Version: version(), + + PreRunE: findRepo(env), + RunE: func(_ *cobra.Command, _ []string) error { + return runRootCmd(env, migrations) + }, + + SilenceUsage: true, + DisableAutoGenTag: true, + } + + cmd.AddCommand(newVersionCommand()) + + return cmd +} + +func runRootCmd(env *Env, migrations []Migration) error { + for i, migration := range migrations { + if i > 0 { + env.out.Println() + env.out.Println() + } + env.out.Print("Migration #%d\n", i+1) + env.out.Println("Purpose:", migration.Description()) + env.out.Println() + + err := migration.Run(env.repoPath) + if err != nil { + env.err.Printf("Error applying migration: %v\n", err) + os.Exit(1) + } + } + env.out.Println("Done!") + return nil +} diff --git a/version.go b/version.go new file mode 100644 index 0000000..5ce5bfe --- /dev/null +++ b/version.go @@ -0,0 +1,37 @@ +package main + +import ( + "fmt" + + "github.com/spf13/cobra" +) + +// These variables are initialized externally during the build. See the Makefile. +var GitCommit = "" +var GitLastTag = "" +var GitExactTag = "" + +func version() string { + if GitExactTag == "undefined" { + GitExactTag = "" + } + version := GitLastTag + if GitExactTag == "" { + version = fmt.Sprintf("%s-dev-%.10s", version, GitCommit) + } + return version +} + +func newVersionCommand() *cobra.Command { + env := newEnv() + + cmd := &cobra.Command{ + Use: "version", + Short: "Create a new bug.", + Run: func(cmd *cobra.Command, args []string) { + env.out.Println(version()) + }, + } + + return cmd +} From 6d4dd7f5f917ab05f4a5d6e25830ba22b8726bff Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Michael=20Mur=C3=A9?= Date: Thu, 24 Sep 2020 14:11:30 +0200 Subject: [PATCH 2/3] build: go 1.13 minimum --- .travis.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.travis.yml b/.travis.yml index 9843ccd..7b33b1d 100644 --- a/.travis.yml +++ b/.travis.yml @@ -1,11 +1,11 @@ matrix: include: - - language: go - go: 1.12.x - language: go go: 1.13.x - language: go go: 1.14.x + - language: go + go: 1.15.x env: GO111MODULE=on From 40df7bf313a81ce3e50b49979422395aabdc7156 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Michael=20Mur=C3=A9?= Date: Thu, 24 Sep 2020 14:26:39 +0200 Subject: [PATCH 3/3] fix minor errors --- migration2/migration2.go | 2 +- root.go | 3 +-- 2 files changed, 2 insertions(+), 3 deletions(-) diff --git a/migration2/migration2.go b/migration2/migration2.go index cea540a..3c3a6a0 100644 --- a/migration2/migration2.go +++ b/migration2/migration2.go @@ -17,7 +17,7 @@ func (m *Migration2) Description() string { } func (m *Migration2) Run(repoPath string) error { - oldRepo, err := beforerepo.NewGitRepo(repoPath, nil) + oldRepo, err := beforerepo.NewGitRepo(repoPath, func(beforerepo.ClockedRepo) error { return nil }) if err != nil { return err } diff --git a/root.go b/root.go index bb6f88c..c7ddf8e 100644 --- a/root.go +++ b/root.go @@ -48,9 +48,8 @@ func runRootCmd(env *Env, migrations []Migration) error { for i, migration := range migrations { if i > 0 { env.out.Println() - env.out.Println() } - env.out.Print("Migration #%d\n", i+1) + env.out.Printf("Migration #%d\n", i+1) env.out.Println("Purpose:", migration.Description()) env.out.Println()