]> git.phdru.name Git - cookiecutter.git/commitdiff
Fix(mk-project): `sed` requires `s` for substitute master
authorOleg Broytman <phd@phdru.name>
Sat, 24 Dec 2022 15:58:54 +0000 (18:58 +0300)
committerOleg Broytman <phd@phdru.name>
Sat, 24 Dec 2022 15:58:54 +0000 (18:58 +0300)
13 files changed:
mk-project
move-project
project_template/.github/workflows/test-publish.yaml [new file with mode: 0644]
project_template/.gitignore
project_template/.travis.yml [deleted file]
project_template/appveyor.yml [deleted file]
project_template/devscripts/requirements/requirements_docs.txt
project_template/devscripts/requirements/requirements_tests.txt
project_template/devscripts/requirements/requirements_tox.txt
project_template/devscripts/run_with_env.cmd [moved from project_template/run_with_env.cmd with 100% similarity]
project_template/setup.py
project_template/tox.ini
publish2web

index 4674ef0c67d40ab65612eff12d08965bc813203a..788ddbec1779257f68c8ec1fed7ac61385fe359e 100755 (executable)
@@ -1,6 +1,6 @@
 #! /bin/sh
 
-if [ -z "$1" -o -n "$2" ]; then
+if [ $# -ne 1 ]; then
    echo "Usage: $0 project_name" >&2
    exit 1
 fi
@@ -14,7 +14,7 @@ cp -ap project_template "$HOME/tmp/$project_name" &&
 cd "$HOME/tmp/$project_name" &&
 mv project "$project_name" &&
 
-sed -i /'{project}'/"$project_name"/g .gitignore README.rst \
+sed -i s/'{project}'/"$project_name"/g .gitignore README.rst \
    devscripts/README.html  docs/genapidocs docs/install.rst \
    mk-distr publish-docs setup.py tox.ini &&
 
index 72f747570a02b446c9d0a5649a84a56167d8615d..2e7dba1029fc5cd7ee97e447d1a610145e024f47 100755 (executable)
@@ -1,6 +1,6 @@
 #! /bin/sh
 
-if [ -z "$1" -o -n "$2" ]; then
+if [ $# -ne 1 ]; then
    echo "Usage: $0 project_name" >&2
    exit 1
 fi
diff --git a/project_template/.github/workflows/test-publish.yaml b/project_template/.github/workflows/test-publish.yaml
new file mode 100644 (file)
index 0000000..5c4ae12
--- /dev/null
@@ -0,0 +1,105 @@
+name: Test, build, publish
+
+# Run tests (all branches),
+# for tags build wheels, publish wheels to PyPI and Github Releases.
+
+on: [push, pull_request]
+
+jobs:
+  run-tests:
+    env:
+      not_in_conda: "['3.11', 'pypy-3.7']"
+
+    strategy:
+      matrix:
+        os: [ubuntu-latest, macos-11, windows-latest]
+        python-version: ["2.7", "3.5", "3.6", "3.7", "3.8", "3.9", "3.10", "3.11", "pypy-3.7"]
+        include:
+        - os: ubuntu-latest
+          os-name: Linux
+          pip-cache-path: ~/.cache/pip
+        - os: macos-11
+          os-name: MacOS
+          pip-cache-path: ~/Library/Caches/pip
+        - os: windows-latest
+          os-name: w32
+          pip-cache-path: ~\AppData\Local\pip\Cache
+
+    name: Python ${{ matrix.python-version }} @ ${{ matrix.os-name }}
+    runs-on: ${{ matrix.os }}
+
+    steps:
+
+      # Setup Python/pip
+      - uses: s-weigand/setup-conda@v1
+        with:
+          python-version: ${{ matrix.python-version }}
+        if: ${{ runner.os == 'Linux' && !contains(fromJSON(env.not_in_conda), matrix.python-version) }}
+      - uses: actions/setup-python@v4
+        with:
+          python-version: ${{ matrix.python-version }}
+        if: ${{ runner.os != 'Linux' || contains(fromJSON(env.not_in_conda), matrix.python-version) }}
+      - name: Cache pip
+        uses: actions/cache@v3
+        with:
+          path: ${{ matrix.pip-cache-path }}
+          key: ${{ runner.os }}-pip
+
+      # Setup tox
+      - name: Install dependencies
+        run: |
+          python --version
+          python -m pip install --upgrade pip setuptools wheel
+          pip --version
+          pip install --upgrade virtualenv tox
+      - name: Set TOXENV
+        run: |
+          import os, sys
+          ld_library_path = None
+          if hasattr(sys, 'pypy_version_info'):
+            toxenv = 'pypy3'
+          else:
+            pyver = '%d%d' % tuple(sys.version_info[:2])
+            if os.name == 'posix':
+              if pyver == '27':  # Python 2.7 on Linux requires `$LD_LIBRARY_PATH`
+                ld_library_path = os.path.join(
+                  os.path.dirname(os.path.dirname(sys.executable)), 'lib')
+            toxenv = 'py%s' % pyver
+            if os.name == 'posix':
+              toxenv += ',py%s-flake8' % pyver
+          with open(os.environ['GITHUB_ENV'], 'a') as f:
+            if ld_library_path:
+              f.write('LD_LIBRARY_PATH=' + ld_library_path + '\n')
+            f.write('TOXENV=' + toxenv + '\n')
+          print(toxenv)
+        shell: python
+
+      - name: Run tox
+        run: |
+          python -c "import os; print(os.environ['TOXENV'])"
+          tox --version
+          tox
+
+      - name: Build and publish wheel
+        run: |
+          pip install -U pip setuptools twine wheel
+          python setup.py bdist_wheel
+          twine upload --disable-progress-bar --skip-existing dist\*
+        if: ${{ startsWith(github.ref, 'refs/tags/') }}
+        env:
+          TWINE_USERNAME: ${{ secrets.TWINE_USERNAME }}
+          TWINE_PASSWORD: ${{ secrets.TWINE_PASSWORD }}
+      - name: Publish wheel to Releases
+        uses: ncipollo/release-action@v1
+        with:
+          artifacts: "dist/*"
+          allowUpdates: true
+          bodyFile: "LATEST-CHANGES.rst"
+          omitBodyDuringUpdate: true
+          omitNameDuringUpdate: true
+          omitPrereleaseDuringUpdate: true
+          prerelease: false
+          replacesArtifacts: false
+          skipIfReleaseExists: false
+          updateOnlyUnreleased: false
+        if: ${{ startsWith(github.ref, 'refs/tags/') }}
index 5af0001b4eeb02e82e8001a50da2d412e1ddc669..902ce3bdb93c303b27e6dc15099d902e95fd4c03 100644 (file)
@@ -4,8 +4,6 @@
 /build/
 /data/
 /dist/
-/htmlcov/
-/.coverage
 /MANIFEST
 *.py[co]
 *.tmp
diff --git a/project_template/.travis.yml b/project_template/.travis.yml
deleted file mode 100644 (file)
index c3d76aa..0000000
+++ /dev/null
@@ -1,39 +0,0 @@
-language: python
-
-python:
-  - "2.7"
-
-cache: pip
-
-matrix:
-  include:
-  - python: "2.7"
-    env: TOXENV=py27
-  - python: "3.4"
-    env: TOXENV=py34
-  - python: "3.5"
-    env: TOXENV=py35
-  - python: "3.6"
-    env: TOXENV=py36
-  - python: "3.7"
-    dist: xenial
-    env: TOXENV=py37
-  - python: "2.7"
-    env: TOXENV=py27-flake8
-  - python: "3.7"
-    dist: xenial
-    env: TOXENV=py37-flake8
-  - python: "pypy"
-    env: TOXENV=pypy
-
-  allow_failures:
-    - env: TOXENV=pypy
-
-install:
-  - travis_retry pip install --upgrade "pip < 19.1" setuptools tox ppu
-
-script:
-  - tox
-
-before_cache:
-  - remove-old-files.py -o 180 ~/.cache/pip
diff --git a/project_template/appveyor.yml b/project_template/appveyor.yml
deleted file mode 100644 (file)
index 4452853..0000000
+++ /dev/null
@@ -1,90 +0,0 @@
-# Test on windows
-# Heavily inspired by Oliver Grisel's appveyor-demo (https://github.com/ogrisel/python-appveyor-demo)
-version: '{branch}-{build}'
-
-cache:
-  - '%LOCALAPPDATA%\pip\Cache'
-
-# Match travis
-clone_depth: 50
-
-environment:
-  global:
-    # SDK v7.0 MSVC Express 2008's SetEnv.cmd script will fail if the
-    # /E:ON and /V:ON options are not enabled in the batch script intepreter
-    # See: http://stackoverflow.com/a/13751649/163740
-    CMD_IN_ENV: "cmd /E:ON /V:ON /C .\\run_with_env.cmd"
-
-  matrix:
-    - TOXENV: "py27"
-      PYTHON_VERSION: "2.7"
-      PYTHON_ARCH: "32"
-      PYTHON_HOME: "C:\\Python27"
-    - TOXENV: "py27"
-      PYTHON_VERSION: "2.7"
-      PYTHON_ARCH: "64"
-      PYTHON_HOME: "C:\\Python27-x64"
-    - TOXENV: "py34"
-      PYTHON_VERSION: "3.4"
-      PYTHON_ARCH: "32"
-      PYTHON_HOME: "C:\\Python34"
-    - TOXENV: "py34"
-      PYTHON_VERSION: "3.4"
-      PYTHON_ARCH: "64"
-      PYTHON_HOME: "C:\\Python34-x64"
-    - TOXENV: "py35"
-      PYTHON_VERSION: "3.5"
-      PYTHON_ARCH: "32"
-      PYTHON_HOME: "C:\\Python35"
-    - TOXENV: "py35"
-      PYTHON_VERSION: "3.5"
-      PYTHON_ARCH: "64"
-      PYTHON_HOME: "C:\\Python35-x64"
-    - TOXENV: "py36"
-      PYTHON_VERSION: "3.6"
-      PYTHON_ARCH: "32"
-      PYTHON_HOME: "C:\\Python36"
-    - TOXENV: "py36"
-      PYTHON_VERSION: "3.6"
-      PYTHON_ARCH: "64"
-      PYTHON_HOME: "C:\\Python36-x64"
-    - TOXENV: "py37"
-      PYTHON_VERSION: "3.7"
-      PYTHON_ARCH: "32"
-      PYTHON_HOME: "C:\\Python37"
-    - TOXENV: "py37"
-      PYTHON_VERSION: "3.7"
-      PYTHON_ARCH: "64"
-      PYTHON_HOME: "C:\\Python37-x64"
-
-install:
-  # Ensure we use the right python version
-  - "SET PATH=%PYTHON_HOME%;%PYTHON_HOME%\\Scripts;%PATH%"
-  - "SET TOXPYTHON=%PYTHON_HOME%\\python.exe"
-  - "python --version"
-  - "python -c \"import struct; print(struct.calcsize('P') * 8)\""
-  - "python -m pip install --upgrade \"pip < 19.1\" setuptools"
-  - "pip install --upgrade \"tox < 3.1\" ppu"
-  - "pip --version"
-
-# No build step - we don't have C extensions
-build: false
-
-test_script:
-  - "%CMD_IN_ENV% tox"
-
-#after_test:
-#  # If tests are successful and we've tested a tag, create binary package
-#  - if "%APPVEYOR_REPO_TAG%" == "true" (
-#      pip install --upgrade wheel &&
-#      %CMD_IN_ENV% python setup.py bdist_wheel &&
-#      ls dist
-#    )
-#  - remove-old-files.py -o 180 %LOCALAPPDATA%\\pip\\Cache
-#
-#artifacts:
-#  # Archive the generated packages in the ci.appveyor.com build report
-#  - path: dist\*
-
-after_test:
-  - "remove-old-files.py -o 180 %LOCALAPPDATA%\\pip\\Cache"
index 94d38eb803060de7380f72db1df4f12c5d7023af..e36ba63464e46eed787633e1aa61d3fd75f278bb 100644 (file)
@@ -1,3 +1,4 @@
 -r requirements.txt
 
-Sphinx
+Sphinx < 2.0; python_version == '2.7' or python_version == '3.4'
+Sphinx; python_version >= '3.5'
index ae7bbd9aa620dc94cf79faad149343e0b7d86568..68c6b861cd2e25b28368f6aa016414c31b95a77a 100644 (file)
@@ -1,4 +1,4 @@
 -r requirements.txt
 
-pytest < 5.0
-pytest-cov
+pytest < 5.0; python_version == '2.7' or python_version == '3.4'
+pytest < 7.0; python_version >= '3.5'
index 2978a0b78a93c2eda0e2b06ac89f66532301680f..8b5960b93a5d9ca54cf13a5426e9939b32c17780 100644 (file)
@@ -1 +1 @@
-tox >= 2.0, <= 2.9.1
+tox >= 3.15
index 8297efa6656c7c47a32c9c8d2f7051cf30a50c83..cff05a0995420a908edd581f85c4105a2d291b89 100755 (executable)
@@ -27,7 +27,7 @@ setup(
     name='{project}',
     version={project}_version.__version__,
     description='Broytman {project}',
-    long_description=open('README.rst', 'rU').read(),
+    long_description=open('README.rst', 'r').read(),
     long_description_content_type="text/x-rst",
     author='Oleg Broytman',
     author_email='phd@phdru.name',
@@ -61,6 +61,10 @@ setup(
         'Programming Language :: Python :: 3.5',
         'Programming Language :: Python :: 3.6',
         'Programming Language :: Python :: 3.7',
+        'Programming Language :: Python :: 3.8',
+        'Programming Language :: Python :: 3.9',
+        'Programming Language :: Python :: 3.10',
+        'Programming Language :: Python :: 3.11',
     ],
     packages=['{project}'],
     package_data={'{project}': []},
index f3eceaaf2ae278c6998c635539d38ce63bdf599b..827f97076c67d08f7152c3ba30bfdc8dead285af 100644 (file)
@@ -1,63 +1,25 @@
 [tox]
-minversion = 2.0
-toxworkdir={homedir}/.tox/{project}
-envlist = py27,py3{4,5,6,7},py{27,37}-flake8
+minversion = 3.15
+envlist = py27,py3{4,5,6,7,8,9,10,11},pypy,pypy3,py{27,36,311}-flake8
 
-# Base test environment settings
 [testenv]
-basepython =
-    py27: {env:TOXPYTHON:python2.7}
-    py34: {env:TOXPYTHON:python3.4}
-    py35: {env:TOXPYTHON:python3.5}
-    py36: {env:TOXPYTHON:python3.6}
-    py37: {env:TOXPYTHON:python3.7}
-    pypy: {env:TOXPYTHON:pypy}
 commands =
     {envpython} --version
     {envpython} -c "import struct; print(struct.calcsize('P') * 8)"
+    {envpython} -m pytest --version
+passenv = CI DISTUTILS_USE_SDK MSSdk INCLUDE LIB WINDIR
 deps =
     -rdevscripts/requirements/requirements_tests.txt
-platform = linux
-sitepackages = True
-# Don't fail or warn on uninstalled commands
-whitelist_externals =
-    flake8
-
-[general]
-commands =
-    {[testenv]commands}
-    python -m pytest --cov={project}
-
-[testenv:py27]
-commands =
-    {[general]commands}
-
-[testenv:py34]
-commands =
-    {[general]commands}
-
-[testenv:py35]
-commands =
-    {[general]commands}
-
-[testenv:py36]
-commands =
-    {[general]commands}
 
-[testenv:py37]
-commands =
-    {[general]commands}
-
-[testenv:py27-flake8]
-deps =
-    flake8
+[testenv:py{27,34,35,36,37,38,39,310,311,py,py3}]
 commands =
     {[testenv]commands}
-    flake8
+    {envpython} -m pytest
 
-[testenv:py37-flake8]
+[testenv:py{27,34,35,36,37,38,39,310,311}-flake8]
 deps =
     flake8
+    pytest < 7.0
 commands =
     {[testenv]commands}
-    flake8
+    flake8 .
index 1b7a6f9c3b00c79ec27e7cde93573772f49eac31..b0898f1fece84e3871872e0376a4f5d9cd1b5658 100755 (executable)
@@ -24,7 +24,7 @@ cd "$dest_dir" &&
 git gc --aggressive &&
 git repack -a -d -f --depth=20 --window=250 &&
 git fsck --strict &&
-git config receive.updateserverinfo true && git update-server-info &&
+git config receive.updateServerInfo true && git update-server-info &&
 cp -p "$HOME"/Internet/WWW/htdocs/git.phdru.name/phdru.name/phdru.name.git/git-daemon-export-ok . &&
 if [ "`cat \"$source_dir\"/.git/description`" = \
    "Unnamed repository; edit this file 'description' to name the repository." ]