Update contributing instructions

Given the pared down state of the the repository we must update the
contributing instructions to mirror the new state.
pull/113/head
Nicholas McDonnell 2 years ago
parent 4fede9f453
commit 4e79802a04
No known key found for this signature in database
GPG Key ID: 7994ADE2A56BE5D1
  1. 23
      CONTRIBUTING.md
  2. 190
      setup-env

@ -15,7 +15,7 @@ all of which should be in this repository.
If you want to report a bug or request a new feature, the most direct
method is to [create an
issue](https://github.com/cisagov/skeleton-generic/issues) in this
issue](https://github.com/cisagov/log4j-affected-db/issues) in this
repository. We recommend that you first search through existing
issues (both open and closed) to check if your particular issue has
already been reported. If it has then you might want to add a comment
@ -25,7 +25,7 @@ one.
## Pull requests ##
If you choose to [submit a pull
request](https://github.com/cisagov/skeleton-generic/pulls), you will
request](https://github.com/cisagov/log4j-affected-db/pulls), you will
notice that our continuous integration (CI) system runs a fairly
extensive set of linters and syntax checkers. Your pull request may
fail these checks, and that's OK. If you want you can stop there and
@ -46,17 +46,6 @@ There are a few ways to do this, but we prefer to use
create and manage a Python virtual environment specific to this
project.
If you already have `pyenv` and `pyenv-virtualenv` configured you can
take advantage of the `setup-env` tool in this repo to automate the
entire environment configuration process.
```console
./setup-env
```
Otherwise, follow the steps below to manually configure your
environment.
#### Installing and using `pyenv` and `pyenv-virtualenv` ####
On the Mac, we recommend installing [brew](https://brew.sh/). Then
@ -135,10 +124,10 @@ can create and configure the Python virtual environment with these
commands:
```console
cd skeleton-generic
pyenv virtualenv <python_version_to_use> skeleton-generic
pyenv local skeleton-generic
pip install --requirement requirements-dev.txt
cd log4j-affected-db
pyenv virtualenv <python_version_to_use> log4j-affected-db
pyenv local log4j-affected-db
pip install --upgrade pip setuptools wheel pre-commit
```
#### Installing the pre-commit hook ####

@ -1,190 +0,0 @@
#!/usr/bin/env bash
set -o nounset
set -o errexit
set -o pipefail
USAGE=$(
cat << 'END_OF_LINE'
Configure a development environment for this repository.
It does the following:
- Verifies pyenv and pyenv-virtualenv are installed.
- Creates a Python virtual environment.
- Configures the activation of the virtual enviroment for the repo directory.
- Installs the requirements needed for development.
- Installs git pre-commit hooks.
- Configures git upstream remote "lineage" repositories.
Usage:
setup-env [options] [virt_env_name]
setup-env (-h | --help)
Options:
-f --force Delete virtual enviroment if it already exists.
-h --help Show this message.
-i --install-hooks Install hook environments for all environments in the
pre-commit config file.
END_OF_LINE
)
# Flag to force deletion and creation of virtual environment
FORCE=0
# Positional parameters
PARAMS=""
# Parse command line arguments
while (("$#")); do
case "$1" in
-f | --force)
FORCE=1
shift
;;
-h | --help)
echo "${USAGE}"
exit 0
;;
-i | --install-hooks)
INSTALL_HOOKS=1
shift
;;
-*) # unsupported flags
echo "Error: Unsupported flag $1" >&2
exit 1
;;
*) # preserve positional arguments
PARAMS="$PARAMS $1"
shift
;;
esac
done
# set positional arguments in their proper place
eval set -- "$PARAMS"
# Check to see if pyenv is installed
if [ -z "$(command -v pyenv)" ] || [ -z "$(command -v pyenv-virtualenv)" ]; then
echo "pyenv and pyenv-virtualenv are required."
if [[ "$OSTYPE" == "darwin"* ]]; then
cat << 'END_OF_LINE'
On the Mac, we recommend installing brew, https://brew.sh/. Then installation
is as simple as `brew install pyenv pyenv-virtualenv` and adding this to your
profile:
eval "$(pyenv init -)"
eval "$(pyenv virtualenv-init -)"
END_OF_LINE
fi
cat << 'END_OF_LINE'
For Linux, Windows Subsystem for Linux (WSL), or on the Mac (if you don't want
to use "brew") you can use https://github.com/pyenv/pyenv-installer to install
the necessary tools. Before running this ensure that you have installed the
prerequisites for your platform according to the pyenv wiki page,
https://github.com/pyenv/pyenv/wiki/common-build-problems.
On WSL you should treat your platform as whatever Linux distribution you've
chosen to install.
Once you have installed "pyenv" you will need to add the following lines to
your ".bashrc":
export PATH="$PATH:$HOME/.pyenv/bin"
eval "$(pyenv init -)"
eval "$(pyenv virtualenv-init -)"
END_OF_LINE
exit 1
fi
set +o nounset
# Determine the virtual environment name
if [ "$1" ]; then
# Use the user-provided environment name
env_name=$1
else
# Set the environment name to the last part of the working directory.
env_name=${PWD##*/}
fi
set -o nounset
# Remove any lingering local configuration.
if [ $FORCE -ne 0 ]; then
rm -f .python-version
pyenv virtualenv-delete --force "${env_name}" || true
elif [[ -f .python-version ]]; then
cat << 'END_OF_LINE'
An existing .python-version file was found. Either remove this file yourself
or re-run with --force option to have it deleted along with the associated
virtual environment.
rm .python-version
END_OF_LINE
exit 1
fi
# Create a new virtual environment for this project
if ! pyenv virtualenv "${env_name}"; then
cat << END_OF_LINE
An existing virtual environment named $env_name was found. Either delete this
environment yourself or re-run with --force option to have it deleted.
pyenv virtualenv-delete ${env_name}
END_OF_LINE
exit 1
fi
# Set the local application-specific Python version(s) by writing the
# version name to a file named `.python-version'.
pyenv local "${env_name}"
# Upgrade pip and friends
python3 -m pip install --upgrade pip setuptools wheel
# Find a requirements file (if possible) and install
for req_file in "requirements-dev.txt" "requirements-test.txt" "requirements.txt"; do
if [[ -f $req_file ]]; then
pip install --requirement $req_file
break
fi
done
# Install git pre-commit hooks now or later.
pre-commit install ${INSTALL_HOOKS:+"--install-hooks"}
# Setup git remotes from lineage configuration
# This could fail if the remotes are already setup, but that is ok.
set +o errexit
eval "$(
python3 << 'END_OF_LINE'
from pathlib import Path
import yaml
import sys
LINEAGE_CONFIG = Path(".github/lineage.yml")
if not LINEAGE_CONFIG.exists():
print("No lineage configuration found.", file=sys.stderr)
sys.exit(0)
with LINEAGE_CONFIG.open("r") as f:
lineage = yaml.safe_load(stream=f)
if lineage["version"] == "1":
for parent_name, v in lineage["lineage"].items():
remote_url = v["remote-url"]
print(f"git remote add {parent_name} {remote_url};")
print(f"git remote set-url --push {parent_name} no_push;")
else:
print(f'Unsupported lineage version: {lineage["version"]}', file=sys.stderr)
END_OF_LINE
)"
# Qapla
echo "Success!"
Loading…
Cancel
Save