Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
O
oh-my-zsh
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
JIRA
JIRA
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
github
oh-my-zsh
Commits
d1c07f95
Unverified
Commit
d1c07f95
authored
Jan 02, 2022
by
Marc Cornellà
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
chore: add Projects Beta GitHub Action
parent
78c91ccb
Changes
1
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
134 additions
and
0 deletions
+134
-0
project.yml
.github/workflows/project.yml
+134
-0
No files found.
.github/workflows/project.yml
0 → 100644
View file @
d1c07f95
name
:
Project tracking
on
:
issues
:
types
:
[
opened
]
pull_request_target
:
types
:
[
opened
,
synchronize
]
jobs
:
add-to-project
:
name
:
Add to project
runs-on
:
ubuntu-latest
steps
:
-
name
:
Generate token
id
:
generate_token
uses
:
tibdex/github-app-token@36464acb844fc53b9b8b2401da68844f6b05ebb0
with
:
app_id
:
${{ secrets.OHMYZSH_BOT_APP_ID }}
private_key
:
${{ secrets.OHMYZSH_BOT_APP_PEM }}
-
name
:
Read project data
env
:
GITHUB_TOKEN
:
${{ steps.generate_token.outputs.token }}
ORGANIZATION
:
ohmyzsh
PROJECT_NUMBER
:
"
1"
run
:
|
# Get Project data
gh api graphql -f query='
query($org: String!, $number: Int!) {
organization(login: $org){
projectNext(number: $number) {
id
fields(first:20) {
nodes {
id
name
}
}
}
}
}
' -f org=$ORGANIZATION -F number=$PROJECT_NUMBER > project_data.json
# Parse project data
cat >> $GITHUB_ENV <<EOF
PROJECT_ID=$(jq '.data.organization.projectNext.id' project_data.json)
PLUGIN_FIELD_ID=$(jq '.data.organization.projectNext.fields.nodes[] | select(.name == "Plugin") | .id' project_data.json)
THEME_FIELD_ID=$(jq '.data.organization.projectNext.fields.nodes[] | select(.name == "Theme") | .id' project_data.json)
EOF
-
name
:
Add to project
env
:
GITHUB_TOKEN
:
${{ steps.generate_token.outputs.token }}
ISSUE_ID
:
${{ github.event.issue.node_id }}
PR_ID
:
${{ github.event.pull_request.node_id }}
run
:
|
item_id="$(gh api graphql -f query='
mutation($project: ID!, $item: ID!) {
addProjectNextItem(input: {projectId: $project, contentId: $item}) {
projectNextItem {
id
}
}
}
' -f project=$PROJECT_ID -f item=${ISSUE_ID:-$PR_ID} --jq '.data.addProjectNextItem.projectNextItem.id')"
echo "ITEM_ID=$item_id" >> $GITHUB_ENV
-
name
:
Classify Pull Request
if
:
github.event_name == 'pull_request_target'
env
:
GITHUB_TOKEN
:
${{ steps.generate_token.outputs.token }}
run
:
|
gh pr view ${{ github.event.pull_request.number }} --json files --jq '.files.[].path' | awk -F/ '
/^plugins\// {
plugins[$2] = 1
}
/^themes\// {
gsub(/\.zsh-theme$/, "", $2)
themes[$2] = 1
}
END {
for (plugin in plugins) {
print plugin >> "plugins.list"
}
for (theme in themes) {
print theme >> "themes.list"
}
}
'
# If only one plugin is modified, add it to the plugin field
if [[ $(wc -l < plugins.list) = 1 ]]; then
echo "PLUGIN=$(cat plugins.list)" >> $GITHUB_ENV
fi
# If only one theme is modified, add it to the theme field
if [[ $(wc -l < themes.list) = 1 ]]; then
echo "THEME=$(cat themes.list)" >> $GITHUB_ENV
fi
-
name
:
Fill Pull Request fields in project
if
:
github.event_name == 'pull_request_target'
env
:
GITHUB_TOKEN
:
${{ steps.generate_token.outputs.token }}
run
:
|
gh api graphql -f query='
mutation (
$project: ID!
$item: ID!
$plugin_field: ID!
$plugin_value: String!
$theme_field: ID!
$theme_value: String!
) {
set_plugin: updateProjectNextItemField(input: {
projectId: $project
itemId: $item
fieldId: $plugin_field
value: $plugin_value
}) {
projectNextItem {
id
}
}
set_theme: updateProjectNextItemField(input: {
projectId: $project
itemId: $item
fieldId: $theme_field
value: $theme_value
}) {
projectNextItem {
id
}
}
}
' -f project=$PROJECT_ID -f item=$ITEM_ID \
-f plugin_field=$PLUGIN_FIELD_ID -f plugin_value=$PLUGIN \
-f theme_field=$THEME_FIELD_ID -f theme_value=$THEME \
--silent
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment