Script to help create new page sets for the RecreateSKPs bot

NoTry: true
Bug: skia:8899
Change-Id: I5154edab19e3f5080dcff53c0c54738a60c2b9fd
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/202950
Commit-Queue: Ravi Mistry <rmistry@google.com>
Reviewed-by: Eric Boren <borenet@google.com>
diff --git a/tools/skp/generate_page_set.py b/tools/skp/generate_page_set.py
new file mode 100644
index 0000000..3ca71ba
--- /dev/null
+++ b/tools/skp/generate_page_set.py
@@ -0,0 +1,50 @@
+#!/usr/bin/env python
+# Copyright (c) 2019 The Chromium Authors. All rights reserved.
+# Use of this source code is governed by a BSD-style license that can be
+# found in the LICENSE file.
+
+"""Script that generates a page_set for the webpages_playback.py script."""
+
+import jinja2
+import os
+
+
+PAGE_SET_TEMPLATE = 'page_set_template'
+PAGE_SET_DIR = 'page_sets'
+
+
+def main():
+  created_page_sets = []
+  while True:
+    user_agent = raw_input('user agent? (mobile/desktop/tablet): ')
+    url_name = raw_input('URL name? (eg: google): ')
+    url = raw_input('URL? (eg: http://www.google.com): ')
+    comment = raw_input('Reason for adding the URL? (eg: go/skia-skps-3-2019): ')
+
+    with open(PAGE_SET_TEMPLATE) as f:
+      t = jinja2.Template(f.read())
+    subs = {
+      'user_agent': user_agent,
+      'url_name': url_name,
+      'url': url,
+      'comment': comment,
+    }
+
+    page_set_name = 'skia_%s_%s.py' % (url_name, user_agent)
+    page_set_path = os.path.join(PAGE_SET_DIR, page_set_name)
+    with open(page_set_path, 'w') as f:
+      f.write(t.render(**subs))
+    created_page_sets.append(page_set_path)
+    print '\nPage set has been created in %s\n\n' % page_set_path
+
+    keep_going = raw_input('Do you have more page sets to create? (y/n)')
+    if keep_going != 'y':
+      break
+
+  print '\n\nSummarizing all created page sets:'
+  for page_set_path in created_page_sets:
+    print '* %s' % page_set_path
+
+
+if __name__ == '__main__':
+  main()
diff --git a/tools/skp/page_set_template b/tools/skp/page_set_template
new file mode 100644
index 0000000..d0d01cf
--- /dev/null
+++ b/tools/skp/page_set_template
@@ -0,0 +1,40 @@
+# Copyright 2019 The Chromium Authors. All rights reserved.
+# Use of this source code is governed by a BSD-style license that can be
+# found in the LICENSE file.
+# pylint: disable=W0401,W0614
+
+
+from telemetry import story
+from telemetry.page import page as page_module
+from telemetry.page import shared_page_state
+
+
+class Skia{{ user_agent|capitalize }}Page(page_module.Page):
+
+  def __init__(self, url, page_set):
+    super(Skia{{ user_agent|capitalize }}Page, self).__init__(
+        url=url,
+        name=url,
+        page_set=page_set,
+        shared_page_state_class=shared_page_state.Shared{{ user_agent|capitalize }}PageState)
+    self.archive_data_file = 'data/skia_{{url_name}}_{{user_agent}}.json'
+
+  def RunNavigateSteps(self, action_runner):
+    action_runner.Navigate(self.url)
+    action_runner.Wait(15)
+
+
+class Skia{{ url_name|capitalize }}{{ user_agent|capitalize }}PageSet(story.StorySet):
+  """ Pages designed to represent the median, not highly optimized web """
+
+  def __init__(self):
+    super(Skia{{ url_name|capitalize }}{{ user_agent|capitalize }}PageSet, self).__init__(
+      archive_data_file='data/skia_{{url_name}}_{{user_agent}}.json')
+
+    urls_list = [
+      # {{comment}}
+      '{{url}}',
+    ]
+
+    for url in urls_list:
+      self.AddStory(Skia{{ user_agent|capitalize }}Page(url, self))