Compare commits

...

2 commits

Author SHA1 Message Date
af92d86a2e Added GitHub workflow 2022-12-30 20:14:28 -08:00
8e92ab430d Minor cleanup 2022-12-30 20:14:10 -08:00
4 changed files with 120 additions and 56 deletions

61
.github/workflows/gradle.yml vendored Normal file
View file

@ -0,0 +1,61 @@
name: gradle-ci
on: [push, pull_request, workflow_dispatch]
jobs:
build:
runs-on: ubuntu-latest
env:
GRADLE_OPTS: "-Dorg.gradle.jvmargs=-XX:MaxMetaspaceSize=512m"
SONAR_JDK: "11"
strategy:
matrix:
java-version: [ 11, 17, 19 ]
steps:
- uses: actions/checkout@v2
with:
fetch-depth: 0
- name: Set up JDK ${{ matrix.java-version }}
uses: actions/setup-java@v1
with:
java-version: ${{ matrix.java-version }}
- name: Grant execute permission for gradlew
run: chmod +x gradlew
- name: Cache SonarCloud packages
if: matrix.java-version == env.SONAR_JDK
uses: actions/cache@v1
with:
path: ~/.sonar/cache
key: ${{ runner.os }}-sonar
restore-keys: ${{ runner.os }}-sonar
- name: Cache Gradle packages
uses: actions/cache@v2
with:
path: |
~/.gradle/caches
~/.gradle/wrapper
key: ${{ runner.os }}-gradle-${{ matrix.java-version }}-${{ hashFiles('**/*.gradle*', '**/gradle-wrapper.properties') }}
restore-keys: |
${{ runner.os }}-gradle-${{ matrix.java-version }}-
- name: Test with Gradle
run: ./gradlew build check --stacktrace
- name: SonarCloud
if: success() && matrix.java-version == env.SONAR_JDK
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
SONAR_TOKEN: ${{ secrets.SONAR_TOKEN }}
run: ./gradlew sonarqube
- name: Cleanup Gradle Cache
run: |
rm -f ~/.gradle/caches/modules-2/modules-2.lock
rm -f ~/.gradle/caches/modules-2/gc.properties

View file

@ -16,12 +16,12 @@ plugins {
id("signing") id("signing")
} }
description = "URL parameters encoding and decoding" description = "Encode and decode URL parameters"
group = "net.thauvin.erik" group = "net.thauvin.erik"
version = "0.9-SNAPSHOT" version = "0.9-SNAPSHOT"
val deployDir = "deploy" val deployDir = "deploy"
val gitHub = "ethauvin/$name" val gitHub = "ethauvin/${rootProject.name}"
val mavenUrl = "https://github.com/$gitHub" val mavenUrl = "https://github.com/$gitHub"
val publicationName = "mavenJava" val publicationName = "mavenJava"
@ -42,7 +42,8 @@ java {
sonarqube { sonarqube {
properties { properties {
property("sonar.projectKey", "ethauvin_$name") property("sonar.projectName", rootProject.name)
property("sonar.projectKey", "ethauvin_${rootProject.name}")
property("sonar.organization", "ethauvin-github") property("sonar.organization", "ethauvin-github")
property("sonar.host.url", "https://sonarcloud.io") property("sonar.host.url", "https://sonarcloud.io")
property("sonar.sourceEncoding", "UTF-8") property("sonar.sourceEncoding", "UTF-8")
@ -142,8 +143,8 @@ publishing {
} }
} }
scm { scm {
connection.set("scm:git:git://github.com/$gitHub.git") connection.set("scm:git://github.com/$gitHub.git")
developerConnection.set("scm:git:git@github.com:$gitHub.git") developerConnection.set("scm:git@github.com:$gitHub.git")
url.set(mavenUrl) url.set(mavenUrl)
} }
issueManagement { issueManagement {

View file

@ -1,5 +1,7 @@
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <project xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns="http://maven.apache.org/POM/4.0.0"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
<!-- This module was also published with a richer model, Gradle metadata, --> <!-- This module was also published with a richer model, Gradle metadata, -->
<!-- which should be used instead. Do not delete the following line which --> <!-- which should be used instead. Do not delete the following line which -->
<!-- is to indicate to Gradle or any Gradle module metadata file consumer --> <!-- is to indicate to Gradle or any Gradle module metadata file consumer -->
@ -10,8 +12,8 @@
<artifactId>urlencoder</artifactId> <artifactId>urlencoder</artifactId>
<version>0.9-SNAPSHOT</version> <version>0.9-SNAPSHOT</version>
<name>urlencoder</name> <name>urlencoder</name>
<description>URL parameters encoding and decoding</description> <description>Encode and decode URL parameters</description>
<url>https://github.com/ethauvin/lib</url> <url>https://github.com/ethauvin/urlencoder</url>
<licenses> <licenses>
<license> <license>
<name>The Apache License, Version 2.0</name> <name>The Apache License, Version 2.0</name>
@ -32,13 +34,13 @@
</developer> </developer>
</developers> </developers>
<scm> <scm>
<connection>scm:git:git://github.com/ethauvin/lib.git</connection> <connection>scm:git://github.com/ethauvin/urlencoder.git</connection>
<developerConnection>scm:git:git@github.com:ethauvin/lib.git</developerConnection> <developerConnection>scm:git@github.com:ethauvin/urlencoder.git</developerConnection>
<url>https://github.com/ethauvin/lib</url> <url>https://github.com/ethauvin/urlencoder</url>
</scm> </scm>
<issueManagement> <issueManagement>
<system>GitHub</system> <system>GitHub</system>
<url>https://github.com/ethauvin/lib/issues</url> <url>https://github.com/ethauvin/urlencoder/issues</url>
</issueManagement> </issueManagement>
<dependencies> <dependencies>
<dependency> <dependency>

View file

@ -50,7 +50,7 @@ object UrlEncoder {
// see https://www.rfc-editor.org/rfc/rfc3986#page-13 // see https://www.rfc-editor.org/rfc/rfc3986#page-13
private fun Char.isUnreserved(): Boolean { private fun Char.isUnreserved(): Boolean {
return if (this > '~') false else unreservedChars.get(this.code) return this <= '~' && unreservedChars.get(code)
} }
private fun StringBuilder.appendEncodedDigit(digit: Int) { private fun StringBuilder.appendEncodedDigit(digit: Int) {
@ -122,7 +122,7 @@ object UrlEncoder {
/** /**
* Transforms a provided [String] object into a new string, containing only valid URL characters in the UTF-8 * Transforms a provided [String] object into a new string, containing only valid URL characters in the UTF-8
* encoding. Letters, numbers, unreserved (<code>"_-!.~'()*"</code>) and allowed characters are left intact. * encoding. Letters, numbers, unreserved (`_-!.~'()*`) and allowed characters are left intact.
*/ */
@JvmStatic @JvmStatic
fun encode(source: String, vararg allow: Char): String { fun encode(source: String, vararg allow: Char): String {