mirror of
https://github.com/simonw/dclient.git
synced 2026-07-25 18:34:32 +02:00
71 lines
2.2 KiB
YAML
71 lines
2.2 KiB
YAML
name: Execute template to populate repository
|
|
|
|
on:
|
|
push:
|
|
workflow_dispatch:
|
|
|
|
jobs:
|
|
setup-repo:
|
|
if: ${{ github.repository != 'simonw/click-app-template-repository' }}
|
|
runs-on: ubuntu-latest
|
|
steps:
|
|
- uses: actions/checkout@v2
|
|
with:
|
|
fetch-depth: 0
|
|
ref: ${{ github.head_ref }}
|
|
|
|
- name: Install cookiecutter
|
|
run: pip3 install cookiecutter
|
|
|
|
- uses: actions/github-script@v4
|
|
id: fetch-repo-and-user-details
|
|
with:
|
|
script: |
|
|
const query = `query($owner:String!, $name:String!) {
|
|
repository(owner:$owner, name:$name) {
|
|
name
|
|
description
|
|
owner {
|
|
login
|
|
... on User {
|
|
name
|
|
}
|
|
... on Organization {
|
|
name
|
|
}
|
|
}
|
|
}
|
|
}`;
|
|
const variables = {
|
|
owner: context.repo.owner,
|
|
name: context.repo.repo
|
|
}
|
|
const result = await github.graphql(query, variables)
|
|
console.log(result)
|
|
return result
|
|
|
|
- name: Rebuild contents using cookiecutter
|
|
env:
|
|
INFO: ${{ steps.fetch-repo-and-user-details.outputs.result }}
|
|
run: |
|
|
export REPO_NAME=$(echo $INFO | jq -r '.repository.name')
|
|
# Run cookiecutter
|
|
pushd /tmp
|
|
cookiecutter gh:simonw/click-app --no-input \
|
|
app_name=$REPO_NAME \
|
|
description="$(echo $INFO | jq -r .repository.description)" \
|
|
github_username="$(echo $INFO | jq -r .repository.owner.login)" \
|
|
author_name="$(echo $INFO | jq -r .repository.owner.name)"
|
|
popd
|
|
# Move generated content to root directory of repo
|
|
mv /tmp/$REPO_NAME/* .
|
|
# And .gitignore too:
|
|
mv /tmp/$REPO_NAME/.gitignore .
|
|
# Delete the setup.yml workflow, it has served its purpose
|
|
rm .github/workflows/setup.yml
|
|
|
|
- name: Force push new repo contents
|
|
uses: stefanzweifel/git-auto-commit-action@v4
|
|
with:
|
|
commit_message: "Initial library structure"
|
|
push_options: --force
|