Skip to content

Commit cfd0dc2

Browse files
authored
👌 IMPROVE: since/until: assume git reference, fallback to datetime
1 parent 60c7f06 commit cfd0dc2

File tree

4 files changed

+37
-13
lines changed

4 files changed

+37
-13
lines changed

github_activity/cli.py

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
import sys
44

55
from .github_activity import generate_activity_md
6+
from .git import _git_installed_check
67

78
DESCRIPTION = "Generate a markdown changelog of GitHub activity within a date window."
89
parser = argparse.ArgumentParser(description=DESCRIPTION)
@@ -83,6 +84,10 @@
8384

8485

8586
def main():
87+
if not _git_installed_check():
88+
print("git is required to run github-activity")
89+
sys.exit(1)
90+
8691
args = parser.parse_args(sys.argv[1:])
8792
tags = args.tags.split(",") if args.tags is not None else args.tags
8893
md = generate_activity_md(

github_activity/git.py

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
import subprocess
2+
3+
def _git_installed_check():
4+
cmd = ["git", "--help"]
5+
try:
6+
subprocess.check_call(cmd, stdout=subprocess.DEVNULL, stderr=subprocess.DEVNULL)
7+
return True
8+
except subprocess.CalledProcessError:
9+
return False
10+
11+
12+
def _valid_git_reference_check(git_ref):
13+
cmd = ["git", "rev-parse", "--verify", git_ref]
14+
try:
15+
subprocess.check_call(cmd, stdout=subprocess.DEVNULL, stderr=subprocess.DEVNULL)
16+
return True
17+
except subprocess.CalledProcessError:
18+
return False

github_activity/github_activity.py

Lines changed: 13 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -3,9 +3,11 @@
33
import dateutil
44
import pytz
55
import requests
6+
import sys
67
import urllib
78
from pathlib import Path
89

10+
from .git import _valid_git_reference_check
911
from .graphql import GitHubGraphQlQuery
1012
from .cache import _cache_data
1113
import pandas as pd
@@ -475,22 +477,21 @@ def _parse_target(target):
475477

476478

477479
def _get_datetime_and_type(org, repo, datetime_or_git_ref):
478-
"""Return a datetime object and bool."""
480+
"""Return a datetime object and bool indicating if it is a git reference or
481+
not."""
479482

480-
is_git_ref = False
483+
# Default a blank datetime_or_git_ref to current UTC time, which makes sense
484+
# to set the until flags default value.
481485
if datetime_or_git_ref is None:
482486
dt = datetime.datetime.now().astimezone(pytz.utc)
487+
return (dt, False)
488+
489+
if _valid_git_reference_check(datetime_or_git_ref):
490+
dt = _get_datetime_from_git_ref(org, repo, datetime_or_git_ref)
491+
return (dt, True)
483492
else:
484-
try:
485-
dt = dateutil.parser.parse(datetime_or_git_ref)
486-
except ValueError as e:
487-
if repo:
488-
dt = _get_datetime_from_git_ref(org, repo, datetime_or_git_ref)
489-
is_git_ref = True
490-
else:
491-
raise e
492-
493-
return dt, is_git_ref
493+
dt = dateutil.parser.parse(datetime_or_git_ref)
494+
return (dt, False)
494495

495496

496497
def _get_datetime_from_git_ref(org, repo, ref):

setup.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@
1919
name="github_activity",
2020
version=version,
2121
include_package_data=True,
22-
python_requires=">=3.4",
22+
python_requires=">=3.6",
2323
author="Chris Holdgraf",
2424
author_email="choldgraf@berkeley.edu",
2525
url="https://jupyter.org/",

0 commit comments

Comments
 (0)