WAKAYAMA shirou avatar WAKAYAMA shirou committed 6bfd6fc

add 'path' option which restricts commits.

Comments (0)

Files changed (1)

sphinxcontrib/hg_changelog.py

 class HgChangeLog(Directive):
     has_content = True
     required_arguments = 0
-    optional_arguments = 3
+    optional_arguments = 4
     final_argument_whitespace = False
     option_spec = {
         'max_commits': directives.positive_int,
         'repo_root_path': directives.unchanged_required,
-        'branch': directives.unchanged_required
+        'branch': directives.unchanged_required,
+        'path': directives.unchanged_required
     }
     
     def run(self):
         if 'branch' in self.options:
             branch = self.options['branch']
 
+        path = None
+        if 'path' in self.options:
+            path = self.options['path']
+
         for commit in commits[:max_commits]:
             ctx = repo.changectx(commit)
             if ctx.branch() != branch:
                 continue
+            if self.is_file_in_path(ctx.files(), path) is False:
+                continue
             item = nodes.list_item()
             item += [ nodes.strong(text=ctx.description()),
                       nodes.inline(text=" by "),
             l.append(item)
         return [l]
 
+    def is_file_in_path(self, files, path):
+        '''Check files contain some file in specified path'''
+        if path is None:
+            return True
+        for f in files:
+            if f.startswith(path):
+                return True
+        return False
+
 def setup(app):
     app.add_directive('hg_changelog', HgChangeLog)
Tip: Filter by directory path e.g. /media app.js to search for public/media/app.js.
Tip: Use camelCasing e.g. ProjME to search for ProjectModifiedEvent.java.
Tip: Filter by extension type e.g. /repo .js to search for all .js files in the /repo directory.
Tip: Separate your search with spaces e.g. /ssh pom.xml to search for src/ssh/pom.xml.
Tip: Use ↑ and ↓ arrow keys to navigate and return to view the file.
Tip: You can also navigate files with Ctrl+j (next) and Ctrl+k (previous) and view the file with Ctrl+o.
Tip: You can also navigate files with Alt+j (next) and Alt+k (previous) and view the file with Alt+o.