Skip to content

Commit

Permalink
Moved automatic identity selection into separate file.
Browse files Browse the repository at this point in the history
  • Loading branch information
woalk committed Mar 24, 2018
1 parent e7cc6ea commit 26837d1
Show file tree
Hide file tree
Showing 3 changed files with 71 additions and 92 deletions.
55 changes: 55 additions & 0 deletions auto.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,55 @@
from argparse import Namespace
from pathlib import Path

# --- general commands


# @param cwd: a pathlib.Path to use
# @param identities: a configparser.ConfigParser() pointing to the .git_identities file
# @return: an argparse.Namespace
# with (identity_key, identity, keyword, path, weakness)
def find_identity(cwd, identities):
result_identity_key = None
result_identity = None
result_keyword = None
result_path = None
result_weakness = None

try:
for identity in identities.sections():
identity_obj = identities[identity]
i = 1
while 'path' + str(i) in identity_obj:
j = 0
path = Path(identity_obj['path' + str(i)])
if path == cwd:
result_identity = identity_obj
result_identity_key = identity[9:]
result_path = identity_obj['path' + str(i)]
result_weakness = None
raise StopIteration
else:
if path in cwd.parents:
weakness = cwd.parents.index(path)
if result_weakness is None or result_weakness > weakness:
result_identity = identity_obj
result_identity_key = identity[9:]
result_path = identity_obj['path' + str(i)]
result_weakness = weakness
i += 1
if result_identity is not None:
raise StopIteration
for identity in identities.sections():
identity_obj = identities[identity]
i = 1
while 'keyword' + str(i) in identity_obj:
if identity_obj['keyword' + str(i)] in str(cwd):
result_identity = identity_obj
result_identity_key = identity[9:]
result_keyword = identity_obj['keyword' + str(i)]
raise StopIteration
i += 1
except StopIteration:
pass
return Namespace(identity_key=result_identity_key, identity=result_identity, keyword=result_keyword,
path=result_path, weakness=result_weakness)
48 changes: 7 additions & 41 deletions checks.py
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@

from pathlib import Path
from colors import Colors
from auto import find_identity
import git
import configparser

Expand All @@ -11,48 +12,13 @@
identities.read(identities_file_path)

cwd = Path.cwd()
resultIdentity = None
resultIdentityKey = None
resultKeyword = None
resultPath = None
resultWeakness = None
result = find_identity(cwd, identities)

try:
for identity in identities.sections():
identity_obj = identities[identity]
i = 1
while 'path' + str(i) in identity_obj:
j = 0
path = Path(identity_obj['path' + str(i)])
if path == cwd:
resultIdentity = identity_obj
resultIdentityKey = identity[9:]
resultPath = identity_obj['path' + str(i)]
resultWeakness = None
raise StopIteration
else:
if path in cwd.parents:
weakness = cwd.parents.index(path)
if resultWeakness is None or resultWeakness > weakness:
resultIdentity = identity_obj
resultIdentityKey = identity[9:]
resultPath = identity_obj['path' + str(i)]
resultWeakness = weakness
i += 1
if resultIdentity is not None:
raise StopIteration
for identity in identities.sections():
identity_obj = identities[identity]
i = 1
while 'keyword' + str(i) in identity_obj:
if identity_obj['keyword' + str(i)] in str(cwd):
resultIdentity = identity_obj
resultIdentityKey = identity[9:]
resultKeyword = identity_obj['keyword' + str(i)]
raise StopIteration
i += 1
except StopIteration:
pass
resultIdentity = result.identity
resultIdentityKey = result.identity_key
resultKeyword = result.keyword
resultPath = result.path
resultWeakness = result.weakness

git_config_user = git.config_get('user', 'name')
git_config_email = git.config_get('user', 'email')
Expand Down
60 changes: 9 additions & 51 deletions commands.py
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
from os.path import basename
from colors import Colors
from pathlib import Path
from auto import find_identity
import git
import configparser

Expand Down Expand Up @@ -181,62 +182,19 @@ def apply_identity(args):
identities.read(identities_file_path)

if args.auto:
cwd = Path.cwd()
result_identity_key = None
result_identity = None
result_keyword = None
result_path = None
result_weakness = None

try:
for identity in identities.sections():
identity_obj = identities[identity]
i = 1
while 'path' + str(i) in identity_obj:
j = 0
path = Path(identity_obj['path' + str(i)])
if path == cwd:
result_identity = identity_obj
result_identity_key = identity[9:]
result_path = identity_obj['path' + str(i)]
result_weakness = None
raise StopIteration
else:
if path in cwd.parents:
weakness = cwd.parents.index(path)
if result_weakness is None or result_weakness > weakness:
result_identity = identity_obj
result_identity_key = identity[9:]
result_path = identity_obj['path' + str(i)]
result_weakness = weakness
i += 1
if result_identity is not None:
raise StopIteration
for identity in identities.sections():
identity_obj = identities[identity]
i = 1
while 'keyword' + str(i) in identity_obj:
if identity_obj['keyword' + str(i)] in str(cwd):
result_identity = identity_obj
result_identity_key = identity[9:]
result_keyword = identity_obj['keyword' + str(i)]
raise StopIteration
i += 1
except StopIteration:
pass

if result_identity_key is None:
result = find_identity(Path.cwd(), identities)
if result.identity_key is None:
print(Colors.red + "No automatic identity was found." + Colors.default)
return 1

line = 'Selected ' + Colors.bold + result_identity_key + Colors.default + ' based on '
if result_keyword is not None:
line += 'keyword "%s".' % result_keyword
elif result_path is not None:
line += 'path "%s" with weakness %s.' % (result_path, result_weakness)
line = 'Selected ' + Colors.bold + result.identity_key + Colors.default + ' based on '
if result.keyword is not None:
line += 'keyword "%s".' % result.keyword
elif result.path is not None:
line += 'path "%s" with weakness %s.' % (result.path, result.weakness)
print(line)

identity_obj = result_identity
identity_obj = result.identity
else:
if args.identity is None:
print(Colors.red + 'error: the following arguments are required: identity or -a' + Colors.default)
Expand Down

0 comments on commit 26837d1

Please sign in to comment.