Skip to content

Commit

Permalink
refactor: small cleanups
Browse files Browse the repository at this point in the history
  • Loading branch information
ovsds committed Oct 14, 2024
1 parent e83566a commit 548289c
Show file tree
Hide file tree
Showing 8 changed files with 77 additions and 28 deletions.
14 changes: 12 additions & 2 deletions .github/workflows/e2e.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,13 @@ jobs:
REPO: ${{ github.repository }}
PR_NUMBER: ${{ github.event.number }}
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
LABELS: "type/fix,type/feat,component/embeds,component/auth,component/docs,bug"
LABELS: |
bug
type/fix
type/feat
component/embeds
component/auth
component/docs
- name: Test Run
id: test-run
Expand All @@ -46,7 +52,11 @@ jobs:
uses: nick-fields/assert-action@v2
with:
actual: ${{ steps.get-labels.outputs.labels }}
expected: "bug,component/auth,component/docs,type/fix"
expected: |
bug
component/auth
component/docs
type/fix
- name: Delete all labels
run: ./src/labels/delete_all.sh
Expand Down
13 changes: 5 additions & 8 deletions action.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -33,28 +33,25 @@ runs:
- name: Construct labels to add/delete
id: construct_labels
shell: bash
run: ${{ github.action_path }}/.github/.scripts/construct_labels.sh
run: ${{ github.action_path }}/src/construct_labels.sh
env:
REPO: ${{ inputs.github_owner }}/${{ inputs.github_repo }}
PR_NUMBER: ${{ inputs.github_pr_number }}
PR_TITLE: ${{ inputs.github_pr_title }}
GH_TOKEN: ${{ inputs.github_token }}
CURRENT_LABELS: ${{ steps.get_labels.outputs.labels }}

- name: Add labels
shell: bash
run: gh pr edit $PR_NUMBER --repo $REPO --add-label $LABELS_TO_ADD
run: ${{ github.action_path }}/src/labels/add_multiple.sh
env:
LABELS_TO_ADD: ${{ steps.construct_labels.outputs.labels_to_add }}
LABELS: ${{ steps.construct_labels.outputs.labels_to_add }}
REPO: ${{ inputs.github_owner }}/${{ inputs.github_repo }}
PR_NUMBER: ${{ inputs.github_pr_number }}
GH_TOKEN: ${{ inputs.github_token }}

- name: Delete labels
shell: bash
run: gh pr edit $PR_NUMBER --repo $REPO --remove-label $LABELS_TO_DELETE
run: ${{ github.action_path }}/src/labels/delete_multiple.sh
env:
LABELS_TO_DELETE: ${{ steps.construct_labels.outputs.labels_to_delete }}
LABELS: ${{ steps.construct_labels.outputs.labels_to_delete }}
PR_NUMBER: ${{ inputs.github_pr_number }}
REPO: ${{ inputs.github_owner }}/${{ inputs.github_repo }}
GH_TOKEN: ${{ inputs.github_token }}
Expand Down
22 changes: 22 additions & 0 deletions src/common.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
function set_output() {
KEY=$1
VALUE=$2

echo "$KEY"
echo "$VALUE"
{
echo "$KEY<<EOF"
echo "$VALUE"
echo "EOF"
} >> "$GITHUB_OUTPUT"
}

function validate_input_set() {
INPUT=$1
NAME=$2

if [ -z "$INPUT" ]; then
echo "$NAME is not set. Exiting."
return 1
fi
}
23 changes: 12 additions & 11 deletions .github/.scripts/construct_labels.sh → src/construct_labels.sh
Original file line number Diff line number Diff line change
@@ -1,16 +1,17 @@
#!/usr/bin/env bash

CONFIG_DATA=$(curl -s "https://raw.githubusercontent.com/datalens-tech/datalens/main/.github/workflows/scripts/changelog/changelog_config.json")
source ./common.sh

validate_input_set "$PR_TITLE" "PR_TITLE" || exit 1
validate_input_set "$CURRENT_LABELS" "CURRENT_LABELS" || exit 1

CONFIG_JSON="https://raw.githubusercontent.com/datalens-tech/datalens/main/.github/workflows/scripts/changelog/changelog_config.json"

CONFIG_DATA=$(curl -s "$CONFIG_JSON")
TYPE_LABELS_PREFIX=$(echo "$CONFIG_DATA" | jq -r '.section_tags.prefix')
COMPONENT_LABELS_PREFIX=$(echo "$CONFIG_DATA" | jq -r '.component_tags.prefix')

PR_TITLE=${PR_TITLE}
GH_TOKEN=${GH_TOKEN}
REPO=${REPO}
PR_NUMBER=${PR_NUMBER}
CURRENT_LABELS=${CURRENT_LABELS}

CURRENT_LABELS=$(echo "${CURRENT_LABELS}" | tr ',' '\n' | grep -E "$TYPE_LABELS_PREFIX|$COMPONENT_LABELS_PREFIX" | sort)
CURRENT_LABELS=$(echo "${CURRENT_LABELS}" | grep -E "$TYPE_LABELS_PREFIX|$COMPONENT_LABELS_PREFIX" | sort)

LABELS_SECTION=${PR_TITLE%%:*}
COMMIT_TYPE=${LABELS_SECTION%%\(*}
Expand All @@ -24,7 +25,7 @@ if [[ -n $COMPONENT_SECTION ]]; then
fi

LABELS_TO_ADD=$(echo -e "$LABELS_TO_ADD" | sort)
LABELS_TO_DELETE=$(comm -13 <(echo "$LABELS_TO_ADD") <(echo "$CURRENT_LABELS") | tr "\n" "," | sed 's/,$//')
LABELS_TO_DELETE=$(comm -13 <(echo "$LABELS_TO_ADD") <(echo "$CURRENT_LABELS"))

echo "labels_to_add=$(echo -e "$LABELS_TO_ADD" | tr '\n' ',' | sed 's/,$//')" >> $GITHUB_OUTPUT
echo "labels_to_delete=$LABELS_TO_DELETE" >> $GITHUB_OUTPUT
set_output "labels_to_add" "$LABELS_TO_ADD"
set_output "labels_to_delete" "$LABELS_TO_DELETE"
9 changes: 9 additions & 0 deletions src/labels/add_multiple.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
#!/usr/bin/env bash

source ./common.sh

validate_input_set "$LABELS" "LABELS" || exit 1

gh pr edit "$PR_NUMBER" \
--repo "$REPO" \
--add-label "$(echo "$LABELS" | tr '\n' ',')"
9 changes: 9 additions & 0 deletions src/labels/delete_multiple.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
#!/usr/bin/env bash

source ./common.sh

validate_input_set "$LABELS" "LABELS" || exit 1

gh pr edit "$PR_NUMBER" \
--repo "$REPO" \
--remove-label "$(echo "$LABELS" | tr '\n' ',')"
6 changes: 4 additions & 2 deletions src/labels/get.sh
Original file line number Diff line number Diff line change
@@ -1,10 +1,12 @@
#!/usr/bin/env bash

source ../common.sh

labels=$(
gh api \
--method GET \
"repos/$REPO/issues/$PR_NUMBER/labels" | \
jq -r '.[] | .name' | sort | tr '\n' ',' | sed 's/,$//'
jq -r '.[] | .name' | sort | sed 's/\n$//'
)

echo "labels=$labels" >> $GITHUB_OUTPUT
set_output labels "$labels"
9 changes: 4 additions & 5 deletions src/labels/set.sh
Original file line number Diff line number Diff line change
@@ -1,11 +1,10 @@
#!/usr/bin/env bash

if [ -z "$LABELS" ]; then
echo "LABELS is not set. Exiting."
exit 1
fi
source ./common.sh

validate_input_set "$LABELS" "LABELS" || exit 1

gh api \
--method PUT \
"repos/$REPO/issues/$PR_NUMBER/labels" \
--input <(jq -n --compact-output --arg labels "$LABELS" '{"labels": $labels | split(",")}')
--input <(jq -n --compact-output --arg labels "$LABELS" '{"labels": $labels | split("\n")}')

0 comments on commit 548289c

Please sign in to comment.