Skip to content

Commit

Permalink
Merge pull request #731 from Kotlin/kdocs-gh-action-2
Browse files Browse the repository at this point in the history
KDocs GH actions
  • Loading branch information
Jolanrensen authored Jun 17, 2024
2 parents 76091c7 + 670fab3 commit e418f9b
Show file tree
Hide file tree
Showing 10 changed files with 133 additions and 55 deletions.
2 changes: 1 addition & 1 deletion .editorconfig
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ max_line_length=120
[*.json]
indent_size=2

[*.yaml]
[{*.yaml,*.yml}]
indent_size=2

[*.ipynb]
Expand Down
33 changes: 33 additions & 0 deletions .github/workflows/generated-sources-master.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
name: Auto-commit generated code

on:
push:
branches:
- master

jobs:
build:
runs-on: ubuntu-latest

steps:
- name: Checkout repository
uses: actions/checkout@v3

- name: Set up JDK 11
uses: actions/setup-java@v4
with:
distribution: 'temurin'
java-version: '11'

- name: Run Gradle task
run: ./gradlew :core:processKDocsMain

- name: Commit changes
run: |
git config --global user.name 'github-actions[bot]'
git config --global user.email 'github-actions[bot]@users.noreply.github.com'
git add ./core/generated-sources
git diff --staged --quiet || git commit -m "Automated commit of generated code"
git push
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
92 changes: 92 additions & 0 deletions .github/workflows/generated-sources.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,92 @@
name: Show generated code in PR

on:
pull_request:
types:
- edited
- opened
- synchronize
- converted_to_draft
- ready_for_review

jobs:
build:
runs-on: ubuntu-latest
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
steps:
- name: Cancel Previous Runs
uses: styfle/[email protected]
with:
access_token: ${{ github.token }}

- name: Checkout repository
uses: actions/checkout@v3

- name: Set up JDK 11
uses: actions/setup-java@v4
with:
distribution: 'temurin'
java-version: '11'

- name: Configure Git User
run: |
git config --global user.email "[email protected]"
git config --global user.name "GitHub Actions"
- name: Run Gradle task
run: ./gradlew :core:processKDocsMain

- name: Check for changes in generated sources
id: git-diff
run: echo "::set-output name=changed::$(if git diff --quiet './core/generated-sources'; then echo 'false'; else echo 'true'; fi)"

- name: Commit and push if changes
id: git-commit
if: steps.git-diff.outputs.changed == 'true'
run: |
git checkout -b generated-sources/docs-update-${{ github.run_number }}
git add './core/generated-sources'
git commit -m "Update generated sources with recent changes"
git push origin generated-sources/docs-update-${{ github.run_number }}
echo "::set-output name=commit::$(git rev-parse HEAD)"
- name: Remove old comments
uses: actions/github-script@v5
if: steps.git-diff.outputs.changed == 'true'
with:
# language=js
script: |
const issue_number = context.issue.number;
const {owner, repo} = context.repo;
const comments = await github.rest.issues.listComments({
issue_number,
owner,
repo,
});
const botComments = comments.data.filter(
(comment) => comment.user.login === 'github-actions[bot]'
);
for (const comment of botComments) {
await github.rest.issues.deleteComment({
comment_id: comment.id,
owner,
repo,
});
}
- name: Add comment to PR
uses: actions/github-script@v5
if: steps.git-diff.outputs.changed == 'true'
with:
# language=js
script: |
github.rest.issues.createComment({
issue_number: context.issue.number,
owner: context.repo.owner,
repo: context.repo.repo,
body: "Generated sources will be updated after merging this PR.\nPlease inspect the changes in [here](https://github.com/${{ github.repository }}/commit/${{ steps.git-commit.outputs.commit }}).",
});
42 changes: 3 additions & 39 deletions core/build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,6 @@ import nl.jolanrensen.docProcessor.gradle.creatingProcessDocTask
import org.gradle.jvm.tasks.Jar
import org.jetbrains.kotlin.gradle.tasks.KotlinCompile
import org.jmailen.gradle.kotlinter.tasks.LintTask
import xyz.ronella.gradle.plugin.simple.git.OSType
import xyz.ronella.gradle.plugin.simple.git.task.GitTask

plugins {
Expand Down Expand Up @@ -141,7 +140,8 @@ val clearSamplesOutputs by tasks.creating {

doFirst {
delete {
val generatedSnippets = fileTree(file("../docs/StardustDocs/snippets")).exclude("**/manual/**")
val generatedSnippets = fileTree(file("../docs/StardustDocs/snippets"))
.exclude("**/manual/**", "**/kdocs/**")
delete(generatedSnippets)
}
}
Expand Down Expand Up @@ -170,41 +170,9 @@ tasks.withType<KorroTask> {
dependsOn(copySamplesOutputs)
}

// This task installs the pre-commit hook to the local machine the first time the project is built
// The pre-commit hook contains the command to run processKDocsMain before each commit
val installGitPreCommitHook by tasks.creating(Copy::class) {
doNotTrackState(/* reasonNotToTrackState = */ "Fails on TeamCity otherwise.")

val gitHooksDir = File(rootProject.rootDir, ".git/hooks")
if (gitHooksDir.exists()) {
from(File(rootProject.rootDir, "gradle/scripts/pre-commit"))
into(gitHooksDir)
fileMode = 755

// Workaround for https://github.com/Kotlin/dataframe/issues/612
if (OSType.identify() in listOf(OSType.Mac, OSType.Linux)) doLast {
exec {
workingDir(gitHooksDir)
commandLine("chmod", "755", "pre-commit")
}
}
} else {
logger.lifecycle("'.git/hooks' directory not found. Skipping installation of pre-commit hook.")
}
}
tasks.named("assemble") {
dependsOn(installGitPreCommitHook)
}

// region docPreprocessor

// This task is used to add all generated sources (from processKDocsMain) to git
val generatedSourcesFolderName = "generated-sources"
val addGeneratedSourcesToGit by tasks.creating(GitTask::class) {
directory.set(file("."))
command.set("add")
args.set(listOf("-A", generatedSourcesFolderName))
}

// Backup the kotlin source files location
val kotlinMainSources: FileCollection = kotlin.sourceSets.main.get().kotlin.sourceDirectories
Expand All @@ -221,14 +189,10 @@ val processKDocsMain by creatingProcessDocTask(processKDocsMainSources) {
target = file(generatedSourcesFolderName)
arguments += ARG_DOC_PROCESSOR_LOG_NOT_FOUND to false
exportAsHtml {
dir = file("../docs/StardustDocs/snippets")
dir = file("../docs/StardustDocs/snippets/kdocs")
}
task {
group = "KDocs"
doLast {
// ensure generated sources are added to git
addGeneratedSourcesToGit.executeCommand()
}
}
}

Expand Down
8 changes: 4 additions & 4 deletions docs/StardustDocs/topics/ColumnSelectors.md
Original file line number Diff line number Diff line change
Expand Up @@ -25,17 +25,17 @@ df.move { name.firstName and name.lastName }.after { city }

**Definitions**

<dataFrame src="org.jetbrains.kotlinx.dataframe.api.ColumnsSelectionDsl.DslGrammar.DefinitionsPartOfGrammar.html"/>
<dataFrame src="kdocs/org.jetbrains.kotlinx.dataframe.api.ColumnsSelectionDsl.DslGrammar.DefinitionsPartOfGrammar.html"/>

<tabs>
<tab title="Directly in the DSL">
<dataFrame src="org.jetbrains.kotlinx.dataframe.api.ColumnsSelectionDsl.DslGrammar.PlainDslPartOfGrammar.html"/>
<dataFrame src="kdocs/org.jetbrains.kotlinx.dataframe.api.ColumnsSelectionDsl.DslGrammar.PlainDslPartOfGrammar.html"/>
</tab>
<tab title="On a Column Set">
<dataFrame src="org.jetbrains.kotlinx.dataframe.api.ColumnsSelectionDsl.DslGrammar.ColumnSetPartOfGrammar.ForHtml.html"/>
<dataFrame src="kdocs/org.jetbrains.kotlinx.dataframe.api.ColumnsSelectionDsl.DslGrammar.ColumnSetPartOfGrammar.ForHtml.html"/>
</tab>
<tab title="On a Column Group">
<dataFrame src="org.jetbrains.kotlinx.dataframe.api.ColumnsSelectionDsl.DslGrammar.ColumnGroupPartOfGrammar.ForHtml.html"/>
<dataFrame src="kdocs/org.jetbrains.kotlinx.dataframe.api.ColumnsSelectionDsl.DslGrammar.ColumnGroupPartOfGrammar.ForHtml.html"/>
</tab>
</tabs>

Expand Down
11 changes: 0 additions & 11 deletions gradle/scripts/pre-commit

This file was deleted.

0 comments on commit e418f9b

Please sign in to comment.