Merge branch '1.0.2'

This commit is contained in:
Erik C. Thauvin 2021-03-21 21:58:15 -07:00
commit 42af1133e9
16 changed files with 186 additions and 207 deletions

View file

@ -4,15 +4,9 @@ defaults: &defaults
environment:
JVM_OPTS: -Xmx3200m
TERM: dumb
CI: true
jobs:
build_gradle:
<<: *defaults
docker:
- image: circleci/openjdk:8-jdk
defaults_gradle: &defaults_gradle
steps:
- checkout
- restore_cache:
@ -20,27 +14,41 @@ jobs:
- gradle-dependencies-{{ checksum "build.gradle.kts" }}
# fallback to using the latest cache if no exact match is found
- gradle-dependencies-
- run:
name: Gradle Dependencies
command: ./gradlew dependencies
- save_cache:
paths: ~/.m2
key: gradle-dependencies-{{ checksum "build.gradle.kts" }}
- run:
name: Run All Checks
command: ./gradlew check
- store_artifacts:
path: build/reports/
destination: reports
- store_test_results:
path: build/reports/
jobs:
build_gradle_jdk14:
<<: *defaults
docker:
- image: openjdk:14-jdk
<<: *defaults_gradle
build_gradle_jdk8:
<<: *defaults
docker:
- image: circleci/openjdk:8-jdk
<<: *defaults_gradle
workflows:
version: 2
gradle:
jobs:
- build_gradle
- build_gradle_jdk8
- build_gradle_jdk14

View file

@ -0,0 +1 @@
future-release=1.0.2

27
.gitignore vendored
View file

@ -2,17 +2,7 @@
!.vscode/launch.json
!.vscode/settings.json
!.vscode/tasks.json
.classpath
.DS_Store
.gradle
.kobalt
.nb-gradle
.project
.settings
.vscode/*
*.code-workspace
*.iws
*.sublime-*
**/*.class
**/.idea/**/dataSources.ids
**/.idea/**/dataSources.local.xml
**/.idea/**/dataSources/
@ -27,7 +17,17 @@
**/.idea/**/uiDesigner.xml
**/.idea/**/usage.statistics.xml
**/.idea/**/workspace.xml
**/*.class
*.code-workspace
*.iws
*.sublime-*
.DS_Store
.classpath
.gradle
.kobalt
.nb-gradle
.project
.settings
.vscode/*
/bin
/build
/deploy
@ -40,7 +40,8 @@
/project.properties
/target
/test-output
Thumbs.db
ehthumbs.db
kobaltBuild
kobaltw*-test
Thumbs.db
pom.xml.asc

View file

@ -5,30 +5,22 @@ env:
global:
- CI=true
jdk:
- oraclejdk8
#install:
# - git fetch --unshallow --tags
addons:
sonarcloud:
organization: "ethauvin-github"
before_cache:
- rm -f $HOME/.gradle/caches/modules-2/modules-2.lock
- rm -fr $HOME/.gradle/caches/*/plugin-resolution/
jdk:
- oraclejdk8
- openjdk14
before_install:
- chmod +x gradlew
script:
- ./gradlew check
cache:
directories:
- $HOME/.gradle/caches/
- $HOME/.gradle/wrapper/
after_success:
- |
if [ "${TRAVIS_TEST_RESULT}" == 0 ]; then
if [ "${TRAVIS_TEST_RESULT}" == 0 ] && [ "$TRAVIS_JDK_VERSION" == "openjdk14" ]; then
./gradlew sonarqube
fi

View file

@ -1,6 +1,19 @@
# Change Log
# Changelog
## [1.0.2](https://github.com/ethauvin/pinboard-poster/tree/1.0.2) (2021-03-21)
[Full Changelog](https://github.com/ethauvin/pinboard-poster/compare/1.0.1...1.0.2)
**Implemented enhancements:**
- Use HttpLoggingInterceptor instead of manually logging. [\#3](https://github.com/ethauvin/pinboard-poster/issues/3)
**Fixed bugs:**
- executeMethod should trap IO execeptions [\#2](https://github.com/ethauvin/pinboard-poster/issues/2)
## [1.0.1](https://github.com/ethauvin/pinboard-poster/tree/1.0.1) (2019-05-27)
[Full Changelog](https://github.com/ethauvin/pinboard-poster/compare/1.0.0...1.0.1)
**Implemented enhancements:**
@ -8,15 +21,21 @@
- Implement better error reporting. [\#1](https://github.com/ethauvin/pinboard-poster/issues/1)
## [1.0.0](https://github.com/ethauvin/pinboard-poster/tree/1.0.0) (2018-06-26)
[Full Changelog](https://github.com/ethauvin/pinboard-poster/compare/0.9.3...1.0.0)
## [0.9.3](https://github.com/ethauvin/pinboard-poster/tree/0.9.3) (2017-11-09)
[Full Changelog](https://github.com/ethauvin/pinboard-poster/compare/0.9.2...0.9.3)
## [0.9.2](https://github.com/ethauvin/pinboard-poster/tree/0.9.2) (2017-11-08)
[Full Changelog](https://github.com/ethauvin/pinboard-poster/compare/0.9.1...0.9.2)
## [0.9.1](https://github.com/ethauvin/pinboard-poster/tree/0.9.1) (2017-05-18)
[Full Changelog](https://github.com/ethauvin/pinboard-poster/compare/2ee3568e40114e19b0956ea7d12c071d5c49b0d5...0.9.1)
\* *This Change Log was automatically generated by [github_changelog_generator](https://github.com/skywinder/Github-Changelog-Generator)*
\* *This Changelog was automatically generated by [github_changelog_generator](https://github.com/github-changelog-generator/github-changelog-generator)*

View file

@ -1,4 +1,4 @@
Copyright (c) 2017-2020, Erik C. Thauvin (erik@thauvin.net)
Copyright (c) 2017-2021, Erik C. Thauvin (erik@thauvin.net)
All rights reserved.
Redistribution and use in source and binary forms, with or without

View file

@ -1,6 +1,7 @@
# [Pinboard](https://pinboard.in) Poster for Kotlin/Java
[![License (3-Clause BSD)](https://img.shields.io/badge/license-BSD%203--Clause-blue.svg?style=flat-square)](http://opensource.org/licenses/BSD-3-Clause) [![release](https://img.shields.io/github/release/ethauvin/pinboard-poster.svg)](https://github.com/ethauvin/pinboard-poster/releases/latest) [![Download](https://api.bintray.com/packages/ethauvin/maven/pinboard-poster/images/download.svg)](https://bintray.com/ethauvin/maven/pinboard-poster/_latestVersion)
[![License (3-Clause BSD)](https://img.shields.io/badge/license-BSD%203--Clause-blue.svg?style=flat-square)](http://opensource.org/licenses/BSD-3-Clause) [![Release](https://img.shields.io/github/release/ethauvin/pinboard-poster.svg)](https://github.com/ethauvin/pinboard-poster/releases/latest) [![Maven Central](https://img.shields.io/maven-central/v/net.thauvin.erik/pinboard-poster.svg?label=maven%20central)](https://search.maven.org/search?q=g:%22net.thauvin.erik%22%20AND%20a:%22pinboard-poster%22)
[![Known Vulnerabilities](https://snyk.io/test/github/ethauvin/pinboard-poster/badge.svg?targetFile=pom.xml)](https://snyk.io/test/github/ethauvin/pinboard-poster?targetFile=pom.xml) [![Quality Gate Status](https://sonarcloud.io/api/project_badges/measure?project=ethauvin_pinboard-poster&metric=alert_status)](https://sonarcloud.io/dashboard?id=ethauvin_pinboard-poster) [![Build Status](https://travis-ci.com/ethauvin/pinboard-poster.svg?branch=master)](https://travis-ci.com/ethauvin/pinboard-poster) [![CircleCI](https://circleci.com/gh/ethauvin/pinboard-poster/tree/master.svg?style=shield)](https://circleci.com/gh/ethauvin/pinboard-poster/tree/master)
A small Kotlin/Java/Android library for posting to [Pinboard](https://pinboard.in).
@ -31,32 +32,20 @@ poster.deletePin("http:///www.example.com/bar");
Your API authentication token is available on the [Pinboard settings page](https://pinboard.in/settings/password).
## Usage with Maven and Gradle
### Maven
To install and run from Maven, configure an artifact as follows:
```xml
<dependency>
<groupId>net.thauvin.erik</groupId>
<artifactId>pinboard-poster</artifactId>
<version>1.0.1</version>
</dependency>
```
### Gradle
## Usage with Gradle, Maven, etc.
To install and run from Gradle, add the following to the build.gradle file:
```gradle
dependencies {
compile 'net.thauvin.erik:pinboard-poster:1.0.1'
compile 'net.thauvin.erik:pinboard-poster:1.0.2'
}
```
[View Example](https://github.com/ethauvin/pinboard-poster/blob/master/samples/java/build.gradle)
[View Kotlin DSL Example](https://github.com/ethauvin/pinboard-poster/blob/master/samples/kotlin/build.gradle.kts)
Instructions for using with Maven, Ivy, etc. can be found on [Maven Central](https://search.maven.org/artifact/net.thauvin.erik/pinboard-poster/1.0.2/jar).
## Adding
The `addPin` function support all of the [Pinboard API parameters](https://pinboard.in/api/#posts_add):

View file

@ -1,22 +1,19 @@
import com.jfrog.bintray.gradle.tasks.BintrayUploadTask
import org.jetbrains.kotlin.gradle.tasks.KotlinCompile
import java.io.FileInputStream
import java.util.Properties
plugins {
jacoco
java
kotlin("jvm") version "1.4.0"
kotlin("jvm") version "1.4.31"
`maven-publish`
id("com.github.ben-manes.versions") version "0.29.0"
id("com.jfrog.bintray") version "1.8.5"
id("io.gitlab.arturbosch.detekt") version "1.11.1"
id("org.jetbrains.dokka") version "1.4.0-rc"
id("org.sonarqube") version "3.0"
signing
id("com.github.ben-manes.versions") version "0.38.0"
id("io.gitlab.arturbosch.detekt") version "1.16.0"
id("org.jetbrains.dokka") version "1.4.30"
id("org.sonarqube") version "3.1.1"
}
group = "net.thauvin.erik"
version = "1.0.1"
version = "1.0.2"
description = "Pinboard Poster for Kotlin/Java"
val gitHub = "ethauvin/$name"
@ -26,45 +23,32 @@ var isRelease = "release" in gradle.startParameter.taskNames
val publicationName = "mavenJava"
// Load local.properties
File("local.properties").apply {
if (exists()) {
FileInputStream(this).use { fis ->
Properties().apply {
load(fis)
forEach { (k, v) ->
extra[k as String] = v
}
}
}
}
}
object VersionInfo {
const val okhttp = "4.8.1"
const val okhttp = "4.9.1"
}
val versions: VersionInfo by extra { VersionInfo }
repositories {
jcenter()
mavenCentral()
jcenter() // needed for Dokka
}
dependencies {
implementation("com.squareup.okhttp3:okhttp:${versions.okhttp}")
implementation("com.squareup.okhttp3:logging-interceptor:${versions.okhttp}")
testImplementation("org.testng:testng:7.3.0")
testImplementation("org.testng:testng:7.4.0")
}
java {
withSourcesJar()
}
detekt {
baseline = project.rootDir.resolve("config/detekt/baseline.xml")
}
jacoco {
toolVersion = "0.8.5"
}
sonarqube {
properties {
property("sonar.projectKey", "ethauvin_pinboard-poster")
@ -72,11 +56,6 @@ sonarqube {
}
}
val sourcesJar by tasks.creating(Jar::class) {
archiveClassifier.set("sources")
from(sourceSets.getByName("main").allSource)
}
val javadocJar by tasks.creating(Jar::class) {
dependsOn(tasks.dokkaJavadoc)
from(tasks.dokkaJavadoc)
@ -106,7 +85,7 @@ tasks {
}
assemble {
dependsOn(sourcesJar, javadocJar)
dependsOn(javadocJar)
}
clean {
@ -147,19 +126,15 @@ tasks {
}
}
val bintrayUpload by existing(BintrayUploadTask::class) {
dependsOn(publishToMavenLocal, gitTag)
}
buildScan {
termsOfServiceUrl = "https://gradle.com/terms-of-service"
setTermsOfServiceAgree("yes")
}
register("release") {
description = "Publishes version ${project.version} to Bintray."
description = "Publishes version ${project.version} to local repository."
group = PublishingPlugin.PUBLISH_TASK_GROUP
dependsOn("wrapper", bintrayUpload)
dependsOn("wrapper", "deploy", "gitTag", "publishToMavenLocal")
}
"sonarqube" {
@ -167,69 +142,51 @@ tasks {
}
}
fun findProperty(s: String) = project.findProperty(s) as String?
bintray {
user = findProperty("bintray.user")
key = findProperty("bintray.apikey")
publish = isRelease
setPublications(publicationName)
pkg.apply {
repo = "maven"
name = project.name
desc = description
websiteUrl = mavenUrl
issueTrackerUrl = "$mavenUrl/issues"
githubRepo = gitHub
githubReleaseNotesFile = "README.md"
vcsUrl = "$mavenUrl.git"
setLabels("android", "kotlin", "java", "pinboard", "poster", "bookmarks")
publicDownloadNumbers = true
version.apply {
name = project.version as String
desc = description
vcsTag = project.version as String
gpg.apply {
sign = true
}
}
}
}
publishing {
publications {
create<MavenPublication>(publicationName) {
from(components["java"])
artifact(sourcesJar)
artifact(javadocJar)
pom.withXml {
asNode().apply {
appendNode("name", project.name)
appendNode("description", project.description)
appendNode("url", mavenUrl)
appendNode("licenses").appendNode("license").apply {
appendNode("name", "BSD 3-Clause")
appendNode("url", "https://opensource.org/licenses/BSD-3-Clause")
pom {
name.set(project.name)
description.set(project.description)
url.set(mavenUrl)
licenses {
license {
name.set("BSD 3-Clause")
url.set("https://opensource.org/licenses/BSD-3-Clause")
}
}
developers {
developer {
id.set("ethauvin")
name.set("Erik C. Thauvin")
email.set("erik@thauvin.net")
url.set("https://erik.thauvin.net/")
}
}
scm {
connection.set("scm:git:git://github.com/$gitHub.git")
developerConnection.set("scm:git:git@github.com:$gitHub.git")
url.set("$mavenUrl")
}
issueManagement {
system.set("GitHub")
url.set("$mavenUrl/issues")
}
}
}
}
repositories {
maven {
name = "ossrh"
url = uri("https://oss.sonatype.org/service/local/staging/deploy/maven2/")
credentials(PasswordCredentials::class)
}
}
}
appendNode("developers").appendNode("developer").apply {
appendNode("id", "ethauvin")
appendNode("name", "Erik C. Thauvin")
appendNode("email", "erik@thauvin.net")
}
appendNode("scm").apply {
appendNode("connection", "scm:git:$mavenUrl.git")
appendNode("developerConnection", "scm:git:git@github.com:$gitHub.git")
appendNode("url", mavenUrl)
}
appendNode("issueManagement").apply {
appendNode("system", "GitHub")
appendNode("url", "$mavenUrl/issues")
}
}
}
}
}
signing {
useGpgCmd()
sign(publishing.publications[publicationName])
}

View file

@ -1,5 +1,5 @@
distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
distributionUrl=https\://services.gradle.org/distributions/gradle-6.6-bin.zip
distributionUrl=https\://services.gradle.org/distributions/gradle-6.8.3-bin.zip
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists

44
pom.xml
View file

@ -1,23 +1,14 @@
<?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 http://maven.apache.org/xsd/maven-4.0.0.xsd" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<!-- This module was also published with a richer model, Gradle metadata, -->
<!-- which should be used instead. Do not delete the following line which -->
<!-- is to indicate to Gradle or any Gradle module metadata file consumer -->
<!-- that they should prefer consuming it instead. -->
<!-- do_not_remove: published-with-gradle-metadata -->
<modelVersion>4.0.0</modelVersion>
<groupId>net.thauvin.erik</groupId>
<artifactId>pinboard-poster</artifactId>
<version>1.0.1</version>
<dependencies>
<dependency>
<groupId>com.squareup.okhttp3</groupId>
<artifactId>okhttp</artifactId>
<version>3.14.2</version>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>org.jetbrains.kotlin</groupId>
<artifactId>kotlin-stdlib</artifactId>
<version>1.3.31</version>
<scope>compile</scope>
</dependency>
</dependencies>
<version>1.0.2</version>
<name>pinboard-poster</name>
<description>Pinboard Poster for Kotlin/Java</description>
<url>https://github.com/ethauvin/pinboard-poster</url>
@ -32,10 +23,11 @@
<id>ethauvin</id>
<name>Erik C. Thauvin</name>
<email>erik@thauvin.net</email>
<url>https://erik.thauvin.net/</url>
</developer>
</developers>
<scm>
<connection>scm:git:https://github.com/ethauvin/pinboard-poster.git</connection>
<connection>scm:git:git://github.com/ethauvin/pinboard-poster.git</connection>
<developerConnection>scm:git:git@github.com:ethauvin/pinboard-poster.git</developerConnection>
<url>https://github.com/ethauvin/pinboard-poster</url>
</scm>
@ -43,4 +35,24 @@
<system>GitHub</system>
<url>https://github.com/ethauvin/pinboard-poster/issues</url>
</issueManagement>
<dependencies>
<dependency>
<groupId>org.jetbrains.kotlin</groupId>
<artifactId>kotlin-stdlib-jdk8</artifactId>
<version>1.4.31</version>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>com.squareup.okhttp3</groupId>
<artifactId>okhttp</artifactId>
<version>4.9.1</version>
<scope>runtime</scope>
</dependency>
<dependency>
<groupId>com.squareup.okhttp3</groupId>
<artifactId>logging-interceptor</artifactId>
<version>4.9.1</version>
<scope>runtime</scope>
</dependency>
</dependencies>
</project>

View file

@ -3,17 +3,17 @@ plugins {
id 'application'
}
// .gradlew run
// ./gradlew run
defaultTasks 'run'
mainClassName = 'net.thauvin.erik.pinboard.samples.JavaExample'
dependencies {
compile 'net.thauvin.erik:pinboard-poster:1.0.1'
}
repositories {
mavenLocal()
jcenter()
mavenCentral()
}
dependencies {
compile 'net.thauvin.erik:pinboard-poster:1.0.2'
}

View file

@ -1,5 +1,5 @@
distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
distributionUrl=https\://services.gradle.org/distributions/gradle-6.6-bin.zip
distributionUrl=https\://services.gradle.org/distributions/gradle-6.8.3-bin.zip
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists

View file

@ -1,21 +1,21 @@
plugins {
application
kotlin("jvm") version "1.4.0"
kotlin("jvm") version "1.4.31"
}
// .gradlew run
// ./gradlew run
defaultTasks(ApplicationPlugin.TASK_RUN_NAME)
repositories {
mavenLocal()
mavenCentral()
}
dependencies {
compile("net.thauvin.erik:pinboard-poster:1.0.1")
compile("net.thauvin.erik:pinboard-poster:1.0.2")
}
application {
mainClassName = "net.thauvin.erik.pinboard.samples.KotlinExampleKt"
}
repositories {
mavenLocal()
jcenter()
}

View file

@ -1,5 +1,5 @@
distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
distributionUrl=https\://services.gradle.org/distributions/gradle-6.6-bin.zip
distributionUrl=https\://services.gradle.org/distributions/gradle-6.8.3-bin.zip
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists

View file

@ -1,7 +1,7 @@
/*
* PinboardPoster.kt
*
* Copyright (c) 2017-2020, Erik C. Thauvin (erik@thauvin.net)
* Copyright (c) 2017-2021, Erik C. Thauvin (erik@thauvin.net)
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without

View file

@ -1,7 +1,7 @@
/*
* PinboardPosterTest.kt
*
* Copyright (c) 2017-2020, Erik C. Thauvin (erik@thauvin.net)
* Copyright (c) 2017-2021, Erik C. Thauvin (erik@thauvin.net)
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without