From 88a7aa1d02d1ec70086cb671e3eda391bd53bfc6 Mon Sep 17 00:00:00 2001 From: Adam Retter Date: Wed, 17 Apr 2019 13:03:23 +0800 Subject: [PATCH] Start of adding support for a Windows PowerShell platform 'windows-ps' --- .../src/it/daemonScriptNameTest/verify.groovy | 4 ++ .../daemon/script/DefaultScriptGenerator.java | 14 +++++- .../appassembler/daemon/script/Platform.java | 31 +++++++++--- .../daemon/script/windowsPsBinTemplate | 29 ++++++++++++ .../expected-basedir-test.ps1 | 47 +++++++++++++++++++ .../expected-repo-test.ps1 | 47 +++++++++++++++++++ .../expected-false-showConsoleWindow-test.ps1 | 47 +++++++++++++++++++ .../script/expected-test-endorsed-lib.ps1 | 47 +++++++++++++++++++ .../daemon/script/expected-test.ps1 | 47 +++++++++++++++++++ 9 files changed, 305 insertions(+), 8 deletions(-) create mode 100644 appassembler-maven-plugin/src/main/resources/org/codehaus/mojo/appassembler/daemon/script/windowsPsBinTemplate create mode 100644 appassembler-maven-plugin/src/test/resources/org/codehaus/mojo/appassembler/daemon/script-basedir-repo/expected-basedir-test.ps1 create mode 100644 appassembler-maven-plugin/src/test/resources/org/codehaus/mojo/appassembler/daemon/script-basedir-repo/expected-repo-test.ps1 create mode 100644 appassembler-maven-plugin/src/test/resources/org/codehaus/mojo/appassembler/daemon/script/background/expected-false-showConsoleWindow-test.ps1 create mode 100644 appassembler-maven-plugin/src/test/resources/org/codehaus/mojo/appassembler/daemon/script/expected-test-endorsed-lib.ps1 create mode 100644 appassembler-maven-plugin/src/test/resources/org/codehaus/mojo/appassembler/daemon/script/expected-test.ps1 diff --git a/appassembler-maven-plugin/src/it/daemonScriptNameTest/verify.groovy b/appassembler-maven-plugin/src/it/daemonScriptNameTest/verify.groovy index 88190175..e86a0c6d 100644 --- a/appassembler-maven-plugin/src/it/daemonScriptNameTest/verify.groovy +++ b/appassembler-maven-plugin/src/it/daemonScriptNameTest/verify.groovy @@ -35,6 +35,7 @@ class CheckFolder { // Check the existence of the generated unix script def unixScriptFile = new File( fileBinFolder, "executable" ); def windowsScriptFile = new File( fileBinFolder, "executable.bat" ); + def windowsPsScriptFile = new File( fileBinFolder, "executable.ps" ); if (unixScriptFile.exists()) { throw new FileNotFoundException("The file " + unixScriptFile + " does not exist."); @@ -42,6 +43,9 @@ class CheckFolder { if (windowsScriptFile.exists()) { throw new FileNotFoundException("The file " + windowsScriptFile + " does not exist."); } + if (windowsPsScriptFile.exists()) { + throw new FileNotFoundException("The file " + windowsPsScriptFile + " does not exist."); + } } } diff --git a/appassembler-maven-plugin/src/main/java/org/codehaus/mojo/appassembler/daemon/script/DefaultScriptGenerator.java b/appassembler-maven-plugin/src/main/java/org/codehaus/mojo/appassembler/daemon/script/DefaultScriptGenerator.java index f15b0e5b..e7c02d9d 100644 --- a/appassembler-maven-plugin/src/main/java/org/codehaus/mojo/appassembler/daemon/script/DefaultScriptGenerator.java +++ b/appassembler-maven-plugin/src/main/java/org/codehaus/mojo/appassembler/daemon/script/DefaultScriptGenerator.java @@ -324,7 +324,19 @@ private InputStream getScriptTemplate( String platformName, Daemon daemon ) } else { - is = getClass().getResourceAsStream( platformName + "BinTemplate" ); + String scriptTemplatePrefix = platformName; + while (true) { + int idx = scriptTemplatePrefix.indexOf('-'); + if (idx == -1 || scriptTemplatePrefix.length() < 2) { + break; + } + + scriptTemplatePrefix = ( scriptTemplatePrefix.substring( 0, idx ) + + Character.toUpperCase( scriptTemplatePrefix.charAt( idx + 1 ) ) + + scriptTemplatePrefix.substring( idx + 2 ) ); + } + + is = getClass().getResourceAsStream( scriptTemplatePrefix + "BinTemplate" ); if ( is == null ) { throw new DaemonGeneratorException( "Unable to load internal template resource: " + platformName diff --git a/appassembler-maven-plugin/src/main/java/org/codehaus/mojo/appassembler/daemon/script/Platform.java b/appassembler-maven-plugin/src/main/java/org/codehaus/mojo/appassembler/daemon/script/Platform.java index 323bcbd4..3b04293a 100644 --- a/appassembler-maven-plugin/src/main/java/org/codehaus/mojo/appassembler/daemon/script/Platform.java +++ b/appassembler-maven-plugin/src/main/java/org/codehaus/mojo/appassembler/daemon/script/Platform.java @@ -61,6 +61,11 @@ public class Platform */ public static final String WINDOWS_NAME = "windows"; + /** + * Windows Powershell Platform name + */ + public static final String WINDOWS_PS_NAME = "windows-ps"; + private static final Map ALL_PLATFORMS; private static final String DEFAULT_UNIX_BIN_FILE_EXTENSION = ""; @@ -73,6 +78,10 @@ public class Platform private boolean isWindows; + private boolean isPowerShell; + + private String commentPrefix; + // ----------------------------------------------------------------------- // Static // ----------------------------------------------------------------------- @@ -80,8 +89,9 @@ public class Platform static { ALL_PLATFORMS = new HashMap(); - addPlatform( new Platform( UNIX_NAME, false, DEFAULT_UNIX_BIN_FILE_EXTENSION ) ); - addPlatform( new Platform( WINDOWS_NAME, true, DEFAULT_WINDOWS_BIN_FILE_EXTENSION ) ); + addPlatform( new Platform( UNIX_NAME, false, false, DEFAULT_UNIX_BIN_FILE_EXTENSION, "# " ) ); + addPlatform( new Platform( WINDOWS_NAME, true, false, DEFAULT_WINDOWS_BIN_FILE_EXTENSION, "@REM " ) ); + addPlatform( new Platform( WINDOWS_PS_NAME, true, true, ".ps1", "# " ) ); } private static Platform addPlatform( Platform platform ) @@ -193,13 +203,17 @@ public static Set getPlatformSet( List platformList, Set