Compare commits
	
		
			18 commits
		
	
	
		
			dcaffe2e75
			...
			3cd1ff30a8
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
| 3cd1ff30a8 | |||
| 27cdc5104b | |||
| c4abd27ac7 | |||
| 6b88318bcd | |||
| 96f2dce50f | |||
| f786b40961 | |||
| 8caf790529 | |||
| e6c974120b | |||
| 38181e8e00 | |||
| 8adbd23569 | |||
| e3a7732837 | |||
| d9d3c9b863 | |||
| 808bc48ab9 | |||
| 6ebdd6aa31 | |||
| 2ff29317e5 | |||
| 84333d05cd | |||
| 3a8997ca5c | |||
| 8212600d40 | 
					 14 changed files with 208 additions and 36 deletions
				
			
		
							
								
								
									
										22
									
								
								.github/workflows/build.yml
									
										
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										22
									
								
								.github/workflows/build.yml
									
										
									
									
										vendored
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,22 @@
 | 
			
		|||
name: Build
 | 
			
		||||
 | 
			
		||||
on:
 | 
			
		||||
  push:
 | 
			
		||||
    paths:
 | 
			
		||||
      - .github/workflows/build.yml
 | 
			
		||||
      - build.gradle
 | 
			
		||||
      - settings.gradle
 | 
			
		||||
      - src/**
 | 
			
		||||
      - launcher/build.gradle
 | 
			
		||||
      - launcher/src/**
 | 
			
		||||
  workflow_dispatch:
 | 
			
		||||
 | 
			
		||||
jobs:
 | 
			
		||||
  build:
 | 
			
		||||
    runs-on: antville
 | 
			
		||||
 | 
			
		||||
    steps:
 | 
			
		||||
      - uses: actions/checkout@v4
 | 
			
		||||
 | 
			
		||||
      - name: Compile with Gradle
 | 
			
		||||
        run: ./gradlew :compileJava
 | 
			
		||||
							
								
								
									
										23
									
								
								.github/workflows/release.yml
									
										
									
									
										vendored
									
									
								
							
							
						
						
									
										23
									
								
								.github/workflows/release.yml
									
										
									
									
										vendored
									
									
								
							| 
						 | 
				
			
			@ -9,16 +9,27 @@ permissions:
 | 
			
		|||
  contents: write
 | 
			
		||||
 | 
			
		||||
jobs:
 | 
			
		||||
  build:
 | 
			
		||||
  release:
 | 
			
		||||
    runs-on: antville
 | 
			
		||||
 | 
			
		||||
    env:
 | 
			
		||||
      GH_TOKEN: ${{ secrets.GH_TOKEN }}
 | 
			
		||||
      LC_TIME: en_US.UTF-8
 | 
			
		||||
      TODAY: $(date +'%d %b %Y')
 | 
			
		||||
 | 
			
		||||
    steps:
 | 
			
		||||
      - uses: actions/checkout@v4
 | 
			
		||||
        with:
 | 
			
		||||
          fetch-depth: 0
 | 
			
		||||
 | 
			
		||||
      - name: Create release notes
 | 
			
		||||
        id: create_release_notes
 | 
			
		||||
        run: |
 | 
			
		||||
          release_notes=$(npx git-cliff@latest --latest)
 | 
			
		||||
          # Write the release notes as a heredoc to the workflow output
 | 
			
		||||
          # ⚠️ No white space around `<<` is crucial!
 | 
			
		||||
          echo "release_notes<<.eot0x03" >> $GITHUB_OUTPUT
 | 
			
		||||
          echo "$release_notes" >> $GITHUB_OUTPUT
 | 
			
		||||
          echo ".eot0x03" >> $GITHUB_OUTPUT
 | 
			
		||||
 | 
			
		||||
      - name: Build with Gradle
 | 
			
		||||
        run: ./gradlew assembleDist
 | 
			
		||||
| 
						 | 
				
			
			@ -29,17 +40,17 @@ jobs:
 | 
			
		|||
          direction: upload
 | 
			
		||||
          url: https://code.host.antville.org
 | 
			
		||||
          token: ${{ github.token }}
 | 
			
		||||
          title: ${{ env.TODAY }}
 | 
			
		||||
          title: Helma ${{ github.ref_name }}
 | 
			
		||||
          release-dir: build/distributions
 | 
			
		||||
          release-notes-assistant: true
 | 
			
		||||
          release-notes: ${{ steps.create_release_notes.outputs.release_notes }}
 | 
			
		||||
          verbose: true
 | 
			
		||||
 | 
			
		||||
      - name: Create release at GitHub
 | 
			
		||||
        run: |
 | 
			
		||||
          gh release create "$GITHUB_REF_NAME" \
 | 
			
		||||
            --repo "$GITHUB_REPOSITORY" \
 | 
			
		||||
            --title "${{ env.TODAY }}" \
 | 
			
		||||
            --generate-notes
 | 
			
		||||
            --title "Helma ${{ github.ref_name }}" \
 | 
			
		||||
            --notes "${{ steps.create_release_notes.outputs.release_notes }}"
 | 
			
		||||
 | 
			
		||||
      - name: Upload release assets to GitHub
 | 
			
		||||
        run: |
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
							
								
								
									
										32
									
								
								.gitignore
									
										
									
									
										vendored
									
									
								
							
							
						
						
									
										32
									
								
								.gitignore
									
										
									
									
										vendored
									
									
								
							| 
						 | 
				
			
			@ -1,22 +1,30 @@
 | 
			
		|||
.gradle
 | 
			
		||||
.idea
 | 
			
		||||
.settings
 | 
			
		||||
build
 | 
			
		||||
# Generally ignore hidden files
 | 
			
		||||
.*
 | 
			
		||||
 | 
			
		||||
/apps
 | 
			
		||||
# Manage some Codium configuration
 | 
			
		||||
.vscode/*
 | 
			
		||||
!.vscode
 | 
			
		||||
!.vscode/extensions.json
 | 
			
		||||
!.vscode/launch.json
 | 
			
		||||
!.vscode/settings.json
 | 
			
		||||
!.vscode/tasks.json
 | 
			
		||||
 | 
			
		||||
# Ignore files created during build or run
 | 
			
		||||
/bin
 | 
			
		||||
/backups
 | 
			
		||||
/db
 | 
			
		||||
build
 | 
			
		||||
/docs
 | 
			
		||||
/extras
 | 
			
		||||
/lib
 | 
			
		||||
/licenses
 | 
			
		||||
/log
 | 
			
		||||
 | 
			
		||||
# Ignore files managed in src/dist
 | 
			
		||||
/*.properties
 | 
			
		||||
/apps
 | 
			
		||||
/db
 | 
			
		||||
/extras
 | 
			
		||||
/launcher.jar
 | 
			
		||||
/static
 | 
			
		||||
 | 
			
		||||
/*.properties
 | 
			
		||||
/launcher.jar
 | 
			
		||||
/passwd
 | 
			
		||||
/start.*
 | 
			
		||||
 | 
			
		||||
# Manage Gradle configuration
 | 
			
		||||
!/gradle.properties
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
							
								
								
									
										21
									
								
								.vscode/launch.json
									
										
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										21
									
								
								.vscode/launch.json
									
										
									
									
										vendored
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,21 @@
 | 
			
		|||
{
 | 
			
		||||
  // Use IntelliSense to learn about possible attributes.
 | 
			
		||||
  // Hover to view descriptions of existing attributes.
 | 
			
		||||
  // For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387
 | 
			
		||||
  "version": "0.2.0",
 | 
			
		||||
  "configurations": [
 | 
			
		||||
    {
 | 
			
		||||
      "type": "java",
 | 
			
		||||
      "name": "Current File",
 | 
			
		||||
      "request": "launch",
 | 
			
		||||
      "mainClass": "${file}"
 | 
			
		||||
    },
 | 
			
		||||
    {
 | 
			
		||||
      "type": "java",
 | 
			
		||||
      "name": "Debug",
 | 
			
		||||
      "request": "launch",
 | 
			
		||||
      "mainClass": "helma.main.Server",
 | 
			
		||||
      "projectName": "helma_"
 | 
			
		||||
    }
 | 
			
		||||
  ]
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			@ -1,6 +1,6 @@
 | 
			
		|||
# License
 | 
			
		||||
 | 
			
		||||
Copyright (c) 1999-2008 Helma Project. All rights reserved.
 | 
			
		||||
Copyright (c) 1999-2025 Helma Project. All rights reserved.
 | 
			
		||||
 | 
			
		||||
Redistribution and use in source and binary forms, with or without
 | 
			
		||||
modification, are permitted provided that the following conditions
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -3,7 +3,7 @@
 | 
			
		|||
## TL;DR
 | 
			
		||||
 | 
			
		||||
- Make sure you have Java 11 or higher installed
 | 
			
		||||
- Download and unpack the [latest release](https://github.com/antville/helma/releases)
 | 
			
		||||
- Download and unpack the [latest release](https://code.host.antville.org/antville/helma/releases)
 | 
			
		||||
- Invoke `./bin/helma`, resp. `./bin/helma.bat`, depending on your platform
 | 
			
		||||
- Direct your web browser to <http://localhost:8080>
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
							
								
								
									
										17
									
								
								build.gradle
									
										
									
									
									
								
							
							
						
						
									
										17
									
								
								build.gradle
									
										
									
									
									
								
							| 
						 | 
				
			
			@ -42,15 +42,6 @@ if (JavaVersion.current().isJava8Compatible()) {
 | 
			
		|||
  }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
sourceSets {
 | 
			
		||||
  main {
 | 
			
		||||
    java {
 | 
			
		||||
      // Sources in `src` will be available here after processing
 | 
			
		||||
      srcDirs = ["$buildDir/src/main/java"]
 | 
			
		||||
    }
 | 
			
		||||
  }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
configurations {
 | 
			
		||||
  // Wrapping implementation because it does not allow access to its files
 | 
			
		||||
  // (i.e. cannot be resolved)
 | 
			
		||||
| 
						 | 
				
			
			@ -156,9 +147,11 @@ installDist {
 | 
			
		|||
  dependsOn build
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
tasks.register('processSource', Sync) {
 | 
			
		||||
def processSource = tasks.register('processSource', Sync) {
 | 
			
		||||
  def gitOutput = new ByteArrayOutputStream()
 | 
			
		||||
 | 
			
		||||
  outputs.dir "${project.buildDir}/src"
 | 
			
		||||
 | 
			
		||||
  exec {
 | 
			
		||||
    commandLine 'git', 'rev-parse', '--short', 'HEAD'
 | 
			
		||||
    standardOutput = gitOutput
 | 
			
		||||
| 
						 | 
				
			
			@ -173,9 +166,11 @@ tasks.register('processSource', Sync) {
 | 
			
		|||
      .replaceAll('__builddate__', new Date().format("d MMM yyyy"))
 | 
			
		||||
      .replaceAll('__commithash__', gitOutput.toString().trim())
 | 
			
		||||
      .replaceAll('__version__', version)
 | 
			
		||||
  } into "${project.buildDir}/src"
 | 
			
		||||
  } into outputs.files.singleFile
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
tasks.compileJava.source = processSource.map { it.outputs.files }
 | 
			
		||||
 | 
			
		||||
tasks.register('update') {
 | 
			
		||||
  dependsOn installDist
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
							
								
								
									
										52
									
								
								cliff.toml
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										52
									
								
								cliff.toml
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,52 @@
 | 
			
		|||
# git-cliff ~ default configuration file
 | 
			
		||||
# https://git-cliff.org/docs/configuration
 | 
			
		||||
#
 | 
			
		||||
# Lines starting with "#" are comments.
 | 
			
		||||
# Configuration options are organized into tables and keys.
 | 
			
		||||
# See documentation for more information on available options.
 | 
			
		||||
 | 
			
		||||
[changelog]
 | 
			
		||||
trim = true
 | 
			
		||||
 | 
			
		||||
header = "## Changes"
 | 
			
		||||
 | 
			
		||||
body = """
 | 
			
		||||
{% for group, commits in commits | filter(attribute="merge_commit") | group_by(attribute="group") %}
 | 
			
		||||
  ### {{ group | striptags | trim | upper_first }}
 | 
			
		||||
  {% for commit in commits %}
 | 
			
		||||
    * [<tt>{{ commit.id | split(pat="") | slice(end=11) | join() }}</tt>]\
 | 
			
		||||
      (https://code.host.antville.org/antville/helma/commit/{{ commit.id }}) \
 | 
			
		||||
      {% if commit.breaking %}**Breaking:** {% endif %}\
 | 
			
		||||
      {{ commit.message | split(pat="\\n") | first | upper_first | escape }}\
 | 
			
		||||
  {% endfor %}
 | 
			
		||||
{% endfor %}
 | 
			
		||||
 | 
			
		||||
**Full Changelog:** [{{ previous.version }} → {{ version }}]\
 | 
			
		||||
(https://code.host.antville.org/antville/helma/compare/\
 | 
			
		||||
{{ previous.version | urlencode }}..{{ version | urlencode }})\n\n
 | 
			
		||||
"""
 | 
			
		||||
 | 
			
		||||
footer = """
 | 
			
		||||
Generated by [git-cliff](https://git-cliff.org/).
 | 
			
		||||
"""
 | 
			
		||||
 | 
			
		||||
[git]
 | 
			
		||||
conventional_commits = false
 | 
			
		||||
filter_commits = false
 | 
			
		||||
filter_unconventional = false
 | 
			
		||||
protect_breaking_commits = false
 | 
			
		||||
sort_commits = "newest"
 | 
			
		||||
split_commits = false
 | 
			
		||||
topo_order = false
 | 
			
		||||
 | 
			
		||||
commit_parsers = [
 | 
			
		||||
  { message = "^Apply \\d+ suggestion", skip = true },
 | 
			
		||||
  { message = "^Merge .*(branch|dependabot|dependency|renovate)", skip = true },
 | 
			
		||||
  { message = "^Lock file maintenance", skip = true },
 | 
			
		||||
  { message = "yarn\\.lock", skip = true },
 | 
			
		||||
 | 
			
		||||
  { message = "^[Ff]ix", group = "<!-- 0 --> 🐛 Bug Fixes" },
 | 
			
		||||
  { field = "author.name", pattern = "[Rr]enovate|[Dd]ependabot", group = "<!-- 3 --> 📦 Dependency Updates" },
 | 
			
		||||
  { message = "^Merge pull request", group = "<!-- 1 --> 🔀 Merges" },
 | 
			
		||||
  { message = ".*", group = "<!-- 2 --> Uncategorized" },
 | 
			
		||||
]
 | 
			
		||||
							
								
								
									
										
											BIN
										
									
								
								gradle/wrapper/gradle-wrapper.jar
									
										
									
									
										vendored
									
									
								
							
							
						
						
									
										
											BIN
										
									
								
								gradle/wrapper/gradle-wrapper.jar
									
										
									
									
										vendored
									
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										2
									
								
								gradle/wrapper/gradle-wrapper.properties
									
										
									
									
										vendored
									
									
								
							
							
						
						
									
										2
									
								
								gradle/wrapper/gradle-wrapper.properties
									
										
									
									
										vendored
									
									
								
							| 
						 | 
				
			
			@ -1,6 +1,6 @@
 | 
			
		|||
distributionBase=GRADLE_USER_HOME
 | 
			
		||||
distributionPath=wrapper/dists
 | 
			
		||||
distributionUrl=https\://services.gradle.org/distributions/gradle-8.13-bin.zip
 | 
			
		||||
distributionUrl=https\://services.gradle.org/distributions/gradle-8.14-bin.zip
 | 
			
		||||
networkTimeout=10000
 | 
			
		||||
validateDistributionUrl=true
 | 
			
		||||
zipStoreBase=GRADLE_USER_HOME
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
							
								
								
									
										4
									
								
								gradlew
									
										
									
									
										vendored
									
									
								
							
							
						
						
									
										4
									
								
								gradlew
									
										
									
									
										vendored
									
									
								
							| 
						 | 
				
			
			@ -114,7 +114,7 @@ case "$( uname )" in                #(
 | 
			
		|||
  NONSTOP* )        nonstop=true ;;
 | 
			
		||||
esac
 | 
			
		||||
 | 
			
		||||
CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar
 | 
			
		||||
CLASSPATH="\\\"\\\""
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
# Determine the Java command to use to start the JVM.
 | 
			
		||||
| 
						 | 
				
			
			@ -213,7 +213,7 @@ DEFAULT_JVM_OPTS='"-Xmx64m" "-Xms64m"'
 | 
			
		|||
set -- \
 | 
			
		||||
        "-Dorg.gradle.appname=$APP_BASE_NAME" \
 | 
			
		||||
        -classpath "$CLASSPATH" \
 | 
			
		||||
        org.gradle.wrapper.GradleWrapperMain \
 | 
			
		||||
        -jar "$APP_HOME/gradle/wrapper/gradle-wrapper.jar" \
 | 
			
		||||
        "$@"
 | 
			
		||||
 | 
			
		||||
# Stop when "xargs" is not available.
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
							
								
								
									
										4
									
								
								gradlew.bat
									
										
									
									
										vendored
									
									
								
							
							
						
						
									
										4
									
								
								gradlew.bat
									
										
									
									
										vendored
									
									
								
							| 
						 | 
				
			
			@ -70,11 +70,11 @@ goto fail
 | 
			
		|||
:execute
 | 
			
		||||
@rem Setup the command line
 | 
			
		||||
 | 
			
		||||
set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar
 | 
			
		||||
set CLASSPATH=
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
@rem Execute Gradle
 | 
			
		||||
"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %*
 | 
			
		||||
"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" -jar "%APP_HOME%\gradle\wrapper\gradle-wrapper.jar" %*
 | 
			
		||||
 | 
			
		||||
:end
 | 
			
		||||
@rem End local scope for the variables with windows NT shell
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -16,3 +16,6 @@ project(':modules').projectDir = file('modules/helma')
 | 
			
		|||
project(':jala').projectDir = file('modules/jala')
 | 
			
		||||
project(':hopKit').projectDir = file('modules/jala/util/HopKit')
 | 
			
		||||
project(':test').projectDir = file('modules/jala/util/Test')
 | 
			
		||||
 | 
			
		||||
// Rename this project to prevent redundancy and renaming of main project (VSC does not care, though)
 | 
			
		||||
project(':modules').name = 'modules'
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
							
								
								
									
										60
									
								
								src/dist/extras/deploy.sh
									
										
									
									
										vendored
									
									
										Executable file
									
								
							
							
						
						
									
										60
									
								
								src/dist/extras/deploy.sh
									
										
									
									
										vendored
									
									
										Executable file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,60 @@
 | 
			
		|||
#!/bin/sh
 | 
			
		||||
 | 
			
		||||
# Use this script as forced command of an authorized SSH key:
 | 
			
		||||
# command="/home/helma/extras/deploy.sh" ssh-ed25519 AAAAC3NzaC…
 | 
			
		||||
 | 
			
		||||
# Define HELMA_HOST and ANTVILLE_HOST in this file
 | 
			
		||||
# shellcheck source=/dev/null
 | 
			
		||||
. "$HOME"/deploy.env
 | 
			
		||||
 | 
			
		||||
case "$SSH_ORIGINAL_COMMAND" in
 | 
			
		||||
  ping)
 | 
			
		||||
    echo pong
 | 
			
		||||
    ;;
 | 
			
		||||
 | 
			
		||||
  deploy-helma)
 | 
			
		||||
    rsync ./ "$HELMA_HOST":./ \
 | 
			
		||||
      --archive --compress --delete --verbose \
 | 
			
		||||
      --filter '+ /bin' \
 | 
			
		||||
      --filter '+ /extras' \
 | 
			
		||||
      --filter '+ /launcher.jar' \
 | 
			
		||||
      --filter '- /lib/ext' \
 | 
			
		||||
      --filter '+ /lib' \
 | 
			
		||||
      --filter '+ /modules' \
 | 
			
		||||
      --filter '- /*'
 | 
			
		||||
    printf 'Restarting Helma on HELMA_host… '
 | 
			
		||||
    ssh "$HELMA_HOST" sudo /bin/systemctl restart helma
 | 
			
		||||
    ;;
 | 
			
		||||
 | 
			
		||||
  deploy-antville)
 | 
			
		||||
    rsync ./apps/antville/ "$ANTVILLE_HOST":./apps/antville/ \
 | 
			
		||||
      --archive --compress --delete --verbose \
 | 
			
		||||
      --filter '+ /claustra' \
 | 
			
		||||
      --filter '+ /code' \
 | 
			
		||||
      --filter '+ /compat' \
 | 
			
		||||
      --filter '+ /i18n' \
 | 
			
		||||
      --filter '+ /lib' \
 | 
			
		||||
      --filter '- /*'
 | 
			
		||||
    rsync ./apps/antville/static/helma/ "$ANTVILLE_HOST":./apps/antville/static/helma/ \
 | 
			
		||||
      --archive --compress --verbose \
 | 
			
		||||
      --filter '+ /fonts' \
 | 
			
		||||
      --filter '+ /formica.html' \
 | 
			
		||||
      --filter '+ /img' \
 | 
			
		||||
      --filter '+ /scripts' \
 | 
			
		||||
      --filter '+ /styles' \
 | 
			
		||||
      --filter '- /*'
 | 
			
		||||
    printf 'Restarting Helma on ANTVILLE_host… '
 | 
			
		||||
    ssh "$ANTVILLE_HOST" sudo /bin/systemctl restart helma
 | 
			
		||||
    ;;
 | 
			
		||||
 | 
			
		||||
  restart)
 | 
			
		||||
    printf 'Restarting Helma… '
 | 
			
		||||
    sudo /bin/systemctl restart helma
 | 
			
		||||
    printf '%s\n' 'done.'
 | 
			
		||||
    ;;
 | 
			
		||||
 | 
			
		||||
  *)
 | 
			
		||||
    # Allow any rsync command but restrict it to the installation directory
 | 
			
		||||
    rrsync -wo /home/helma
 | 
			
		||||
    ;;
 | 
			
		||||
esac
 | 
			
		||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue