picrate 0.7.0-java → 0.8.0-java

Sign up to get free protection for your applications and to get access to all the features.
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 "$@"