picrate 0.7.0-java → 0.8.0-java

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (55) hide show
  1. checksums.yaml +4 -4
  2. data/.gitignore +1 -1
  3. data/.mvn/wrapper/MavenWrapperDownloader.java +117 -0
  4. data/.mvn/wrapper/maven-wrapper.properties +2 -1
  5. data/.travis.yml +2 -5
  6. data/CHANGELOG.md +4 -0
  7. data/README.md +3 -3
  8. data/Rakefile +15 -27
  9. data/docs/_config.yml +1 -1
  10. data/docs/_posts/2018-05-11-arch-linux-arm.md +1 -1
  11. data/docs/_posts/2018-11-18-building-gem.md +1 -1
  12. data/lib/picrate/app.rb +1 -1
  13. data/lib/picrate/native_folder.rb +1 -1
  14. data/lib/picrate/version.rb +1 -1
  15. data/mvnw +127 -51
  16. data/mvnw.cmd +182 -0
  17. data/pom.rb +39 -30
  18. data/pom.xml +50 -37
  19. data/src/main/java/monkstone/ColorUtil.java +1 -1
  20. data/src/main/java/monkstone/core/LibraryProxy.java +0 -1
  21. data/src/main/java/monkstone/noise/SimplexNoise.java +1 -1
  22. data/src/main/java/monkstone/vecmath/GfxRender.java +87 -0
  23. data/src/main/java/monkstone/vecmath/ShapeRender.java +1 -1
  24. data/src/main/java/monkstone/vecmath/vec2/Vec2.java +1 -1
  25. data/src/main/java/processing/awt/PGraphicsJava2D.java +48 -50
  26. data/src/main/java/processing/awt/PShapeJava2D.java +10 -0
  27. data/src/main/java/processing/awt/PSurfaceAWT.java +315 -371
  28. data/src/main/java/processing/core/PApplet.java +15424 -15495
  29. data/src/main/java/processing/core/PConstants.java +4 -4
  30. data/src/main/java/processing/core/PFont.java +394 -369
  31. data/src/main/java/processing/core/PGraphics.java +11 -10
  32. data/src/main/java/processing/core/PImage.java +1389 -1435
  33. data/src/main/java/processing/core/PMatrix2D.java +297 -294
  34. data/src/main/java/processing/core/PMatrix3D.java +641 -594
  35. data/src/main/java/processing/core/PShape.java +1755 -1784
  36. data/src/main/java/processing/core/PShapeOBJ.java +145 -133
  37. data/src/main/java/processing/core/PShapeSVG.java +808 -801
  38. data/src/main/java/processing/core/PStyle.java +141 -149
  39. data/src/main/java/processing/core/PSurface.java +111 -117
  40. data/src/main/java/processing/core/PSurfaceNone.java +178 -187
  41. data/src/main/java/processing/javafx/PGraphicsFX2D.java +349 -346
  42. data/src/main/java/processing/opengl/FontTexture.java +40 -59
  43. data/src/main/java/processing/opengl/FrameBuffer.java +28 -18
  44. data/src/main/java/processing/opengl/LinePath.java +7 -7
  45. data/src/main/java/processing/opengl/LineStroker.java +6 -10
  46. data/src/main/java/processing/opengl/PGL.java +56 -44
  47. data/src/main/java/processing/opengl/PGraphicsOpenGL.java +909 -2338
  48. data/src/main/java/processing/opengl/PJOGL.java +1722 -1763
  49. data/src/main/java/processing/opengl/PShader.java +1308 -1192
  50. data/src/main/java/processing/opengl/PShapeOpenGL.java +487 -1811
  51. data/src/main/java/processing/opengl/PSurfaceJOGL.java +482 -497
  52. data/src/main/java/processing/opengl/Texture.java +99 -76
  53. data/src/main/java/processing/opengl/VertexBuffer.java +41 -43
  54. data/vendors/Rakefile +1 -1
  55. metadata +7 -4
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 503789e011ca3a619d42a03d351463c02e8cf64c8119dab588b8e0f826415ad0
4
- data.tar.gz: e2092cab3393155d0a29da02616755a9e4c14e1d5a9ecb9eadec68b248383348
3
+ metadata.gz: b61e2d7b8def114783f856a3c42110aae89c5beaf90e8737c5f5fc203bf2d4d2
4
+ data.tar.gz: ec972b9e8d0f31e4455c3faac984564f1d6f4608bc71a824d12212c0eba6e5c9
5
5
  SHA512:
6
- metadata.gz: 7459a92d1eb700e7c4c3c71f57de09453456768789b1878380e699c118a6e7f382bae314308e8a01cfbf9a601621f826ba91720b981bd049ba330d328605e7da
7
- data.tar.gz: 9a84ceac91c0b6f3c26baf6f1eb497ef73cd872940bac442942c55c19ce329fe26a49bb2b87bcb934455de072166948fabea5b3c09594e8d8ad3b7799a214f9c
6
+ metadata.gz: d3590fff2e8dca810b933a689670c34a2b4cb430e6f5ed536c822808dee52522eae3da2b82ddfe96e23900b6f107669172ec1916f9e3f416bb930bddab620b5e
7
+ data.tar.gz: 11fd27d89c0ceb023382f7fabbbb4ca13dbae860017b4db199c1fe701d2f7ff08bb569df20f951743ba5e00d4c6b72e7eb0952674128d5b8861bcd59e8e164b0
data/.gitignore CHANGED
@@ -9,7 +9,7 @@
9
9
 
10
10
  # Mobile Tools for Java (J2ME)
11
11
  .mtj.tmp/
12
-
12
+ nb-configuration.xml
13
13
  # Package Files #
14
14
  *.jar
15
15
  *.war
@@ -0,0 +1,117 @@
1
+ /*
2
+ * Copyright 2007-present the original author or authors.
3
+ *
4
+ * Licensed under the Apache License, Version 2.0 (the "License");
5
+ * you may not use this file except in compliance with the License.
6
+ * You may obtain a copy of the License at
7
+ *
8
+ * http://www.apache.org/licenses/LICENSE-2.0
9
+ *
10
+ * Unless required by applicable law or agreed to in writing, software
11
+ * distributed under the License is distributed on an "AS IS" BASIS,
12
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
+ * See the License for the specific language governing permissions and
14
+ * limitations under the License.
15
+ */
16
+ import java.net.*;
17
+ import java.io.*;
18
+ import java.nio.channels.*;
19
+ import java.util.Properties;
20
+
21
+ public class MavenWrapperDownloader {
22
+
23
+ private static final String WRAPPER_VERSION = "0.5.5";
24
+ /**
25
+ * Default URL to download the maven-wrapper.jar from, if no 'downloadUrl' is provided.
26
+ */
27
+ private static final String DEFAULT_DOWNLOAD_URL = "https://repo.maven.apache.org/maven2/io/takari/maven-wrapper/"
28
+ + WRAPPER_VERSION + "/maven-wrapper-" + WRAPPER_VERSION + ".jar";
29
+
30
+ /**
31
+ * Path to the maven-wrapper.properties file, which might contain a downloadUrl property to
32
+ * use instead of the default one.
33
+ */
34
+ private static final String MAVEN_WRAPPER_PROPERTIES_PATH =
35
+ ".mvn/wrapper/maven-wrapper.properties";
36
+
37
+ /**
38
+ * Path where the maven-wrapper.jar will be saved to.
39
+ */
40
+ private static final String MAVEN_WRAPPER_JAR_PATH =
41
+ ".mvn/wrapper/maven-wrapper.jar";
42
+
43
+ /**
44
+ * Name of the property which should be used to override the default download url for the wrapper.
45
+ */
46
+ private static final String PROPERTY_NAME_WRAPPER_URL = "wrapperUrl";
47
+
48
+ public static void main(String args[]) {
49
+ System.out.println("- Downloader started");
50
+ File baseDirectory = new File(args[0]);
51
+ System.out.println("- Using base directory: " + baseDirectory.getAbsolutePath());
52
+
53
+ // If the maven-wrapper.properties exists, read it and check if it contains a custom
54
+ // wrapperUrl parameter.
55
+ File mavenWrapperPropertyFile = new File(baseDirectory, MAVEN_WRAPPER_PROPERTIES_PATH);
56
+ String url = DEFAULT_DOWNLOAD_URL;
57
+ if(mavenWrapperPropertyFile.exists()) {
58
+ FileInputStream mavenWrapperPropertyFileInputStream = null;
59
+ try {
60
+ mavenWrapperPropertyFileInputStream = new FileInputStream(mavenWrapperPropertyFile);
61
+ Properties mavenWrapperProperties = new Properties();
62
+ mavenWrapperProperties.load(mavenWrapperPropertyFileInputStream);
63
+ url = mavenWrapperProperties.getProperty(PROPERTY_NAME_WRAPPER_URL, url);
64
+ } catch (IOException e) {
65
+ System.out.println("- ERROR loading '" + MAVEN_WRAPPER_PROPERTIES_PATH + "'");
66
+ } finally {
67
+ try {
68
+ if(mavenWrapperPropertyFileInputStream != null) {
69
+ mavenWrapperPropertyFileInputStream.close();
70
+ }
71
+ } catch (IOException e) {
72
+ // Ignore ...
73
+ }
74
+ }
75
+ }
76
+ System.out.println("- Downloading from: " + url);
77
+
78
+ File outputFile = new File(baseDirectory.getAbsolutePath(), MAVEN_WRAPPER_JAR_PATH);
79
+ if(!outputFile.getParentFile().exists()) {
80
+ if(!outputFile.getParentFile().mkdirs()) {
81
+ System.out.println(
82
+ "- ERROR creating output directory '" + outputFile.getParentFile().getAbsolutePath() + "'");
83
+ }
84
+ }
85
+ System.out.println("- Downloading to: " + outputFile.getAbsolutePath());
86
+ try {
87
+ downloadFileFromURL(url, outputFile);
88
+ System.out.println("Done");
89
+ System.exit(0);
90
+ } catch (Throwable e) {
91
+ System.out.println("- Error downloading");
92
+ e.printStackTrace();
93
+ System.exit(1);
94
+ }
95
+ }
96
+
97
+ private static void downloadFileFromURL(String urlString, File destination) throws Exception {
98
+ if (System.getenv("MVNW_USERNAME") != null && System.getenv("MVNW_PASSWORD") != null) {
99
+ String username = System.getenv("MVNW_USERNAME");
100
+ char[] password = System.getenv("MVNW_PASSWORD").toCharArray();
101
+ Authenticator.setDefault(new Authenticator() {
102
+ @Override
103
+ protected PasswordAuthentication getPasswordAuthentication() {
104
+ return new PasswordAuthentication(username, password);
105
+ }
106
+ });
107
+ }
108
+ URL website = new URL(urlString);
109
+ ReadableByteChannel rbc;
110
+ rbc = Channels.newChannel(website.openStream());
111
+ FileOutputStream fos = new FileOutputStream(destination);
112
+ fos.getChannel().transferFrom(rbc, 0, Long.MAX_VALUE);
113
+ fos.close();
114
+ rbc.close();
115
+ }
116
+
117
+ }
@@ -1 +1,2 @@
1
- distributionUrl=https://repo1.maven.org/maven2/org/apache/maven/apache-maven/3.6.0/apache-maven-3.6.0-bin.zip
1
+ distributionUrl=https://repo.maven.apache.org/maven2/org/apache/maven/apache-maven/3.6.1/apache-maven-3.6.1-bin.zip
2
+ wrapperUrl=https://repo.maven.apache.org/maven2/io/takari/maven-wrapper/0.5.5/maven-wrapper-0.5.5.jar
@@ -1,10 +1,7 @@
1
- language: ruby
2
- sudo: false
1
+ language: java
3
2
  dist: trusty
4
3
 
5
- rvm:
6
- - jruby-9.2.4.0
7
4
  jdk:
8
- - oraclejdk8
5
+ - openjdk11
9
6
  os:
10
7
  - linux
@@ -1,3 +1,7 @@
1
+ v0.8.0 Refactor processing code to jdk8 syntax, include lambda, switch on string etc. Make some methods used in constructors (eg allocate) final, might cause breakages? Using maven `release` flag which assumes build with jdk9+ (though targeting 8, which only supports `source` & `release` flags). The Jar manifest is now dynamically created by maven, which allows `travisci` to pass on java build.
2
+
3
+ v0.7.1 Oops fix `GfxRender` had not been merged
4
+
1
5
  v0.7.0 Refactor sketch_writer to load params from ~/.picrate/sketch.yml. `AppRender => GfxRender` because we only need `PGraphics` in renderer.
2
6
 
3
7
  v0.6.0 Re-branding with new 'pick'/'eight' svg for PiCrate
data/README.md CHANGED
@@ -1,4 +1,4 @@
1
- __C6H3N3O7__ [![Gem Version](https://badge.fury.io/rb/picrate.svg)](https://badge.fury.io/rb/picrate)
1
+ __C6H3N3O7__ [![Gem Version](https://badge.fury.io/rb/picrate.svg)](https://badge.fury.io/rb/picrate)![Travis CI](https://travis-ci.org/ruby-processing/PiCrate.svg)
2
2
 
3
3
  # PiCrate
4
4
  Create processing sketches in ruby on raspberry-pi and linux (this project is a parallel development of [propane][propane] targetting the raspberry-pi, but will initially be developed on a regular linux box). The aim is to produce a gem installable app that can be run with jruby, with minimal dependencies. Drop the `C` and you get pirate, or and an `e` and get `PiCreate`, a happy coincidence?
@@ -13,12 +13,12 @@ jgem install picrate
13
13
 
14
14
  Clone this repo:-
15
15
 
16
- Requires maven, [jdk8][oracle] (but could be openjdk), and a jruby install.
16
+ Requires maven, openjdk11 (to build, uses `release` flag), and a jdk8 and jruby to install.
17
17
 
18
18
  ```bash
19
19
  cd PiCrate
20
20
  rake # assumes an installed version of vanilla processing
21
- jgem install picrate-0.6.0-java.gem
21
+ jgem install picrate-0.8.0-java.gem
22
22
  ```
23
23
  To create a template sketch:-
24
24
  ```bash
data/Rakefile CHANGED
@@ -1,28 +1,16 @@
1
- # frozen_string_literal: false
2
-
3
- require 'fileutils'
4
- require_relative 'lib/picrate/version'
1
+ require_relative './lib/picrate/version'
5
2
 
6
3
  HOME_DIR = ENV['HOME']
7
4
 
8
- def create_manifest
9
- title = 'Implementation-Title: PiCrate'
10
- version = format('Implementation-Version: %s', PiCrate::VERSION)
11
- File.open('MANIFEST.MF', 'w') do |f|
12
- f.puts(title)
13
- f.puts(version)
14
- f.puts('Class-Path: gluegen-rt.jar jog-all.jar')
15
- end
16
- end
17
-
18
- task default: [:init, :compile, :install, :test, :gem]
5
+ task default: %i[init compile install test gem]
19
6
 
20
7
  # depends on installed processing, with processing on path
21
- desc 'Create Manifest and Copy Jars'
8
+ desc 'Copy Jars'
22
9
  task :init do
23
- create_manifest
24
- # processing_root = File.dirname(`readlink -f $(which processing)`) # for Archlinux etc
25
- processing_root = File.join(HOME_DIR, 'processing-3.5.3') # alternative for debian linux etc
10
+ # for Archlinux etc
11
+ processing_root = File.dirname(`readlink -f $(which processing)`)
12
+ # alternative for debian linux etc
13
+ # processing_root = File.join(HOME_DIR, 'processing-3.5.3')
26
14
  jar_dir = File.join(processing_root, 'core', 'library')
27
15
  opengl = Dir.entries(jar_dir).grep(/amd64|armv6hf/).select { |jar| jar =~ /linux/ }
28
16
  opengl.concat %w[jogl-all.jar gluegen-rt.jar]
@@ -38,26 +26,26 @@ end
38
26
 
39
27
  desc 'Gem'
40
28
  task :gem do
41
- sh 'gem build picrate.gemspec'
29
+ system 'gem build picrate.gemspec'
42
30
  end
43
31
 
44
32
  desc 'Document'
45
33
  task :javadoc do
46
- sh 'mvn javadoc:javadoc'
34
+ system 'mvn javadoc:javadoc'
47
35
  end
48
36
 
49
37
  desc 'Compile'
50
38
  task :compile do
51
- sh 'mvn package'
39
+ system 'mvn package'
52
40
  end
53
41
 
54
42
  desc 'Test'
55
43
  task :test do
56
- sh 'jruby test/helper_methods_test.rb'
57
- sh 'jruby test/respond_to_test.rb' # Skip this test on Travis etc
58
- sh 'jruby test/math_tool_test.rb'
59
- sh 'jruby test/deglut_spec_test.rb'
60
- sh 'jruby test/vecmath_spec_test.rb'
44
+ system 'jruby test/helper_methods_test.rb'
45
+ system 'jruby test/respond_to_test.rb' # Skip this test on Travis etc
46
+ system 'jruby test/math_tool_test.rb'
47
+ system 'jruby test/deglut_spec_test.rb'
48
+ system 'jruby test/vecmath_spec_test.rb'
61
49
  end
62
50
 
63
51
  desc 'clean'
@@ -3,7 +3,7 @@ port: 4000
3
3
  title: PiCrate gem
4
4
  email: mamba2928@yahoo.co.uk
5
5
  description: > # this means to ignore newlines until "baseurl:"
6
- The picrate gem is ruby wrapper around processing, targetting raspberrypi and
6
+ The picrate gem is ruby implementation of processing, targetting raspberrypi and
7
7
  linux
8
8
  baseurl: "" # the subpath of your site, e.g. /blog
9
9
  regenerate: true
@@ -8,7 +8,7 @@ It is quite likely that people wishing to experiment with PiCrate on arm have mo
8
8
 
9
9
  ```bash
10
10
  sudo pacman -Syu # get up to data
11
- sudo pacman jdk-arm # but I'm not 100% sure what version is installed jdk8 is reqd / and preferred over later
11
+ sudo pacman jdk-arm # but I'm not 100% sure what version is installed jdk8+ is reqd
12
12
  sudo archlinux-java set java-8-openjdk/jre # case you have more than one java installed
13
13
  sudo pacman jruby # should install latest version
14
14
  ```
@@ -8,7 +8,7 @@ Requirements:-
8
8
 
9
9
  1. An installed version of vanilla processing to provide `processing.org` customised version of the `jogl` jars. The default `Rakefile` assumes root installation of processing, for debian distros you will need to adjust `processing_root` _ca. line 20_.
10
10
 
11
- 2. jdk-8 and maven
11
+ 2. jdk-11 and maven (builds for jdk-8)
12
12
 
13
13
  Simply clone this distribution, then rake to build and test gem
14
14
  ```bash
@@ -11,7 +11,7 @@ module Processing
11
11
  # JRuby::Util.load_ext('monkstone.PicrateLibrary')
12
12
  # A utility to facilitate rendering of Vec2D and Vec3D as vertex
13
13
  module Render
14
- java_import 'monkstone.vecmath.AppRender'
14
+ java_import 'monkstone.vecmath.GfxRender'
15
15
  java_import 'monkstone.vecmath.ShapeRender'
16
16
  end
17
17
 
@@ -19,7 +19,7 @@ class NativeFolder
19
19
  return format(LINUX_FORMAT, '64') if /amd64/.match?(bit)
20
20
  return format(LINUX_FORMAT, ARM32) if /arm/.match?(bit)
21
21
  end
22
- raise RuntimeError, "Unsupported Archicture"
22
+ raise RuntimeError, "Unsupported Architecture"
23
23
  end
24
24
 
25
25
  def extension
@@ -1,4 +1,4 @@
1
1
  # frozen_string_literal: true
2
2
  module PiCrate
3
- VERSION = '0.7.0'.freeze
3
+ VERSION = '0.8.0'
4
4
  end
data/mvnw CHANGED
@@ -54,38 +54,16 @@ case "`uname`" in
54
54
  CYGWIN*) cygwin=true ;;
55
55
  MINGW*) mingw=true;;
56
56
  Darwin*) darwin=true
57
- #
58
- # Look for the Apple JDKs first to preserve the existing behaviour, and then look
59
- # for the new JDKs provided by Oracle.
60
- #
61
- if [ -z "$JAVA_HOME" ] && [ -L /System/Library/Frameworks/JavaVM.framework/Versions/CurrentJDK ] ; then
62
- #
63
- # Apple JDKs
64
- #
65
- export JAVA_HOME=/System/Library/Frameworks/JavaVM.framework/Versions/CurrentJDK/Home
66
- fi
67
-
68
- if [ -z "$JAVA_HOME" ] && [ -L /System/Library/Java/JavaVirtualMachines/CurrentJDK ] ; then
69
- #
70
- # Apple JDKs
71
- #
72
- export JAVA_HOME=/System/Library/Java/JavaVirtualMachines/CurrentJDK/Contents/Home
73
- fi
74
-
75
- if [ -z "$JAVA_HOME" ] && [ -L "/Library/Java/JavaVirtualMachines/CurrentJDK" ] ; then
76
- #
77
- # Oracle JDKs
78
- #
79
- export JAVA_HOME=/Library/Java/JavaVirtualMachines/CurrentJDK/Contents/Home
80
- fi
81
-
82
- if [ -z "$JAVA_HOME" ] && [ -x "/usr/libexec/java_home" ]; then
83
- #
84
- # Apple JDKs
85
- #
86
- export JAVA_HOME=`/usr/libexec/java_home`
87
- fi
88
- ;;
57
+ # Use /usr/libexec/java_home if available, otherwise fall back to /Library/Java/Home
58
+ # See https://developer.apple.com/library/mac/qa/qa1170/_index.html
59
+ if [ -z "$JAVA_HOME" ]; then
60
+ if [ -x "/usr/libexec/java_home" ]; then
61
+ export JAVA_HOME="`/usr/libexec/java_home`"
62
+ else
63
+ export JAVA_HOME="/Library/Java/Home"
64
+ fi
65
+ fi
66
+ ;;
89
67
  esac
90
68
 
91
69
  if [ -z "$JAVA_HOME" ] ; then
@@ -130,13 +108,12 @@ if $cygwin ; then
130
108
  CLASSPATH=`cygpath --path --unix "$CLASSPATH"`
131
109
  fi
132
110
 
133
- # For Migwn, ensure paths are in UNIX format before anything is touched
111
+ # For Mingw, ensure paths are in UNIX format before anything is touched
134
112
  if $mingw ; then
135
113
  [ -n "$M2_HOME" ] &&
136
114
  M2_HOME="`(cd "$M2_HOME"; pwd)`"
137
115
  [ -n "$JAVA_HOME" ] &&
138
116
  JAVA_HOME="`(cd "$JAVA_HOME"; pwd)`"
139
- # TODO classpath?
140
117
  fi
141
118
 
142
119
  if [ -z "$JAVA_HOME" ]; then
@@ -184,27 +161,28 @@ fi
184
161
 
185
162
  CLASSWORLDS_LAUNCHER=org.codehaus.plexus.classworlds.launcher.Launcher
186
163
 
187
- # For Cygwin, switch paths to Windows format before running java
188
- if $cygwin; then
189
- [ -n "$M2_HOME" ] &&
190
- M2_HOME=`cygpath --path --windows "$M2_HOME"`
191
- [ -n "$JAVA_HOME" ] &&
192
- JAVA_HOME=`cygpath --path --windows "$JAVA_HOME"`
193
- [ -n "$CLASSPATH" ] &&
194
- CLASSPATH=`cygpath --path --windows "$CLASSPATH"`
195
- fi
196
-
197
164
  # traverses directory structure from process work directory to filesystem root
198
165
  # first directory with .mvn subdirectory is considered project base directory
199
166
  find_maven_basedir() {
200
- local basedir=$(pwd)
201
- local wdir=$(pwd)
167
+
168
+ if [ -z "$1" ]
169
+ then
170
+ echo "Path not specified to find_maven_basedir"
171
+ return 1
172
+ fi
173
+
174
+ basedir="$1"
175
+ wdir="$1"
202
176
  while [ "$wdir" != '/' ] ; do
203
177
  if [ -d "$wdir"/.mvn ] ; then
204
178
  basedir=$wdir
205
179
  break
206
180
  fi
207
- wdir=$(cd "$wdir/.."; pwd)
181
+ # workaround for JBEAP-8937 (on Solaris 10/Sparc)
182
+ if [ -d "${wdir}" ]; then
183
+ wdir=`cd "$wdir/.."; pwd`
184
+ fi
185
+ # end of workaround
208
186
  done
209
187
  echo "${basedir}"
210
188
  }
@@ -216,10 +194,109 @@ concat_lines() {
216
194
  fi
217
195
  }
218
196
 
219
- export MAVEN_PROJECTBASEDIR=${MAVEN_BASEDIR:-$(find_maven_basedir)}
197
+ BASE_DIR=`find_maven_basedir "$(pwd)"`
198
+ if [ -z "$BASE_DIR" ]; then
199
+ exit 1;
200
+ fi
201
+
202
+ ##########################################################################################
203
+ # Extension to allow automatically downloading the maven-wrapper.jar from Maven-central
204
+ # This allows using the maven wrapper in projects that prohibit checking in binary data.
205
+ ##########################################################################################
206
+ if [ -r "$BASE_DIR/.mvn/wrapper/maven-wrapper.jar" ]; then
207
+ if [ "$MVNW_VERBOSE" = true ]; then
208
+ echo "Found .mvn/wrapper/maven-wrapper.jar"
209
+ fi
210
+ else
211
+ if [ "$MVNW_VERBOSE" = true ]; then
212
+ echo "Couldn't find .mvn/wrapper/maven-wrapper.jar, downloading it ..."
213
+ fi
214
+ if [ -n "$MVNW_REPOURL" ]; then
215
+ jarUrl="$MVNW_REPOURL/io/takari/maven-wrapper/0.5.5/maven-wrapper-0.5.5.jar"
216
+ else
217
+ jarUrl="https://repo.maven.apache.org/maven2/io/takari/maven-wrapper/0.5.5/maven-wrapper-0.5.5.jar"
218
+ fi
219
+ while IFS="=" read key value; do
220
+ case "$key" in (wrapperUrl) jarUrl="$value"; break ;;
221
+ esac
222
+ done < "$BASE_DIR/.mvn/wrapper/maven-wrapper.properties"
223
+ if [ "$MVNW_VERBOSE" = true ]; then
224
+ echo "Downloading from: $jarUrl"
225
+ fi
226
+ wrapperJarPath="$BASE_DIR/.mvn/wrapper/maven-wrapper.jar"
227
+ if $cygwin; then
228
+ wrapperJarPath=`cygpath --path --windows "$wrapperJarPath"`
229
+ fi
230
+
231
+ if command -v wget > /dev/null; then
232
+ if [ "$MVNW_VERBOSE" = true ]; then
233
+ echo "Found wget ... using wget"
234
+ fi
235
+ if [ -z "$MVNW_USERNAME" ] || [ -z "$MVNW_PASSWORD" ]; then
236
+ wget "$jarUrl" -O "$wrapperJarPath"
237
+ else
238
+ wget --http-user=$MVNW_USERNAME --http-password=$MVNW_PASSWORD "$jarUrl" -O "$wrapperJarPath"
239
+ fi
240
+ elif command -v curl > /dev/null; then
241
+ if [ "$MVNW_VERBOSE" = true ]; then
242
+ echo "Found curl ... using curl"
243
+ fi
244
+ if [ -z "$MVNW_USERNAME" ] || [ -z "$MVNW_PASSWORD" ]; then
245
+ curl -o "$wrapperJarPath" "$jarUrl" -f
246
+ else
247
+ curl --user $MVNW_USERNAME:$MVNW_PASSWORD -o "$wrapperJarPath" "$jarUrl" -f
248
+ fi
249
+
250
+ else
251
+ if [ "$MVNW_VERBOSE" = true ]; then
252
+ echo "Falling back to using Java to download"
253
+ fi
254
+ javaClass="$BASE_DIR/.mvn/wrapper/MavenWrapperDownloader.java"
255
+ # For Cygwin, switch paths to Windows format before running javac
256
+ if $cygwin; then
257
+ javaClass=`cygpath --path --windows "$javaClass"`
258
+ fi
259
+ if [ -e "$javaClass" ]; then
260
+ if [ ! -e "$BASE_DIR/.mvn/wrapper/MavenWrapperDownloader.class" ]; then
261
+ if [ "$MVNW_VERBOSE" = true ]; then
262
+ echo " - Compiling MavenWrapperDownloader.java ..."
263
+ fi
264
+ # Compiling the Java class
265
+ ("$JAVA_HOME/bin/javac" "$javaClass")
266
+ fi
267
+ if [ -e "$BASE_DIR/.mvn/wrapper/MavenWrapperDownloader.class" ]; then
268
+ # Running the downloader
269
+ if [ "$MVNW_VERBOSE" = true ]; then
270
+ echo " - Running MavenWrapperDownloader.java ..."
271
+ fi
272
+ ("$JAVA_HOME/bin/java" -cp .mvn/wrapper MavenWrapperDownloader "$MAVEN_PROJECTBASEDIR")
273
+ fi
274
+ fi
275
+ fi
276
+ fi
277
+ ##########################################################################################
278
+ # End of extension
279
+ ##########################################################################################
280
+
281
+ export MAVEN_PROJECTBASEDIR=${MAVEN_BASEDIR:-"$BASE_DIR"}
282
+ if [ "$MVNW_VERBOSE" = true ]; then
283
+ echo $MAVEN_PROJECTBASEDIR
284
+ fi
220
285
  MAVEN_OPTS="$(concat_lines "$MAVEN_PROJECTBASEDIR/.mvn/jvm.config") $MAVEN_OPTS"
221
286
 
222
- # Provide a "standardized" way to retrieve the CLI args that will
287
+ # For Cygwin, switch paths to Windows format before running java
288
+ if $cygwin; then
289
+ [ -n "$M2_HOME" ] &&
290
+ M2_HOME=`cygpath --path --windows "$M2_HOME"`
291
+ [ -n "$JAVA_HOME" ] &&
292
+ JAVA_HOME=`cygpath --path --windows "$JAVA_HOME"`
293
+ [ -n "$CLASSPATH" ] &&
294
+ CLASSPATH=`cygpath --path --windows "$CLASSPATH"`
295
+ [ -n "$MAVEN_PROJECTBASEDIR" ] &&
296
+ MAVEN_PROJECTBASEDIR=`cygpath --path --windows "$MAVEN_PROJECTBASEDIR"`
297
+ fi
298
+
299
+ # Provide a "standardized" way to retrieve the CLI args that will
223
300
  # work with both Windows and non-Windows executions.
224
301
  MAVEN_CMD_LINE_ARGS="$MAVEN_CONFIG $@"
225
302
  export MAVEN_CMD_LINE_ARGS
@@ -230,5 +307,4 @@ exec "$JAVACMD" \
230
307
  $MAVEN_OPTS \
231
308
  -classpath "$MAVEN_PROJECTBASEDIR/.mvn/wrapper/maven-wrapper.jar" \
232
309
  "-Dmaven.home=${M2_HOME}" "-Dmaven.multiModuleProjectDirectory=${MAVEN_PROJECTBASEDIR}" \
233
- ${WRAPPER_LAUNCHER} $MAVEN_CMD_LINE_ARGS
234
-
310
+ ${WRAPPER_LAUNCHER} $MAVEN_CONFIG "$@"