def git_update_ctx(source: Path, ctx: context.Context): "Update ctx from git" repo = Repo(source) head_commit = repo.head.commit # repo_config = repo.config_reader() ctx.update({ "project": { "url": repo.remotes.origin.url, # git remote get-url origin "name": repo.remotes.origin.url.rstrip('.git').rpartition("/")[-1], # git remote get-url origin | xargs basename -s .git "version": str(head_commit), # GIT_VERSION="$(git rev-list HEAD -n 1)" "branch": head_commit.name_rev.split(" ")[-1], # BRANCH="$(git name-rev --name-only HEAD)" "updated_date": head_commit.committed_date, "author": head_commit.author.name, # $(git config user.name) <$(git config user.email)> "author_email": head_commit.author.email, } })
class configuration: "Dict-like for config" def setup(self): self.c = Context(config={'foo': 'bar'}) def getitem(self): "___getitem__" eq_(self.c['foo'], 'bar') def get(self): eq_(self.c.get('foo'), 'bar') eq_(self.c.get('biz', 'baz'), 'baz') def keys(self): skip() def update(self): self.c.update({'newkey': 'newval'}) eq_(self.c['newkey'], 'newval')
class configuration_proxy: "Dict-like proxy for self.config" def setup(self): config = Config({'foo': 'bar'}) self.c = Context(config=config) def direct_access_allowed(self): eq_(self.c.config.__class__, Config) eq_(self.c.config['foo'], 'bar') eq_(self.c.config.foo, 'bar') def getitem(self): "___getitem__" eq_(self.c['foo'], 'bar') def getattr(self): "__getattr__" eq_(self.c.foo, 'bar') def get(self): eq_(self.c.get('foo'), 'bar') eq_(self.c.get('biz', 'baz'), 'baz') def keys(self): skip() def values(self): skip() def iter(self): "__iter__" skip() def update(self): self.c.update({'newkey': 'newval'}) eq_(self.c['newkey'], 'newval')