setdep: Add support for variables when setting CIPD vars.
Bug: 914712
Change-Id: I13db57af519bb254389bc6bd1f1f81ad1d497e42
Reviewed-on: https://chromium-review.googlesource.com/c/1377295
Commit-Queue: Edward Lesmes <ehmaldonado@chromium.org>
Reviewed-by: Andrii Shyshkalov <tandrii@chromium.org>
diff --git a/gclient_eval.py b/gclient_eval.py
index 602190b..549ac08 100644
--- a/gclient_eval.py
+++ b/gclient_eval.py
@@ -22,6 +22,9 @@
def __str__(self):
return str({k: v[0] for k, v in self.data.iteritems()})
+ def __repr__(self):
+ return self.__str__()
+
def __getitem__(self, key):
return self.data[key][0]
@@ -712,6 +715,15 @@
gclient_dict['vars'].SetNode(var_name, value, node)
+def _GetVarName(node):
+ if isinstance(node, ast.Call):
+ return node.args[0].s
+ elif node.s.endswith('}'):
+ last_brace = node.s.rfind('{')
+ return node.s[last_brace+1:-1]
+ return None
+
+
def SetCIPD(gclient_dict, dep_name, package_name, new_version):
if not isinstance(gclient_dict, _NodeDict) or gclient_dict.tokens is None:
raise ValueError(
@@ -741,19 +753,20 @@
"The deps entry for %s:%s has no formatting information." %
(dep_name, package_name))
- _UpdateAstString(tokens, node, new_version)
- packages[0].SetNode('version', new_version, node)
+ if not isinstance(node, ast.Call) and not isinstance(node, ast.Str):
+ raise ValueError(
+ "Unsupported dependency revision format. Please file a bug to the "
+ "Infra>SDK component in monorail.")
+
+ var_name = _GetVarName(node)
+ if var_name is not None:
+ SetVar(gclient_dict, var_name, new_version)
+ else:
+ _UpdateAstString(tokens, node, new_version)
+ packages[0].SetNode('version', new_version, node)
def SetRevision(gclient_dict, dep_name, new_revision):
- def _GetVarName(node):
- if isinstance(node, ast.Call):
- return node.args[0].s
- elif node.s.endswith('}'):
- last_brace = node.s.rfind('{')
- return node.s[last_brace+1:-1]
- return None
-
def _UpdateRevision(dep_dict, dep_key, new_revision):
dep_node = dep_dict.GetNode(dep_key)
if dep_node is None:
@@ -766,7 +779,8 @@
if not isinstance(node, ast.Call) and not isinstance(node, ast.Str):
raise ValueError(
- "Unsupported dependency revision format. Please file a bug.")
+ "Unsupported dependency revision format. Please file a bug to the "
+ "Infra>SDK component in monorail.")
var_name = _GetVarName(node)
if var_name is not None: