Skip to content

Commit

Permalink
feat: wip
Browse files Browse the repository at this point in the history
  • Loading branch information
finalchild committed Sep 4, 2024
1 parent b1e87a8 commit 99dc618
Show file tree
Hide file tree
Showing 19 changed files with 7,658 additions and 7 deletions.
10 changes: 10 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -3,3 +3,13 @@

# Ignore Gradle build output directory
build
!common/build
common/build/**
!common/build/generated
common/build/generated/**
!common/build/generated/sources
common/build/generated/sources/**
!common/build/generated/sources/schemaCode

# schema file
/openapi/portone-v2-openapi.json
4 changes: 4 additions & 0 deletions buildSrc/.kotlin/errors/errors-1725266929220.log
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
kotlin version: 2.0.20
error message: The daemon has terminated unexpectedly on startup attempt #1 with error code: 0. The daemon process output:
1. Kotlin compile daemon is ready

4 changes: 4 additions & 0 deletions buildSrc/.kotlin/errors/errors-1725269772908.log
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
kotlin version: 2.0.20
error message: The daemon has terminated unexpectedly on startup attempt #1 with error code: 0. The daemon process output:
1. Kotlin compile daemon is ready

4 changes: 4 additions & 0 deletions buildSrc/.kotlin/errors/errors-1725362496451.log
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
kotlin version: 2.0.20
error message: The daemon has terminated unexpectedly on startup attempt #1 with error code: 0. The daemon process output:
1. Kotlin compile daemon is ready

14 changes: 14 additions & 0 deletions buildSrc/build.gradle.kts
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
plugins {
kotlin("jvm") version "2.0.20"
kotlin("plugin.serialization") version "2.0.20"

}

dependencies {
implementation("org.jetbrains.kotlinx:kotlinx-serialization-json:1.7.1")
implementation("com.squareup:kotlinpoet-jvm:1.18.1")
}

repositories {
mavenCentral()
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
package io.portone.openapi

import kotlinx.serialization.json.Json
import kotlinx.serialization.json.jsonObject
import org.gradle.api.DefaultTask
import org.gradle.api.file.DirectoryProperty
import org.gradle.api.file.RegularFileProperty
import org.gradle.api.tasks.InputFile
import org.gradle.api.tasks.OutputDirectory
import org.gradle.api.tasks.TaskAction
import java.nio.file.Files

abstract class GenerateSchemaCodeTask : DefaultTask() {
@get:InputFile
abstract val inputFile: RegularFileProperty

@get:OutputDirectory
abstract val outputDirectory: DirectoryProperty

@TaskAction
fun generateSchemaCode() {
val document = Json.parseToJsonElement(Files.readString(inputFile.get().asFile.toPath())).jsonObject
SchemaGenerator(document, listOf(
"/payments",
"/payment-schedules",
"/identity-verifications",
"/billing-keys",
"/cash-receipts",
"/kakaopay",
), outputDirectory.get().asFile.toPath()).generateFiles()
}
}
87 changes: 87 additions & 0 deletions buildSrc/src/main/kotlin/io/portone/openapi/PatchCodeTask.kt
Original file line number Diff line number Diff line change
@@ -0,0 +1,87 @@
package io.portone.openapi

import org.gradle.api.DefaultTask
import org.gradle.api.file.DirectoryProperty
import org.gradle.api.tasks.InputDirectory
import org.gradle.api.tasks.OutputDirectory
import org.gradle.api.tasks.TaskAction
import java.io.ByteArrayOutputStream
import java.nio.file.Files
import kotlin.io.path.listDirectoryEntries
import kotlin.io.path.relativeTo

abstract class PatchCodeTask : DefaultTask() {
@get:InputDirectory
abstract val originDirectory: DirectoryProperty

@get:InputDirectory
abstract val patchesDirectory: DirectoryProperty

@get:OutputDirectory
abstract val outputDirectory: DirectoryProperty

companion object {
private const val TAG_NAME = "patch-base"
}

@TaskAction
fun patchCode() {
val originDirectory = this.originDirectory.get().asFile.toPath()
val patchesDirectory = this.patchesDirectory.get().asFile.toPath()
val outputDirectory = this.outputDirectory.get().asFile.toPath()

Files.createDirectories(outputDirectory)

project.exec {
it.workingDir = outputDirectory.toFile()
it.executable = "git"
it.args = listOf("init")
}

project.exec {
it.workingDir = outputDirectory.toFile()
it.executable = "git"
it.args = listOf("config", "commit.gpgSign", "false")
}.assertNormalExitValue()

project.exec {
it.workingDir = project.rootProject.projectDir
it.executable = "git"
it.args = listOf("tag", TAG_NAME)
}.assertNormalExitValue()

project.exec {
it.workingDir = project.rootProject.projectDir
it.executable = "git"
it.args = listOf("filter-repo", "--force", "--subdirectory-filter", originDirectory.relativeTo(project.rootProject.projectDir.toPath()).toString(), "--target", outputDirectory.toString())
}.assertNormalExitValue()

project.exec {
it.workingDir =project.rootProject.projectDir
it.executable = "git"
it.args = listOf("tag", "-d", TAG_NAME)
}.assertNormalExitValue()

project.exec {
it.workingDir = outputDirectory.toFile()
it.executable = "git"
it.args = listOf("checkout", TAG_NAME)
}.assertNormalExitValue()

project.exec {
it.workingDir = outputDirectory.toFile()
it.executable = "git"
it.args = listOf("am", "--abort")
it.standardOutput = ByteArrayOutputStream()
it.errorOutput = ByteArrayOutputStream()
}

val patchFiles = patchesDirectory.listDirectoryEntries("*.patch").sorted()

project.exec {
it.workingDir = outputDirectory.toFile()
it.executable = "git"
it.args = listOf("am", "--3way", *patchFiles.map { it.toString() }.toTypedArray())
}.assertNormalExitValue()
}
}
Loading

0 comments on commit 99dc618

Please sign in to comment.