Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(136)

Unified Diff: third_party/WebKit/Tools/Scripts/webkitpy/thirdparty/wpt/wpt/tools/manifest/vcs.py

Issue 2630493002: Use a pinned version of web-platform-tests/manifest. (Closed)
Patch Set: Created 3 years, 11 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: third_party/WebKit/Tools/Scripts/webkitpy/thirdparty/wpt/wpt/tools/manifest/vcs.py
diff --git a/third_party/WebKit/Tools/Scripts/webkitpy/thirdparty/wpt/wpt/tools/manifest/vcs.py b/third_party/WebKit/Tools/Scripts/webkitpy/thirdparty/wpt/wpt/tools/manifest/vcs.py
new file mode 100644
index 0000000000000000000000000000000000000000..010bce81a9cc57827e9bb7a51cd1d19454ce7971
--- /dev/null
+++ b/third_party/WebKit/Tools/Scripts/webkitpy/thirdparty/wpt/wpt/tools/manifest/vcs.py
@@ -0,0 +1,91 @@
+import os
+import subprocess
+
+from .sourcefile import SourceFile
+
+
+class Git(object):
+ def __init__(self, repo_root, url_base):
+ self.root = os.path.abspath(repo_root)
+ self.git = Git.get_func(repo_root)
+ self.url_base = url_base
+
+ @staticmethod
+ def get_func(repo_path):
+ def git(cmd, *args):
+ full_cmd = ["git", cmd] + list(args)
+ return subprocess.check_output(full_cmd, cwd=repo_path, stderr=subprocess.STDOUT)
+ return git
+
+ @classmethod
+ def for_path(cls, path, url_base):
+ git = Git.get_func(path)
+ try:
+ return cls(git("rev-parse", "--show-toplevel").rstrip(), url_base)
+ except subprocess.CalledProcessError:
+ return None
+
+ def _local_changes(self):
+ changes = {}
+ cmd = ["status", "-z", "--ignore-submodules=all"]
+ data = self.git(*cmd)
+
+ if data == "":
+ return changes
+
+ rename_data = None
+ for entry in data.split("\0")[:-1]:
+ if rename_data is not None:
+ status, rel_path = entry.split(" ")
+ if status[0] == "R":
+ rename_data = (rel_path, status)
+ else:
+ changes[rel_path] = (status, None)
+ else:
+ rel_path = entry
+ changes[rel_path] = rename_data
+ rename_data = None
+ return changes
+
+ def _show_file(self, path):
+ path = os.path.relpath(os.path.abspath(path), self.root)
+ return self.git("show", "HEAD:%s" % path)
+
+ def __iter__(self):
+ cmd = ["ls-tree", "-r", "-z", "--name-only", "HEAD"]
+ local_changes = self._local_changes()
+ for rel_path in self.git(*cmd).split("\0")[:-1]:
+ if not os.path.isdir(os.path.join(self.root, rel_path)):
+ if rel_path in local_changes:
+ contents = self._show_file(rel_path)
+ else:
+ contents = None
+ yield SourceFile(self.root,
+ rel_path,
+ self.url_base,
+ contents=contents)
+
+
+class FileSystem(object):
+ def __init__(self, root, url_base):
+ self.root = root
+ self.url_base = url_base
+ from gitignore import gitignore
+ self.path_filter = gitignore.PathFilter(self.root)
+
+ def __iter__(self):
+ is_root = True
+ for dir_path, dir_names, filenames in os.walk(self.root):
+ rel_root = os.path.relpath(dir_path, self.root)
+
+ if is_root:
+ dir_names[:] = [item for item in dir_names if item not in
+ ["tools", "resources", ".git"]]
+ is_root = False
+
+ for filename in filenames:
+ rel_path = os.path.join(rel_root, filename)
+ if self.path_filter(rel_path):
+ yield SourceFile(self.root,
+ rel_path,
+ self.url_base)

Powered by Google App Engine
This is Rietveld 408576698