Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Create Dynamic Template Based on PR Content #90

Merged
merged 19 commits into from
Oct 31, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
172 changes: 75 additions & 97 deletions .github/PULL_REQUEST_TEMPLATE.md
Original file line number Diff line number Diff line change
@@ -1,98 +1,76 @@
<!-- Thank you for wanting to contribute to sPhil! 🧙 🦉 -->
<!-- We would like to keep our code and writing as neat and tidy as possible, and would appreciate if you could verify the following checklist if you are submitting philosophical or literary content -->

## PR Author's Note

<!-- Write your PR text here -->

## Checklist

- [ ] Philosophical or literary contribution (docs). Leave **unchecked** for
<code>code</code> contribution.

- **IMPLIED CONSENT** By opening this pull request and contributing
philosophical or literary content, I accept that my writing is submitted
under the
[ATTRIBUTION-NONCOMMERCIAL-SHAREALIKE 4.0 INTERNATIONAL](https://creativecommons.org/licenses/by-nc-sa/4.0/),
which:

- Prohibits commercial reuse of the content.
- Allows sharing, remixing, and building upon the material as long as
attribution is given.

I understand that my writing may be modified, remixed, and built upon by
others within the `systemphil/sphil` or sPhil project, in accordance
with the license terms, indefinitely. See
[legal code](https://creativecommons.org/licenses/by-nc-sa/4.0/legalcode.en).

- **REQUIRED** I have followed the
[formatting guidelines](https://github.com/systemphil/sphil/blob/dev/src/pages/contributing/formatting/basic-markdown.md)
and verified there are no formatting bugs.
[Try markdown preview here](https://markdownlivepreview.com/).
- **REQUIRED** I have followed the
[Chicago author-date style](https://www.chicagomanualofstyle.org/tools_citationguide/citation-guide-2.html).
- **REQUIRED** I have added or verified metadata title, description, and
contributors at the _very top_ of the file followed by a `##` title
heading. Additionally, I have ensured `isArticle` is set to `true`.
Example:

```md
---
title: The Immediate Difference Between Pure Being and Pure Nothing
description:
Learn about the difference between being and nothing in Hegel's
Science of Logic.
isArticle: true
authors: Jerry Maguire (2024)
editors: Steve Stevenson (2023), Karen Hansen (2022)
contributors:
---

## My Article Title
```

<details>

<summary>Further information</summary>

I have signed the document with my name/username under either as
`Authors`, `Editors` or `Contributors`.

> Use **Authors** if you have created and substantially added content.
> Use **Editor** if you have made substantial edits or review.
> Use **Contributor** if you have made minor edits, reviews or
> contributions.
> If you've done multiple, pick the most weighted: Author > Editor >
> Contributor.
> If you prefer to remain anonymous, that's fine too, but note that a
> record of your contributions based on your GitHub username will exist
> here in the codebase.

</details>

- **REQUIRED** I have ensured that the
[project's central bibliography](https://github.com/systemphil/sphil/blob/main/README_BIBLIOGRAPHY.md)
contains the necessary bibliographical details for the citations I have
used.

- _Optional_ My article is a stub or I want to actively encourage
contribution, I've added the Stub component to the bottom of my content
or where relevant:

```ts
import Stub from "@/components/Stub";

<Stub />;
```

- **If Docs contribution is unchecked:** Code contribution
([Apache version 2 license](https://www.apache.org/licenses/LICENSE-2.0.txt))
<details>

All code apart of what is inside `src/pages/**` (excluding
`/contributing/**`, `_app.mdx`, `_document.tsx`, `_meta.json`,
`acknowledgements.mdx`, `index.mdx`, `privacy.mdx`, `team.mdx`, `terms.mdx`)
is subject to Apache version 2 license. Basically, anything outside of
content, literature, philosophy.

</details>

## Author's Note

<!-- Briefly describe your changes and their purpose -->

<details>
<summary>📝 Guidelines for Philosophical/Literary Contributions</summary>

### License Agreement

By submitting this PR, you agree to license your content under the
[CC BY-NC-SA 4.0 License](https://creativecommons.org/licenses/by-nc-sa/4.0/).

### Required Steps

1. Follow the
[formatting guidelines](https://github.com/systemphil/sphil/blob/dev/src/pages/contributing/formatting/basic-markdown.md)
2. Use
[Chicago author-date style](https://www.chicagomanualofstyle.org/tools_citationguide/citation-guide-2.html)
for citations
3. Update the
[project's central bibliography](https://github.com/systemphil/sphil/blob/main/README_BIBLIOGRAPHY.md)
4. Add metadata at the top of your file:

```md
---
title: Your Title Here
description: Brief description of your content
isArticle: true
authors: Your Name (Year)
editors: Editor Name (Year)
contributors: Contributor Name (Year)
---

## Your Article Title
```

### Optional

Consider adding the Stub component to encourage further contributions.

</details>

<details>
<summary>💻 Guidelines for Code Contributions</summary>

### Required Steps

1. Ensure code adheres to project coding standards
Firgrep marked this conversation as resolved.
Show resolved Hide resolved
2. Thoroughly test all changes

### License Scope

The Apache License 2.0 applies to all code except content within `src/pages/**`
(with specific exclusions like `/contributing/**`, `_app.mdx`, `_document.tsx`,
etc.). This primarily covers technical implementations rather than content,
literature, or philosophy.

</details>

<details>
<summary>ℹ️ Additional Information</summary>

- Philosophical/literary content: Licensed under CC BY-NC-SA 4.0
- Code contributions: Licensed under Apache License 2.0
- Please sign your contribution in the metadata under Authors, Editors, or
Contributors
</details>

## License Agreement

By submitting this PR, you agree to license your content under the
[CC BY-NC-SA 4.0 License](https://creativecommons.org/licenses/by-nc-sa/4.0/)
and your code under the
[Apache License 2.0](https://www.apache.org/licenses/LICENSE-2.0.txt).
75 changes: 75 additions & 0 deletions .github/workflows/pr-labeler.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,75 @@
name: PR Labeler
on: [pull_request]

permissions:
contents: read
pull-requests: write
issues: write

jobs:
label:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/github-script@v7
with:
github-token: ${{ secrets.GH_LABELING_CREDENTIALS }}
script: |
const fs = require('fs');
const path = require('path');

function getFileExtensions(files) {
return files.map(file => path.extname(file).toLowerCase()).filter(ext => ext !== '');
Firgrep marked this conversation as resolved.
Show resolved Hide resolved
}

async function addLabels(extensions) {
let labels = [];
let hasContentChanges = false;
let hasCodeChanges = false;

extensions.forEach(ext => {
if (ext === '.mdx') {
hasContentChanges = true;
} else {
hasCodeChanges = true;
}
})

if (hasContentChanges) {
labels.push('CONTENT');
}

if (hasCodeChanges) {
labels.push('CODE');
}

// Get current labels
const { data: currentLabels } = await github.rest.issues.listLabelsOnIssue({
owner: context.repo.owner,
repo: context.repo.repo,
issue_number: context.issue.number
});

const currentLabelNames = currentLabels.map(label => label.name);

// cross-reference current PR labels with the up-to-date label list
if (labels.length > 0 && labels.some(label => !currentLabelNames.includes(label))) {
await github.rest.issues.addLabels({
owner: context.repo.owner,
repo: context.repo.repo,
issue_number: context.issue.number,
labels: labels
});
}

}

const { data: files } = await github.rest.pulls.listFiles({
owner: context.repo.owner,
repo: context.repo.repo,
pull_number: context.issue.number
});

const changedFiles = files.map(f => f.filename);
const extensions = getFileExtensions(changedFiles);
await addLabels(extensions);
Loading