diff --git a/.cirrus.yml b/.cirrus.yml index 45c0e26..920c085 100644 --- a/.cirrus.yml +++ b/.cirrus.yml @@ -1,7 +1,7 @@ --- cirrus-ci_task: container: - image: toxchat/toktok-stack:0.0.23-third_party + image: toxchat/toktok-stack:0.0.31-third_party cpu: 2 memory: 6G configure_script: diff --git a/.travis.yml b/.travis.yml deleted file mode 100644 index b891deb..0000000 --- a/.travis.yml +++ /dev/null @@ -1,37 +0,0 @@ ---- -language: generic -dist: xenial -os: linux - -env: - global: - # HACKAGE_USERNAME=[secure] - - secure: "C9c+Zf4yOTd7hL/no4y1WLs81unoo4j72qiO//pCNteiqK5DSHXeDdzRpolC2kPhPjKuS0Sw0fy/MoMDsaIiv/p/Cl+NyJLisKKn/VtYhFKIHh3ctgYkcQkddvaMwxkJxyq2xMHSr+VWSIzPdbH/r6H0pRcn8a4zcRKnbj2t12tcSEKVgZyi8pai1t8nuUJY57rvrvUtDtpExATAqn8rUHbAu8+lOwgMQgJlP3c7mz3ZZcSVf82fFtb6Z+BRBdV4TImq9pQOGzDcz79h0dvPeML/fUUHa1hSHKF7T+4yr3UXyYafJ8TojfiwalBmReiKRnAqa6Vp6JTM4wVfGj7Z1gJJ4YQFLFi8ZRhHsBxtF4JKuoV12SBFmeYMC2qmXjZKn1vOyfy1pY6yhk14saBZtZrxvxgdOjSEpukjqbne3q0ckMNVM9DxmILPvL4YUR8ayVvDMob97z43CVxEHKnCDloSkS6IH08v1P4SN3GXCEqo5eDQV+XvAXWby9MF7CU8Mp1HhUh/xX3pOs9RKqfvJ0MRW+j5MRP3a1fegpPntPn/M+L3/eqlGFcYhttpCxik2sfePeunh2xUGqVCN8JNvlIC3yLKgFTbdd8Tx/taTj2+ZlqnLdru1Rkcmelgj1O8eMtMh0/NP/ZsO/YfH2GYBcoPsZqpdFA01ZajonzOytA=" - # HACKAGE_PASSWORD=[secure] - - secure: "KaSOcPujaJbGSY1/41vyaRCw2/bCUF021kO7nTVpO2lkwymJYgbcFuskBZC8JQN5NqiXrIgb0XM/N57l0/wNs+gyjDt7NWSF4OPxebiDxRN4BSejesiWXMafKthIlXn8lwhhAL7EYPGQ5ei/VwJUlClcOXGR08UxS1ePeABKzOX3qJZLCZf/9KmLm4k+GA2YXRCdA7BnQs7OtLg09lJ1EirZFBGCtak6xZ2FJqAXMimkdbAQMJrCIupPtr7sj2lnxACLc7G+JDqfGoqcpR0T6uV40pP90LGH+SLDzw3xCpnnqHNFC0RvcbgOHGWCPiSfowavbS0o+VPHAlXBOd7jgUaU0fys2AeTiWIyOnAvhQi3zv1PWx+CbCUxcx47wCAX6bMAkD4TG1RH2RxZWAZJIVyzA90RCmJL3I3AKh06F4wHzuqS91bcK0L5j7oTr3nhq82qFRxz58hNQKutSVWbdwE7BF2mlW8YXNRDSv84LQQkq8lqYU/5AAVXtj5p68+F6B0yOW2t9DE5zVHX1PATefNJjZ58prS6dbilTPSsNHsiDh3pheFfrhHIi7A4duPIHqXkjJKcZJ+KBgoZXAVnIERe+Hpe4AorPpeZ+FM6u4NvfAikiZryZoTh8sDVuVBIQNhE7OX1zn0uuDArlDugNMDcWPSOs5AuM73kP9Si9Hg=" - -cache: - timeout: 600 - directories: - - $HOME/.local - - $HOME/.stack - -script: - - bash <(travis_retry curl -s https://raw.githubusercontent.com/TokTok/hs-tools/master/bin/travis-haskell) script - - eval $(travis-haskell env) - -deploy: - provider: releases - token: - secure: "LpUAYk3pSGlTjakhkh/TzQTDCYj3upRlmEgq5VjyiM6Gsx+GybnQbrBDC2GBF7zOERkx535O0CBf4b7hvXJxNEVAjX5tGemqn8772xAbzAeVQogVUNc+WXRP7eBtcwhy8c/uC2iTHODAgfjOWqYZkyHcq8gMVON0JPgxQoGnue1KtItNlYOtEJgTfbsIW3bI1oACfyejmXIvpEGuuP/C282apMmLkkJGBZ45/YRJOXLqai6sWD9Zv7fIb5lfdlF0xA9waYcmRVgqYd9cAgOV++P9Rxs5s1rr9Qvmdqx71w4RhPQ2nXheF7zJMPBrA1dCVT5gRxxuNsMg8LJcyuGJZYg+XEQWiKk//G4vsVMgoXv87Quh3CfmHEcotQSKW5vbj/mKSa6fOhiEXLTxcrVE/X8CmV6ytlw1ZEt1CD8xIX1P7YGafSQmS4/3/I1D9VLUhHpFIaUZAtVtgX72lTIpj+oshwKoJk79skK6OEVST6XNi7MVpuBi30DmF7M8xvmT7cha3K6KVXZrhx8GkYxtjqFgDAozB2XI+Sd3VXJudNwLHI4m9HfRXLAezDkRBJGYOckEMyEiZLc7gV5175QbIsbInSxtO7fGFHIAUTM+ygCVxsfpzdb39bBZKY7w+Oe2NxupvHyvBmcQ7ZNRYq/1Yw07e2dK0XCKYRLvEouoU8I=" - file: $PACKAGE-$VERSION.tar.gz - skip_cleanup: true - on: - repo: TokTok/hs-github-tools - tags: true - -after_deploy: travis-haskell deploy - -# Only build pull requests and releases, don't build master on pushes, -# except through api or cron. -if: type IN (pull_request, api, cron) OR tag IS present diff --git a/github-tools.cabal b/github-tools.cabal index 00fbc16..477d085 100644 --- a/github-tools.cabal +++ b/github-tools.cabal @@ -118,7 +118,7 @@ library , containers , cryptohash , exceptions - , github == 0.25 + , github >= 0.25 && <= 0.26 , html , http-client >= 0.4.30 , http-client-tls @@ -139,9 +139,9 @@ executable hub-pulls hs-source-dirs: tools default-language: Haskell2010 build-depends: - base >= 4 && < 5 + base , bytestring - , github == 0.25 + , github , github-tools , text @@ -152,9 +152,9 @@ executable hub-changelog hs-source-dirs: tools default-language: Haskell2010 build-depends: - base >= 4 && < 5 + base , bytestring - , github == 0.25 + , github , github-tools , text @@ -165,9 +165,9 @@ executable hub-roadmap hs-source-dirs: tools default-language: Haskell2010 build-depends: - base >= 4 && < 5 + base , bytestring - , github == 0.25 + , github , github-tools , text @@ -181,14 +181,14 @@ executable webservice TokTok.Hello TokTok.Webhooks build-depends: - base >= 4 && < 5 + base , Diff , github-tools , aeson-pretty , bytestring , case-insensitive , expiring-cache-map - , github == 0.25 + , github , http-media , http-types , pretty diff --git a/stack.yaml b/stack.yaml index 7b51fe3..9779620 100644 --- a/stack.yaml +++ b/stack.yaml @@ -1,6 +1,5 @@ --- packages: [.] -resolver: lts-14.27 +resolver: lts-18.18 extra-deps: - - binary-instances-1@sha256:b17565598b8df3241f9b46fa8e3a3368ecc8e3f2eb175d7c28f319042a6f5c79,2613 - - github-0.25@sha256:32e1ede86a04976e06740a5993fab5306c5dbfdd17e96d83b79e53b82195739e,7091 + - github-0.26@sha256:a9d4046325c3eb28cdc7bef2c3f5bb213328caeae0b7dce6f51de655f0bffaa1,7162 diff --git a/tools/check_release b/tools/check_release new file mode 100755 index 0000000..f9e3a6e --- /dev/null +++ b/tools/check_release @@ -0,0 +1,84 @@ +#!/usr/bin/env python3 +import os +import subprocess +import sys +from typing import List + +import requests + +bzl_data = {} + + +def glob(*args, **kwargs): + pass + + +def load(*args): + pass + + +def project(**kwargs): + pass + + +def hazel_library(pkg): + return pkg + + +def haskell_library(version: str, **kwargs): + bzl_data["version"] = version + + +def hspec_test(**kwargs): + pass + + +def github_repo(): + repo = os.environ.get("GITHUB_REPOSITORY") + if repo: + return repo + return (subprocess.run( + ["git", "remote", "get-url", "upstream"], + check=True, + capture_output=True).stdout.decode("utf-8").strip().split(":")[1]) + + +def release_github(): + resp = requests.get( + f"{os.environ['GITHUB_API_URL']}/repos/{github_repo()}/releases", + auth=(os.environ["GH_USER"], os.environ["GH_TOKEN"]), + ) + release = resp.json()[0] + if not release["draft"]: + print("Could not find the latest draft release.") + print(f"Latest release found was {release['name']}") + sys.exit(1) + return release["name"][1:] + + +def release_bazel(path: str): + with open(os.path.join(path, "BUILD.bazel"), "r") as fh: + exec(fh.read()) + return bzl_data["version"] + + +def main(prog: str, args: List[str]): + if len(args) != 1: + print(f"Usage: {prog}") + sys.exit(1) + + path = args[0] + + gh_release = release_github() + bzl_release = release_bazel(path) + + if gh_release == bzl_release: + print(f"PASS: Upcoming release version is {gh_release}") + else: + print(f"FAIL: GitHub draft release {gh_release} does not match " + f"BUILD.bazel {bzl_release}") + sys.exit(1) + + +if __name__ == "__main__": + main(sys.argv[0], sys.argv[1:]) diff --git a/tools/git-submit b/tools/git-submit index 407b700..c73db78 100755 --- a/tools/git-submit +++ b/tools/git-submit @@ -1,23 +1,24 @@ -#!/bin/sh +#!/bin/bash set -eu REMOTE="" -BRANCH="${1-master}" +BRANCH="${1-$(git rev-parse --abbrev-ref HEAD)}" -if (echo "$BRANCH" | grep ':' > /dev/null); then +if (echo "$BRANCH" | grep ':' >/dev/null); then REMOTE="$(echo "$BRANCH" | grep -o '^[^:]*')" BRANCH="$(echo "$BRANCH" | grep -o '[^:]*$')" REMOTE="$(git remote -v | grep ":$REMOTE/.* (push)" | grep -o '^\S*')" fi -if [ -n "$REMOTE" ] && ! (git branch | grep "^..$BRANCH\$" > /dev/null); then +if [ -n "$REMOTE" ] && ! (git branch | grep "^..$BRANCH\$" >/dev/null); then git checkout --track "$REMOTE/$BRANCH" else - git checkout $BRANCH + git checkout "$BRANCH" fi git push upstream "$BRANCH:master" git sync git branch -d "$BRANCH" +sleep 2 git push origin ":$BRANCH"