Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions .github/workflows/ci.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@ jobs:
test:
name: Test
uses: ./.github/workflows/test.yaml
secrets: inherit
tag:
name: Tag
timeout-minutes: 2
Expand Down
1 change: 1 addition & 0 deletions .github/workflows/pr.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -9,3 +9,4 @@ jobs:
test:
name: Test
uses: ./.github/workflows/test.yaml
secrets: inherit
2 changes: 1 addition & 1 deletion poetry.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

10 changes: 5 additions & 5 deletions src/git_draft/__main__.py
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@
ensure_state_home,
open_editor,
)
from .manager import Manager
from .drafter import Drafter
from .prompt import TemplatedPrompt
from .store import Store

Expand Down Expand Up @@ -113,7 +113,7 @@ def main() -> None:
return
logging.basicConfig(level=config.log_level, filename=str(log_path))

manager = Manager.create(
drafter = Drafter.create(
store=Store.persistent(),
path=opts.root,
operation_hook=print_operation,
Expand All @@ -140,13 +140,13 @@ def main() -> None:
else:
prompt = sys.stdin.read()

manager.generate_draft(
drafter.generate_draft(
prompt, bot, checkout=opts.checkout, reset=opts.reset
)
elif command == "finalize":
manager.finalize_draft(delete=opts.delete)
drafter.finalize_draft(delete=opts.delete)
elif command == "discard":
manager.discard_draft(delete=opts.delete)
drafter.discard_draft(delete=opts.delete)
else:
raise UnreachableError()

Expand Down
6 changes: 3 additions & 3 deletions src/git_draft/manager.py → src/git_draft/drafter.py
Original file line number Diff line number Diff line change
Expand Up @@ -84,8 +84,8 @@ def _write(self, path: PurePosixPath, contents: str) -> None:
)


class Manager:
"""Draft state manager"""
class Drafter:
"""Draft state orchestrator"""

def __init__(
self, store: Store, repo: git.Repo, hook: OperationHook | None = None
Expand All @@ -102,7 +102,7 @@ def create(
store: Store,
path: str | None = None,
operation_hook: OperationHook | None = None,
) -> Manager:
) -> Drafter:
return cls(
store,
git.Repo(path, search_parent_directories=True),
Expand Down
30 changes: 15 additions & 15 deletions tests/git_draft/manager_test.py → tests/git_draft/drafter_test.py
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@
import pytest

from git_draft.bots import Action, Bot, Toolbox
import git_draft.manager as sut
import git_draft.drafter as sut
from git_draft.store import Store


Expand All @@ -15,27 +15,27 @@ def act(self, prompt: str, toolbox: Toolbox) -> Action:


@pytest.fixture
def manager(repo: git.Repo) -> sut.Manager:
return sut.Manager(Store.in_memory(), repo)
def drafter(repo: git.Repo) -> sut.Drafter:
return sut.Drafter(Store.in_memory(), repo)


class TestManager:
class TestDrafter:
def test_generate_draft(
self, manager: sut.Manager, repo: git.Repo
self, drafter: sut.Drafter, repo: git.Repo
) -> None:
manager.generate_draft("hello", _FakeBot())
drafter.generate_draft("hello", _FakeBot())
commits = list(repo.iter_commits())
assert len(commits) == 2

def test_generate_then_discard_draft(
self, manager: sut.Manager, repo: git.Repo
self, drafter: sut.Drafter, repo: git.Repo
) -> None:
manager.generate_draft("hello", _FakeBot())
manager.discard_draft()
drafter.generate_draft("hello", _FakeBot())
drafter.discard_draft()
assert len(list(repo.iter_commits())) == 1

def test_discard_restores_worktree(
self, manager: sut.Manager, repo: git.Repo
self, drafter: sut.Drafter, repo: git.Repo
) -> None:
p1 = osp.join(repo.working_dir, "p1.txt")
with open(p1, "w") as writer:
Expand All @@ -44,29 +44,29 @@ def test_discard_restores_worktree(
with open(p2, "w") as writer:
writer.write("b1")

manager.generate_draft("hello", _FakeBot(), sync=True)
drafter.generate_draft("hello", _FakeBot(), sync=True)
with open(p1, "w") as writer:
writer.write("a2")

manager.discard_draft()
drafter.discard_draft()

with open(p1) as reader:
assert reader.read() == "a1"
with open(p2) as reader:
assert reader.read() == "b1"

def test_finalize_keeps_changes(
self, manager: sut.Manager, repo: git.Repo
self, drafter: sut.Drafter, repo: git.Repo
) -> None:
p1 = osp.join(repo.working_dir, "p1.txt")
with open(p1, "w") as writer:
writer.write("a1")

manager.generate_draft("hello", _FakeBot(), checkout=True)
drafter.generate_draft("hello", _FakeBot(), checkout=True)
with open(p1, "w") as writer:
writer.write("a2")

manager.finalize_draft()
drafter.finalize_draft()

with open(p1) as reader:
assert reader.read() == "a2"
Expand Down