From a6a6ed008c105ca3886af4e35db6a2cd90e1eae6 Mon Sep 17 00:00:00 2001 From: Joe Kaufeld Date: Sat, 23 Jul 2022 00:43:38 -0400 Subject: [PATCH] try injecting version --- .github/workflows/build_and_release.yml | 10 ++- Makefile | 2 +- poetry.lock | 91 ++++++++++++++++++++----- pyproject.toml | 1 + src/commands/update.py | 22 ++++++ 5 files changed, 104 insertions(+), 22 deletions(-) create mode 100644 src/commands/update.py diff --git a/.github/workflows/build_and_release.yml b/.github/workflows/build_and_release.yml index d991627..9484e15 100644 --- a/.github/workflows/build_and_release.yml +++ b/.github/workflows/build_and_release.yml @@ -20,11 +20,15 @@ jobs: virtualenvs-create: true - name: Install Dependencies run: poetry install - - name: build the sucker - run: make build # https://stackoverflow.com/a/64195658 - name: Add SHORT_SHA env property with commit short sha - run: echo "SHORT_SHA=`echo ${GITHUB_SHA} | cut -c1-8`" >> $GITHUB_ENV + run: echo "SHORT_SHA=`echo ${GITHUB_SHA} | cut -c1-7`" >> $GITHUB_ENV + - name: Inject version + run: | + touch src/__version__.py + echo "__version__ = '${{ env.SHORT_SHA }}'" >> src/__version__.py + - name: build the sucker + run: make build - uses: ncipollo/release-action@v1 with: artifacts: "utils" diff --git a/Makefile b/Makefile index 57b5310..dab9ecd 100644 --- a/Makefile +++ b/Makefile @@ -7,4 +7,4 @@ clean: rm setup.py shiv: - .venv/bin/shiv -c utils -o utils . \ No newline at end of file + .venv/bin/shiv -c utils -o utils . diff --git a/poetry.lock b/poetry.lock index ed0e6f5..7cc7626 100644 --- a/poetry.lock +++ b/poetry.lock @@ -15,6 +15,27 @@ doc = ["packaging", "sphinx-rtd-theme", "sphinx-autodoc-typehints (>=1.2.0)"] test = ["coverage[toml] (>=4.5)", "hypothesis (>=4.0)", "pytest (>=7.0)", "pytest-mock (>=3.6.1)", "trustme", "contextlib2", "uvloop (<0.15)", "mock (>=4)", "uvloop (>=0.15)"] trio = ["trio (>=0.16)"] +[[package]] +name = "black" +version = "22.6.0" +description = "The uncompromising code formatter." +category = "dev" +optional = false +python-versions = ">=3.6.2" + +[package.dependencies] +click = ">=8.0.0" +mypy-extensions = ">=0.4.3" +pathspec = ">=0.9.0" +platformdirs = ">=2" +tomli = {version = ">=1.1.0", markers = "python_full_version < \"3.11.0a7\""} + +[package.extras] +colorama = ["colorama (>=0.4.3)"] +d = ["aiohttp (>=3.7.4)"] +jupyter = ["ipython (>=7.8.0)", "tokenize-rt (>=3.2.0)"] +uvloop = ["uvloop (>=0.15.2)"] + [[package]] name = "cachecontrol" version = "0.12.11" @@ -186,10 +207,10 @@ six = ">=1.9" webencodings = "*" [package.extras] -all = ["genshi", "chardet (>=2.2)", "lxml"] -chardet = ["chardet (>=2.2)"] -genshi = ["genshi"] lxml = ["lxml"] +genshi = ["genshi"] +chardet = ["chardet (>=2.2)"] +all = ["lxml", "chardet (>=2.2)", "genshi"] [[package]] name = "httpcore" @@ -282,6 +303,14 @@ category = "dev" optional = false python-versions = "*" +[[package]] +name = "mypy-extensions" +version = "0.4.3" +description = "Experimental type system extensions for programs checked with the mypy typechecker." +category = "dev" +optional = false +python-versions = "*" + [[package]] name = "packaging" version = "20.9" @@ -301,6 +330,14 @@ category = "dev" optional = false python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" +[[package]] +name = "pathspec" +version = "0.9.0" +description = "Utility library for gitignore style pattern matching of file paths." +category = "dev" +optional = false +python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,>=2.7" + [[package]] name = "pexpect" version = "4.8.0" @@ -502,6 +539,14 @@ category = "main" optional = false python-versions = ">=3.5" +[[package]] +name = "tomli" +version = "2.0.1" +description = "A lil' TOML parser" +category = "dev" +optional = false +python-versions = ">=3.7" + [[package]] name = "tomlkit" version = "0.11.1" @@ -552,13 +597,17 @@ python-versions = "*" [metadata] lock-version = "1.1" python-versions = "^3.10" -content-hash = "13926d7e3c4d3b55c28acf89091a2749015b8fad1dcd710543dc3cfbdb1bbaec" +content-hash = "6f1802f15f85c08e926dc13db45802e5c7bc863ab623d44a1c3b4b2dab1af7b1" [metadata.files] anyio = [] +black = [] cachecontrol = [] cachy = [] -certifi = [] +certifi = [ + {file = "certifi-2022.6.15-py3-none-any.whl", hash = "sha256:fe86415d55e84719d75f8b69414f6438ac3547d2078ab91b67e779ef69378412"}, + {file = "certifi-2022.6.15.tar.gz", hash = "sha256:84c85a9078b11105f04f3036a9482ae10e4621616db313fe045dd24743a0820d"}, +] cffi = [] charset-normalizer = [] cleo = [] @@ -567,19 +616,16 @@ click = [ {file = "click-8.1.3.tar.gz", hash = "sha256:7682dc8afb30297001674575ea00d1814d808d6a36af415a82bd481d37ba7b8e"}, ] clikit = [] -colorama = [] +colorama = [ + {file = "colorama-0.4.5-py2.py3-none-any.whl", hash = "sha256:854bf444933e37f5824ae7bfc1e98d5bce2ebe4160d46b5edf346a89358e99da"}, + {file = "colorama-0.4.5.tar.gz", hash = "sha256:e6c6b4334fc50988a639d9b98aa429a0b57da6e17b9a44f0451f930b6967b7a4"}, +] crashtest = [] cryptography = [] distlib = [] filelock = [] -h11 = [ - {file = "h11-0.12.0-py3-none-any.whl", hash = "sha256:36a3cb8c0a032f56e2da7084577878a035d3b61d104230d4bd49c0c6b555a9c6"}, - {file = "h11-0.12.0.tar.gz", hash = "sha256:47222cb6067e4a307d535814917cd98fd0a57b6788ce715755fa2b6c28b56042"}, -] -html5lib = [ - {file = "html5lib-1.1-py2.py3-none-any.whl", hash = "sha256:0d78f8fde1c230e99fe37986a60526d7049ed4bf8a9fadbad5f00e22e58e041d"}, - {file = "html5lib-1.1.tar.gz", hash = "sha256:b2e5b40261e20f354d198eae92afc10d750afb487ed5e50f9c4eaf07c184146f"}, -] +h11 = [] +html5lib = [] httpcore = [] httpx = [] idna = [ @@ -590,8 +636,16 @@ jeepney = [] keyring = [] lockfile = [] msgpack = [] +mypy-extensions = [ + {file = "mypy_extensions-0.4.3-py2.py3-none-any.whl", hash = "sha256:090fedd75945a69ae91ce1303b5824f428daf5a028d2f6ab8a299250a846f15d"}, + {file = "mypy_extensions-0.4.3.tar.gz", hash = "sha256:2d82818f5bb3e369420cb3c4060a7970edba416647068eb4c5343488a6c604a8"}, +] packaging = [] pastel = [] +pathspec = [ + {file = "pathspec-0.9.0-py2.py3-none-any.whl", hash = "sha256:7d15c4ddb0b5c802d161efc417ec1a2558ea2653c2e8ad9c19098201dc1c993a"}, + {file = "pathspec-0.9.0.tar.gz", hash = "sha256:e564499435a2673d586f6b2130bb5b95f04a3ba06f81b8f895b651a3c76aabb1"}, +] pexpect = [ {file = "pexpect-4.8.0-py2.py3-none-any.whl", hash = "sha256:0b48a55dcb3c05f3329815901ea4fc1537514d6ba867a152b581d69ae3710937"}, {file = "pexpect-4.8.0.tar.gz", hash = "sha256:fc65a43959d153d0114afe13997d439c22823a27cefceb5ff35c2178c6784c0c"}, @@ -628,10 +682,11 @@ six = [ {file = "six-1.16.0.tar.gz", hash = "sha256:1e61c37477a1626458e36f7b1d82aa5c9b094fa4802892072e49de9c60c4c926"}, ] sniffio = [] +tomli = [ + {file = "tomli-2.0.1-py3-none-any.whl", hash = "sha256:939de3e7a6161af0c887ef91b7d41a53e7c5a1ca976325f429cb46ea9bc30ecc"}, + {file = "tomli-2.0.1.tar.gz", hash = "sha256:de526c12914f0c550d15924c62d72abc48d6fe7364aa87328337a31007fe8a4f"}, +] tomlkit = [] urllib3 = [] virtualenv = [] -webencodings = [ - {file = "webencodings-0.5.1-py2.py3-none-any.whl", hash = "sha256:a0af1213f3c2226497a97e2b3aa01a7e4bee4f403f95be16fc9acd2947514a78"}, - {file = "webencodings-0.5.1.tar.gz", hash = "sha256:b36a1c245f2d304965eb4e0a82848379241dc04b865afcc4aab16748587e1923"}, -] +webencodings = [] diff --git a/pyproject.toml b/pyproject.toml index 1beb11d..5d07957 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -11,6 +11,7 @@ httpx = "^0.23.0" [tool.poetry.dev-dependencies] poetry = "^1.1.14" +black = "^22.6.0" [build-system] requires = ["poetry-core>=1.0.0"] diff --git a/src/commands/update.py b/src/commands/update.py new file mode 100644 index 0000000..e776dc4 --- /dev/null +++ b/src/commands/update.py @@ -0,0 +1,22 @@ +import httpx +import json +import sys +import zipfile +from datetime import datetime + + +def main(args): + self_name = sys.argv[0].strip(".").strip("/") # todo: is this resilient? + data = json.loads(zipfile.ZipFile(self_name).read("environment.json")) + build_time = datetime.fromisoformat(data['built_at']) + + release_data = httpx.get( + 'https://api.github.com/repos/itsthejoker/utils/releases/latest' + ) + if release_data.status_code != 200: + print( + f"Something went wrong when talking to github; got a" + f" {release_data.status_code} with the following content:\n" + f"{release_data.content}" + ) + sys.exit()