Title: [284283] trunk/Tools
Revision
284283
Author
[email protected]
Date
2021-10-15 15:51:41 -0700 (Fri, 15 Oct 2021)

Log Message

[webkitscmpy] Allow repositories to define custom setup commands
https://bugs.webkit.org/show_bug.cgi?id=231345
<rdar://problem/83960249>

Reviewed by Dewei Zhu.

* Scripts/git-webkit: Define changelog conflict resolver.
* Scripts/libraries/webkitscmpy/setup.py: Add inspect2 as dependency, bump version.
* Scripts/libraries/webkitscmpy/webkitscmpy/__init__.py: Ditto.
* Scripts/libraries/webkitscmpy/webkitscmpy/program/__init__.py:
(main): Attempt to resolve additional_setup function.
* Scripts/libraries/webkitscmpy/webkitscmpy/program/setup.py:
(Setup.github): Invoke additional_setup function, if it exists.
(Setup.git): Ditto.

Modified Paths

Diff

Modified: trunk/Tools/ChangeLog (284282 => 284283)


--- trunk/Tools/ChangeLog	2021-10-15 22:41:44 UTC (rev 284282)
+++ trunk/Tools/ChangeLog	2021-10-15 22:51:41 UTC (rev 284283)
@@ -1,3 +1,20 @@
+2021-10-15  Jonathan Bedard  <[email protected]>
+
+        [webkitscmpy] Allow repositories to define custom setup commands
+        https://bugs.webkit.org/show_bug.cgi?id=231345
+        <rdar://problem/83960249>
+
+        Reviewed by Dewei Zhu.
+
+        * Scripts/git-webkit: Define changelog conflict resolver.
+        * Scripts/libraries/webkitscmpy/setup.py: Add inspect2 as dependency, bump version.
+        * Scripts/libraries/webkitscmpy/webkitscmpy/__init__.py: Ditto.
+        * Scripts/libraries/webkitscmpy/webkitscmpy/program/__init__.py:
+        (main): Attempt to resolve additional_setup function.
+        * Scripts/libraries/webkitscmpy/webkitscmpy/program/setup.py:
+        (Setup.github): Invoke additional_setup function, if it exists.
+        (Setup.git): Ditto.
+
 2021-10-15  BJ Burg  <[email protected]>
 
         [Cocoa] Web Inspector: handle Promise objects returned from evaluateScriptInExtensionTab

Modified: trunk/Tools/Scripts/git-webkit (284282 => 284283)


--- trunk/Tools/Scripts/git-webkit	2021-10-15 22:41:44 UTC (rev 284282)
+++ trunk/Tools/Scripts/git-webkit	2021-10-15 22:51:41 UTC (rev 284283)
@@ -26,7 +26,8 @@
 import sys
 
 import webkitpy
-from webkitscmpy import local, program, remote
+from webkitcorepy import run
+from webkitscmpy import local, program, remote, Contributor, log
 
 
 def is_webkit_filter(to_return):
@@ -45,10 +46,30 @@
     return callback
 
 
+def additional_setup(args, repository):
+    if not isinstance(repository, local.Git):
+        return 0
+
+    log.warning('Setting merging behavior for changelogs...')
+    if run([
+        repository.executable(),
+        'config', 'merge.changelog.driver',
+        'perl {} --merge-driver -c %O %A %B'.format(os.path.join(
+            os.path.abspath(os.path.dirname(os.path.dirname(os.path.dirname(os.path.dirname(__file__))))),
+            'OpenSource', 'Tools', 'Scripts', 'resolve-ChangeLogs',
+        )),
+    ], capture_output=True, cwd=repository.root_path).returncode:
+        sys.stderr.write('Failed to set the git merging behaivor for changelogs...\n')
+        return 1
+    log.warning('Set merging behavior for changelogs!')
+    return 0
+
+
 if '__main__' == __name__:
     sys.exit(program.main(
         path=os.path.dirname(__file__),
         identifier_template=is_webkit_filter('Canonical link: https://commits.webkit.org/{}'),
         subversion=is_webkit_filter('https://svn.webkit.org/repository/webkit'),
+        additional_setup=is_webkit_filter(additional_setup),
     ))
 

Modified: trunk/Tools/Scripts/libraries/webkitscmpy/setup.py (284282 => 284283)


--- trunk/Tools/Scripts/libraries/webkitscmpy/setup.py	2021-10-15 22:41:44 UTC (rev 284282)
+++ trunk/Tools/Scripts/libraries/webkitscmpy/setup.py	2021-10-15 22:51:41 UTC (rev 284283)
@@ -29,7 +29,7 @@
 
 setup(
     name='webkitscmpy',
-    version='2.2.11',
+    version='2.2.12',
     description='Library designed to interact with git and svn repositories.',
     long_description=readme(),
     classifiers=[
@@ -58,7 +58,7 @@
         'webkitscmpy.test',
     ],
     scripts=['git-webkit'],
-    install_requires=['fasteners', 'monotonic', 'webkitcorepy', 'xmltodict'],
+    install_requires=['fasteners', 'inspect2', 'monotonic', 'webkitcorepy', 'xmltodict'],
     include_package_data=True,
     zip_safe=False,
 )

Modified: trunk/Tools/Scripts/libraries/webkitscmpy/webkitscmpy/__init__.py (284282 => 284283)


--- trunk/Tools/Scripts/libraries/webkitscmpy/webkitscmpy/__init__.py	2021-10-15 22:41:44 UTC (rev 284282)
+++ trunk/Tools/Scripts/libraries/webkitscmpy/webkitscmpy/__init__.py	2021-10-15 22:51:41 UTC (rev 284283)
@@ -46,7 +46,7 @@
         "Please install webkitcorepy with `pip install webkitcorepy --extra-index-url <package index URL>`"
     )
 
-version = Version(2, 2, 11)
+version = Version(2, 2, 12)
 
 AutoInstall.register(Package('fasteners', Version(0, 15, 0)))
 AutoInstall.register(Package('monotonic', Version(1, 5)))
@@ -53,6 +53,9 @@
 AutoInstall.register(Package('whichcraft', Version(0, 6, 1)))
 AutoInstall.register(Package('xmltodict', Version(0, 11, 0)))
 
+if sys.version_info < (3, 0):
+    AutoInstall.register(Package('inspect2', Version(0, 1, 2)))
+
 from webkitscmpy.contributor import Contributor
 from webkitscmpy.commit import Commit
 from webkitscmpy.pull_request import PullRequest

Modified: trunk/Tools/Scripts/libraries/webkitscmpy/webkitscmpy/program/__init__.py (284282 => 284283)


--- trunk/Tools/Scripts/libraries/webkitscmpy/webkitscmpy/program/__init__.py	2021-10-15 22:41:44 UTC (rev 284282)
+++ trunk/Tools/Scripts/libraries/webkitscmpy/webkitscmpy/program/__init__.py	2021-10-15 22:51:41 UTC (rev 284283)
@@ -42,7 +42,10 @@
 from webkitscmpy import local, log, remote
 
 
-def main(args=None, path=None, loggers=None, contributors=None, identifier_template=None, subversion=None):
+def main(
+    args=None, path=None, loggers=None, contributors=None,
+    identifier_template=None, subversion=None, additional_setup=None,
+):
     logging.basicConfig(level=logging.WARNING)
 
     loggers = [logging.getLogger(), webkitcorepy_log,  log] + (loggers or [])
@@ -110,6 +113,13 @@
     if callable(subversion):
         subversion = subversion(repository)
 
+    if sys.version_info > (3, 0):
+        import inspect
+    else:
+        import inspect2 as inspect
+    if callable(additional_setup) and list(inspect.signature(additional_setup).parameters.keys()) == ['repository']:
+        additional_setup = additional_setup(repository)
+
     if not getattr(parsed, 'main', None):
         parser.print_help()
         return -1
@@ -119,4 +129,5 @@
         repository=repository,
         identifier_template=identifier_template,
         subversion=subversion,
+        additional_setup=additional_setup,
     )

Modified: trunk/Tools/Scripts/libraries/webkitscmpy/webkitscmpy/program/setup.py (284282 => 284283)


--- trunk/Tools/Scripts/libraries/webkitscmpy/webkitscmpy/program/setup.py	2021-10-15 22:41:44 UTC (rev 284282)
+++ trunk/Tools/Scripts/libraries/webkitscmpy/webkitscmpy/program/setup.py	2021-10-15 22:51:41 UTC (rev 284283)
@@ -34,11 +34,16 @@
     help = 'Configure local settings for the current repository'
 
     @classmethod
-    def github(cls, args, repository, **kwargs):
+    def github(cls, args, repository, additional_setup=None, **kwargs):
         log.warning('Saving GitHub credentials in system credential store...')
         username, access_token = repository.credentials(required=True)
         log.warning('GitHub credentials saved via Keyring!')
 
+        # Any additional setup passed to main
+        result = 0
+        if additional_setup:
+            result += additional_setup(args, repository)
+
         log.warning('Verifying user owned fork...')
         auth = HTTPBasicAuth(username, access_token)
         response = requests.get('{}/repos/{}/{}'.format(
@@ -48,7 +53,7 @@
         ), auth=auth, headers=dict(Accept='application/vnd.github.v3+json'))
         if response.status_code == 200:
             log.warning("User already owns a fork of '{}'!".format(repository.name))
-            return 0
+            return result
 
         if repository.owner == username or args.defaults or Terminal.choose(
             "Create a private fork of '{}' belonging to '{}'".format(repository.name, username),
@@ -70,10 +75,10 @@
             sys.stderr.write("Failed to create a fork of '{}' belonging to '{}'\n".format(repository.name, username))
             return 1
         log.warning("Created a private fork of '{}' belonging to '{}'!".format(repository.name, username))
-        return 0
+        return result
 
     @classmethod
-    def git(cls, args, repository, **kwargs):
+    def git(cls, args, repository, additional_setup=None, **kwargs):
         global_config = local.Git.config()
         result = 0
 
@@ -160,6 +165,10 @@
         else:
             log.warning("Set git editor to '{}'".format(editor_name))
 
+        # Any additional setup passed to main
+        if additional_setup:
+            result += additional_setup(args, repository)
+
         # Only configure GitHub if the URL is a GitHub URL
         rmt = repository.remote()
         if not isinstance(rmt, remote.GitHub):
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to