Skip to content

Commit

Permalink
Updated Github Pages workflow
Browse files Browse the repository at this point in the history
  • Loading branch information
cowwoc committed Jan 1, 2025
1 parent ef610b2 commit 00ebff0
Show file tree
Hide file tree
Showing 3 changed files with 45 additions and 34 deletions.
53 changes: 32 additions & 21 deletions .github/workflows/deploy_to_maven_central.yml
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@ concurrency:
cancel-in-progress: true
permissions:
contents: write
pages: write
id-token: write

env:
Expand All @@ -22,7 +23,6 @@ jobs:
runs-on: ubuntu-latest
outputs:
INITIAL_MAIN_POSITION: ${{ steps.create-tag.outputs.INITIAL_MAIN_POSITION }}
INITIAL_GH_PAGES_POSITION: ${{ steps.create-tag.outputs.INITIAL_GH_PAGES_POSITION }}
TAG: ${{ steps.create-tag.outputs.TAG }}
VERSION: ${{ steps.create-tag.outputs.VERSION }}
STAGING_PROFILE_ID: ${{ steps.parse-profile-id.outputs.STAGING_PROFILE_ID }}
Expand Down Expand Up @@ -154,20 +154,43 @@ jobs:
- name: Generate Javadoc
run: |
./mvnw --batch-mode -V -e -pl '!dropwizard,!jersey' verify javadoc:aggregate
mkdir --parents "${{ needs.open-release.outputs.VERSION }}/docs"
mv target/reports/apidocs "${{ needs.open-release.outputs.VERSION }}/docs/api"
VERSION=${{ needs.open-release.outputs.VERSION }}
rm -rf "docs/api/${VERSION}"
mkdir --parents "docs/api/${VERSION}"
mv target/reports/apidocs/* "docs/api/${VERSION}"
- name: Commit changes
run: |
git checkout gh-pages -f
echo "INITIAL_GH_PAGES_POSITION=$(git rev-parse HEAD)" >> "$GITHUB_OUTPUT"
git add "${{ needs.open-release.outputs.VERSION }}/docs/api"
git commit -m "Released version ${{ needs.open-release.outputs.VERSION }}"
git checkout ${{ github.ref_name }} -f
git add "docs/api/${{ needs.open-release.outputs.VERSION }}"
git commit -m "Publishing Javadoc for version ${{ needs.open-release.outputs.VERSION }}"
git push
javadoc:
name: Javadoc
needs: deploy
environment:
name: github-pages
url: ${{ steps.deployment.outputs.page_url }}
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v4
with:
ref: ${{ github.ref }}
- name: Setup Pages
uses: actions/configure-pages@v5
- name: Upload artifact
uses: actions/upload-pages-artifact@v3
with:
path: "docs/api"
- name: Deploy to GitHub Pages
id: deployment
uses: actions/deploy-pages@v4

close-release:
name: Close release
needs: [ open-release, deploy ]
needs: [ open-release, deploy, javadoc ]
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
Expand Down Expand Up @@ -202,7 +225,7 @@ jobs:
# Cleanup on failure: https://stackoverflow.com/a/74562058/14731
on-failure:
name: On failure
needs: [ open-release, deploy, close-release ]
needs: [ open-release, deploy, javadoc, close-release ]
runs-on: ubuntu-latest
if: ${{ failure() || cancelled() }}
steps:
Expand Down Expand Up @@ -248,15 +271,3 @@ jobs:
if: needs.open-release.outputs.TAG != ''
run: |
git push --delete origin ${{ needs.open-release.outputs.TAG }}
- name: Restore the gh-pages ref to its original position
if: needs.open-release.outputs.INITIAL_GH_PAGES_POSITION != ''
run: |
CURRENT_REF_POSITION=$(git rev-parse HEAD)
if [ "${CURRENT_REF_POSITION}" != "${{ needs.open-release.outputs.INITIAL_GH_PAGES_POSITION }}" ]; then
git reset --hard ${{ needs.open-release.outputs.INITIAL_GH_PAGES_POSITION }}
if [ "${{ github.ref_type }}" == "tag" ]; then
git ${{ github.ref_type }} -f ${{ github.ref_name }}
fi
git push -f origin ${{ github.ref_name }}
fi
12 changes: 6 additions & 6 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
[![Maven Central](https://maven-badges.herokuapp.com/maven-central/com.github.cowwoc.pouch/core/badge.svg)](https://search.maven.org/search?q=g:com.github.cowwoc.pouch) [![API](https://img.shields.io/badge/api_docs-5B45D5.svg)](http://cowwoc.github.io/pouch/6.1/docs/api/) [![Changelog](https://img.shields.io/badge/changelog-A345D5.svg)](docs/changelog.md)
[![Maven Central](https://maven-badges.herokuapp.com/maven-central/com.github.cowwoc.pouch/core/badge.svg)](https://search.maven.org/search?q=g:com.github.cowwoc.pouch) [![API](https://img.shields.io/badge/api_docs-5B45D5.svg)](http://cowwoc.github.io/pouch/6.2/) [![Changelog](https://img.shields.io/badge/changelog-A345D5.svg)](docs/changelog.md)
[![build-status](../../workflows/Build/badge.svg)](../../actions?query=workflow%3Abuild)

# <img alt="pouch" src="docs/pouch.svg" width="128" height="146"/> Pouch: Inversion of Control for the Masses
Expand All @@ -20,7 +20,7 @@ To get started, add this Maven dependency:
<dependency>
<groupId>com.github.cowwoc.pouch</groupId>
<artifactId>core</artifactId>
<version>6.1</version>
<version>6.2</version>
</dependency>
```

Expand Down Expand Up @@ -140,7 +140,7 @@ For example, notice how `AbstractDatabaseScope.getRunMode()` delegates to `JvmSc
When running in a multithreaded environment, such as a web server, you might want to wait for ongoing HTTP
requests to complete before shutting down the server.
You can use the
[ConcurrentChildScopes](https://cowwoc.github.io/pouch/6.1/docs/api/com.github.cowwoc.pouch.core/com/github/cowwoc/pouch/core/ConcurrentChildScopes.html)
[ConcurrentChildScopes](https://cowwoc.github.io/pouch/6.2/com.github.cowwoc.pouch.core/com/github/cowwoc/pouch/core/ConcurrentChildScopes.html)
class to implement this as follows:

```java
Expand Down Expand Up @@ -408,7 +408,7 @@ public final class TestDataSourceFactory extends ConcurrentLazyFactory<DataSourc

Scopes that need to return different values over their lifetime can return
a [Builder](https://en.wikipedia.org/docs/Builder_pattern)
or [Supplier](https://docs.oracle.com/javase/8/docs/api/java/util/function/Supplier.html) that will, in turn,
or [Supplier](https://docs.oracle.com/javase/8/java/util/function/Supplier.html) that will, in turn,
return different values on every invocation.

Here is a contrived example:
Expand Down Expand Up @@ -580,9 +580,9 @@ The scope approach makes it easier to look up multiple values, or pass the scope
The library contains two types of classes: ones that are thread-safe and ones that are not.

For example,
[ConcurrentLazyFactory](https://cowwoc.github.io/pouch/6.1/docs/api/com.github.cowwoc.pouch.core/com/github/cowwoc/pouch/core/ConcurrentLazyFactory.html)
[ConcurrentLazyFactory](https://cowwoc.github.io/pouch/6.2/com.github.cowwoc.pouch.core/com/github/cowwoc/pouch/core/ConcurrentLazyFactory.html)
is the thread-safe equivalent
of [LazyFactory](https://cowwoc.github.io/pouch/6.1/docs/api/com.github.cowwoc.pouch.core/com/github/cowwoc/pouch/core/LazyFactory.html).
of [LazyFactory](https://cowwoc.github.io/pouch/6.2/com.github.cowwoc.pouch.core/com/github/cowwoc/pouch/core/LazyFactory.html).
`LazyFactory` is faster than `ConcurrentLazyFactory`, but doesn't support access from multiple threads.
Classes that are required to support multithreaded access
(such as the application scope) must use the thread-safe classes.
Expand Down
14 changes: 7 additions & 7 deletions docs/frequently_asked_questions.md
Original file line number Diff line number Diff line change
Expand Up @@ -156,12 +156,12 @@ Ease of use and substantially reduced size.

Guava provides comparable functionality:

* [Reference](https://cowwoc.github.io/pouch/6.1/docs/api/com.github.cowwoc.pouch.core/com/github/cowwoc/pouch/core/Reference.html) <->
* [Reference](https://cowwoc.github.io/pouch/6.2/com.github.cowwoc.pouch.core/com/github/cowwoc/pouch/core/Reference.html) <->
[Supplier](https://guava.dev/releases/32.1.1-jre/api/docs/com/google/common/base/Supplier.html)
* [ConstantReference](https://cowwoc.github.io/pouch/6.1/docs/api/com.github.cowwoc.pouch.core/com/github/cowwoc/pouch/core/ConstantReference.html)
* [ConstantReference](https://cowwoc.github.io/pouch/6.2/com.github.cowwoc.pouch.core/com/github/cowwoc/pouch/core/ConstantReference.html)
<->
[Suppliers.ofInstance()](https://guava.dev/releases/32.1.1-jre/api/docs/com/google/common/base/Suppliers.html#ofInstance-T-)
* [LazyReference](https://cowwoc.github.io/pouch/6.1/docs/api/com.github.cowwoc.pouch.core/com/github/cowwoc/pouch/core/LazyReference.html) <->
* [LazyReference](https://cowwoc.github.io/pouch/6.2/com.github.cowwoc.pouch.core/com/github/cowwoc/pouch/core/LazyReference.html) <->
[Suppliers.memoize()](https://guava.dev/releases/32.1.1-jre/api/docs/com/google/common/base/Suppliers.html#memoize-com.google.common.base.Supplier-)

While it is true
Expand All @@ -175,13 +175,13 @@ For example:
1. [Suppliers.memoize()](https://guava.dev/releases/32.1.1-jre/api/docs/com/google/common/base/Suppliers.html#memoize-com.google.common.base.Supplier-)
doesn't provide a mechanism for checking whether the underlying value has been initialized.
This is important because, when implementing
[Factory.close()](https://cowwoc.github.io/pouch/6.1/docs/api/com.github.cowwoc.pouch.core/com/github/cowwoc/pouch/core/Factory.html#close()),
[Factory.close()](https://cowwoc.github.io/pouch/6.2/com.github.cowwoc.pouch.core/com/github/cowwoc/pouch/core/Factory.html#close()),
you'll want to avoid initializing values that have never been initialized before.
2. This library provides convenience classes such as
[LazyFactory](https://cowwoc.github.io/pouch/6.1/docs/api/com.github.cowwoc.pouch.core/com/github/cowwoc/pouch/core/LazyFactory.html)
[LazyFactory](https://cowwoc.github.io/pouch/6.2/com.github.cowwoc.pouch.core/com/github/cowwoc/pouch/core/LazyFactory.html)
which unifies classes
[LazyReference](https://cowwoc.github.io/pouch/6.1/docs/api/com.github.cowwoc.pouch.core/com/github/cowwoc/pouch/core/LazyReference.html)
and [Closeable](http://docs.oracle.com/javase/8/docs/api/java/io/Closeable.html) into a single class.
[LazyReference](https://cowwoc.github.io/pouch/6.2/com.github.cowwoc.pouch.core/com/github/cowwoc/pouch/core/LazyReference.html)
and [Closeable](http://docs.oracle.com/javase/8/java/io/Closeable.html) into a single class.

The size of the Guava library is 2.8MB.
Pouch is easier to use and smaller with a file size of 18KB.

0 comments on commit 00ebff0

Please sign in to comment.