diff options
author | Michael Muré <batolettre@gmail.com> | 2019-02-24 14:17:52 +0100 |
---|---|---|
committer | Michael Muré <batolettre@gmail.com> | 2019-03-01 22:48:51 +0100 |
commit | 7a80d8f849861a6033cd0765e5d85a52b08a8854 (patch) | |
tree | 30a2b00bec3e871aa18ba75acac626f9e7e1f1b2 /identity | |
parent | 8bba6d1493fdf064ac9fede0a5098b1abe969052 (diff) | |
download | git-bug-7a80d8f849861a6033cd0765e5d85a52b08a8854.tar.gz |
commands: add a super-fast "user ls" command
Diffstat (limited to 'identity')
-rw-r--r-- | identity/bare.go | 5 | ||||
-rw-r--r-- | identity/identity.go | 17 | ||||
-rw-r--r-- | identity/identity_stub.go | 4 | ||||
-rw-r--r-- | identity/interface.go | 3 |
4 files changed, 29 insertions, 0 deletions
diff --git a/identity/bare.go b/identity/bare.go index d3f7655a..b6cbe491 100644 --- a/identity/bare.go +++ b/identity/bare.go @@ -85,6 +85,11 @@ func (i *Bare) Id() string { return i.id } +// HumanId return the Identity identifier truncated for human consumption +func (i *Bare) HumanId() string { + return FormatHumanID(i.Id()) +} + // Name return the last version of the name func (i *Bare) Name() string { return i.name diff --git a/identity/identity.go b/identity/identity.go index 114b954e..d57e8ce0 100644 --- a/identity/identity.go +++ b/identity/identity.go @@ -20,6 +20,9 @@ const identityRemoteRefPattern = "refs/remotes/%s/identities/" const versionEntryName = "version" const identityConfigKey = "git-bug.identity" +const idLength = 40 +const humanIdLength = 7 + var ErrNonFastForwardMerge = errors.New("non fast-forward identity merge") var ErrNoIdentitySet = errors.New("user identity first needs to be created using \"git bug user create\"") var ErrMultipleIdentitiesSet = errors.New("multiple user identities set") @@ -93,6 +96,10 @@ func read(repo repository.Repo, ref string) (*Identity, error) { refSplit := strings.Split(ref, "/") id := refSplit[len(refSplit)-1] + if len(id) != idLength { + return nil, fmt.Errorf("invalid ref length") + } + hashes, err := repo.ListCommits(ref) // TODO: this is not perfect, it might be a command invoke error @@ -461,6 +468,16 @@ func (i *Identity) Id() string { return i.id } +// HumanId return the Identity identifier truncated for human consumption +func (i *Identity) HumanId() string { + return FormatHumanID(i.Id()) +} + +func FormatHumanID(id string) string { + format := fmt.Sprintf("%%.%ds", humanIdLength) + return fmt.Sprintf(format, id) +} + // Name return the last version of the name func (i *Identity) Name() string { return i.lastVersion().name diff --git a/identity/identity_stub.go b/identity/identity_stub.go index 830cfb99..1bfc18d0 100644 --- a/identity/identity_stub.go +++ b/identity/identity_stub.go @@ -44,6 +44,10 @@ func (i *IdentityStub) Id() string { return i.id } +func (i *IdentityStub) HumanId() string { + return FormatHumanID(i.Id()) +} + func (IdentityStub) Name() string { panic("identities needs to be properly loaded with identity.ReadLocal()") } diff --git a/identity/interface.go b/identity/interface.go index 9fe4db4f..d5c80543 100644 --- a/identity/interface.go +++ b/identity/interface.go @@ -9,6 +9,9 @@ type Interface interface { // Id return the Identity identifier Id() string + // HumanId return the Identity identifier truncated for human consumption + HumanId() string + // Name return the last version of the name Name() string // Email return the last version of the email |