Skip to content

AttributeError: can't set attribute #33

AttributeError: can't set attribute

AttributeError: can't set attribute #33

Workflow file for this run

name: Lookatme Preview
on:
issue_comment:
types:
- created
jobs:
generate_preview:
continue-on-error: true
runs-on: ubuntu-latest
if: (github.event.issue && contains(github.event.issue.milestone.title, 'v3.0')) && contains(github.event.comment.body, 'gif=true')
services:
selenium:
image: selenium/standalone-chrome
steps:
- uses: actions/checkout@v3
- name: Maybe Checkout 3.0-dev
uses: actions/github-script@v6
with:
script: |
async function checkout30dev() {
await exec.exec("git", ["fetch", "origin", "3.0-dev:3.0-dev"]);
await exec.exec("git", ["checkout", "3.0-dev"]);
}
if (context.payload.issue.pull_request) {
let response = await github.rest.pulls.get({
owner: context.repo.owner,
repo: context.repo.repo,
pull_number: context.issue.number,
});
core.info(`response: ${JSON.stringify(response)}`);
const pr = response.data;
if (pr.base.ref != "3.0-dev") {
core.info("In a PR, but not merging into 3.0-dev, will directly use 3.0-dev for the preview");
await checkout30dev();
} else {
core.info(`In a PR that is merging into 3.0-dev, using PR context for the preview: ${pr.head.ref} (${pr.head.sha})`);
await exec.exec("git", [
"fetch", "origin", `${pr.head.sha}:${pr.head.ref}`,
]);
await exec.exec("git", ["checkout", pr.head.ref]);
}
} else {
core.info("Not in a PR, using 3.0-dev directly");
await checkout30dev();
}
- name: Setup Python 3.10
uses: actions/setup-python@v4
with:
python-version: "3.10"
- name: Install Python dependencies
run: |
pip install .[dev]
- name: Generate preview
uses: actions/github-script@v6
with:
script: |
const fs = require("fs/promises");
const comment = context.payload.comment;
core.info("Writing comment info to disk");
await fs.writeFile("input.md", comment.body);
core.info("Generating gif from extracted comment body");
await exec.exec("bin/md_gif_extractor.py", ["-i", "input.md", "-o", "preview.gif"]);
core.info("Uploading preview to imgur");
let curlOutput = "";
const options = {
listeners: {
stdout: (data) => {
curlOutput += data.toString();
}
}
};
// was using axios and directly uploading, ran into errors, used curl
// to help debug, got it working, don't feel like reverting axios
// now. "it works" - shrug
await exec.exec("curl", [
"--location",
"--request", "POST",
"https://api.imgur.com/3/image",
"--header", "Authorization: Client-ID ${{ secrets.IMGUR_CLIENT_ID }}",
"--form", "[email protected]",
"--form", "type=file",
], options);
core.info(`Got curl response:\n${curlOutput}\n`);
let resp = JSON.parse(curlOutput);
if (!resp.data) {
core.info(`Error uploading to imgur: ${curlOutput}`);
} else {
core.info("Commenting on issue");
const imgurUrl = resp.data.link;
github.rest.issues.createComment({
owner: context.repo.owner,
repo: context.repo.repo,
issue_number: context.issue.number,
body: `The preview below was generated by the markdown in [this comment](${context.payload.comment.html_url}):\n\n![markdown preview image](${imgurUrl})`,
});
}
- name: Upload artifact
uses: actions/upload-artifact@v3
with:
path: preview.gif