Skip to content
Snippets Groups Projects
  • Gregory Szorc's avatar
    081a77df7bc6
    packaging: consolidate CLI functionality into packaging.py · 081a77df7bc6
    Gregory Szorc authored
    Consolidating functionality for invoking code in the hgpackaging
    package through a single CLI entry point will make things simpler
    when we add more complexity to that package. For example, it will
    allow us to run things out of a virtualenv with third party
    packages.
    
    This commit consolidates functionality from the Inno and WiX
    build.py scripts into a new packaging.py script. That script
    simply creates a virtualenv and runs the CLI functionality in
    it.
    
    The new virtualenv is populated with jinja2 because I felt
    it easier to incorporate requirements file processing in this
    commit and we will soon use jinja2 in an upcoming commit.
    
    The unified CLI functionality will also make it easier to
    script other packaging workflows going forward. e.g. RPM, Debian,
    and macOS packaging.
    
    Differential Revision: https://phab.mercurial-scm.org/D7156
    081a77df7bc6
    History
    packaging: consolidate CLI functionality into packaging.py
    Gregory Szorc authored
    Consolidating functionality for invoking code in the hgpackaging
    package through a single CLI entry point will make things simpler
    when we add more complexity to that package. For example, it will
    allow us to run things out of a virtualenv with third party
    packages.
    
    This commit consolidates functionality from the Inno and WiX
    build.py scripts into a new packaging.py script. That script
    simply creates a virtualenv and runs the CLI functionality in
    it.
    
    The new virtualenv is populated with jinja2 because I felt
    it easier to incorporate requirements file processing in this
    commit and we will soon use jinja2 in an upcoming commit.
    
    The unified CLI functionality will also make it easier to
    script other packaging workflows going forward. e.g. RPM, Debian,
    and macOS packaging.
    
    Differential Revision: https://phab.mercurial-scm.org/D7156
test-check-code.t 3.12 KiB
#require test-repo

  $ . "$TESTDIR/helpers-testrepo.sh"
  $ check_code="$TESTDIR"/../contrib/check-code.py
  $ cd "$TESTDIR"/..

New errors are not allowed. Warnings are strongly discouraged.
(The writing "no-che?k-code" is for not skipping this file when checking.)

  $ testrepohg locate \
  > -X contrib/python-zstandard \
  > -X hgext/fsmonitor/pywatchman \
  > -X mercurial/thirdparty \
  > | sed 's-\\-/-g' | "$check_code" --warnings --per-file=0 - || false
  Skipping contrib/automation/hgautomation/__init__.py it has no-che?k-code (glob)
  Skipping contrib/automation/hgautomation/aws.py it has no-che?k-code (glob)
  Skipping contrib/automation/hgautomation/cli.py it has no-che?k-code (glob)
  Skipping contrib/automation/hgautomation/linux.py it has no-che?k-code (glob)
  Skipping contrib/automation/hgautomation/pypi.py it has no-che?k-code (glob)
  Skipping contrib/automation/hgautomation/ssh.py it has no-che?k-code (glob)
  Skipping contrib/automation/hgautomation/try_server.py it has no-che?k-code (glob)
  Skipping contrib/automation/hgautomation/windows.py it has no-che?k-code (glob)
  Skipping contrib/automation/hgautomation/winrm.py it has no-che?k-code (glob)
  Skipping contrib/packaging/hgpackaging/cli.py it has no-che?k-code (glob)
  Skipping contrib/packaging/hgpackaging/downloads.py it has no-che?k-code (glob)
  Skipping contrib/packaging/hgpackaging/inno.py it has no-che?k-code (glob)
  Skipping contrib/packaging/hgpackaging/py2exe.py it has no-che?k-code (glob)
  Skipping contrib/packaging/hgpackaging/util.py it has no-che?k-code (glob)
  Skipping contrib/packaging/hgpackaging/wix.py it has no-che?k-code (glob)
  Skipping i18n/polib.py it has no-che?k-code (glob)
  Skipping mercurial/statprof.py it has no-che?k-code (glob)
  Skipping tests/badserverext.py it has no-che?k-code (glob)

@commands in debugcommands.py should be in alphabetical order.

  >>> import re
  >>> commands = []
  >>> with open('mercurial/debugcommands.py', 'rb') as fh:
  ...     for line in fh:
  ...         m = re.match(br"^@command\('([a-z]+)", line)
  ...         if m:
  ...             commands.append(m.group(1))
  >>> scommands = list(sorted(commands))
  >>> for i, command in enumerate(scommands):
  ...     if command != commands[i]:
  ...         print('commands in debugcommands.py not sorted; first differing '
  ...               'command is %s; expected %s' % (commands[i], command))
  ...         break

Prevent adding new files in the root directory accidentally.

  $ testrepohg files 'glob:*'
  .arcconfig
  .clang-format
  .editorconfig
  .hgignore
  .hgsigs
  .hgtags
  .jshintrc
  CONTRIBUTING
  CONTRIBUTORS
  COPYING
  Makefile
  README.rst
  black.toml
  hg
  hgeditor
  hgweb.cgi
  setup.py