Skip to content

KDocs GH actions #731

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

Merged
merged 5 commits into from
Jun 17, 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
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/cancel-workflow-action@0.9.1
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 "actions@github.com"
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.

Loading