diff --git a/.gitignore b/.gitignore index 031b47bc7..deec285f1 100644 --- a/.gitignore +++ b/.gitignore @@ -44,4 +44,9 @@ Temporary Items .idea .git -out \ No newline at end of file +out +# Gradle +.gradle +.idea-sandbox +build +gradle diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 7f4808780..ca2386d94 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -1,7 +1,7 @@ # Setting up development environment 1. Check out this repository -1. Download PhpStorm build specified in the [META-INF/plugin.xml](./META-INF/plugin.xml). Older builds can be found [here](https://confluence.jetbrains.com/display/PhpStorm/Previous+PhpStorm+Releases) +1. Download PhpStorm build specified in the [META-INF/plugin.xml](resources/META-INF/plugin.xml). Older builds can be found [here](https://confluence.jetbrains.com/display/PhpStorm/Previous+PhpStorm+Releases) 1. Create a new project in the InteliJ. The type of the project must be "InteliJ Platform Plugin". Specify a path to the PhpStorm from the previous step as SDK for this project 1. Instead of creating a project in a new directory, point it to an existing one checked out in the first step. When prompted, replace all configs 1. Revert any local modifications (which were done by the IDE during project creation) diff --git a/build.gradle b/build.gradle new file mode 100644 index 000000000..93aef222c --- /dev/null +++ b/build.gradle @@ -0,0 +1,38 @@ +/* + * Copyright © Magento, Inc. All rights reserved. + * See COPYING.txt for license details. + */ + +plugins { + id 'org.jetbrains.intellij' version '0.4.15' +} + +group 'com.magento.idea' +version '1.0.0' + +apply plugin: 'org.jetbrains.intellij' +apply plugin: 'java' +apply plugin: 'groovy' + +def phpPluginVersion = System.getProperty("phpPluginVersion", "193.6494.35") +def ideaVersion = System.getProperty("ideaVersion", "2019.3.3") +def javaVersion = 1.8 + +sourceCompatibility = javaVersion +targetCompatibility = javaVersion + +intellij { + version ideaVersion + type 'IU' + pluginName 'com.magento.idea.magento2plugin' + plugins = ["com.jetbrains.php:$phpPluginVersion", 'yaml', 'java-i18n', 'properties', 'CSS', 'JavaScriptLanguage', 'com.intellij.lang.jsgraphql:2.3.0'] + updateSinceUntilBuild false + sameSinceUntilBuild false + downloadSources !Boolean.valueOf(System.getenv('CI')) + sandboxDirectory "${project.rootDir}/.idea-sandbox" +} + +sourceSets { + main.java.srcDirs = ['src'] + main.resources.srcDirs = ['resources'] +} diff --git a/gradlew b/gradlew new file mode 100755 index 000000000..af6708ff2 --- /dev/null +++ b/gradlew @@ -0,0 +1,172 @@ +#!/usr/bin/env sh + +############################################################################## +## +## Gradle start up script for UN*X +## +############################################################################## + +# Attempt to set APP_HOME +# Resolve links: $0 may be a link +PRG="$0" +# Need this for relative symlinks. +while [ -h "$PRG" ] ; do + ls=`ls -ld "$PRG"` + link=`expr "$ls" : '.*-> \(.*\)$'` + if expr "$link" : '/.*' > /dev/null; then + PRG="$link" + else + PRG=`dirname "$PRG"`"/$link" + fi +done +SAVED="`pwd`" +cd "`dirname \"$PRG\"`/" >/dev/null +APP_HOME="`pwd -P`" +cd "$SAVED" >/dev/null + +APP_NAME="Gradle" +APP_BASE_NAME=`basename "$0"` + +# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. +DEFAULT_JVM_OPTS='"-Xmx64m"' + +# Use the maximum available, or set MAX_FD != -1 to use that value. +MAX_FD="maximum" + +warn () { + echo "$*" +} + +die () { + echo + echo "$*" + echo + exit 1 +} + +# OS specific support (must be 'true' or 'false'). +cygwin=false +msys=false +darwin=false +nonstop=false +case "`uname`" in + CYGWIN* ) + cygwin=true + ;; + Darwin* ) + darwin=true + ;; + MINGW* ) + msys=true + ;; + NONSTOP* ) + nonstop=true + ;; +esac + +CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar + +# Determine the Java command to use to start the JVM. +if [ -n "$JAVA_HOME" ] ; then + if [ -x "$JAVA_HOME/jre/sh/java" ] ; then + # IBM's JDK on AIX uses strange locations for the executables + JAVACMD="$JAVA_HOME/jre/sh/java" + else + JAVACMD="$JAVA_HOME/bin/java" + fi + if [ ! -x "$JAVACMD" ] ; then + die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME + +Please set the JAVA_HOME variable in your environment to match the +location of your Java installation." + fi +else + JAVACMD="java" + which java >/dev/null 2>&1 || die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. + +Please set the JAVA_HOME variable in your environment to match the +location of your Java installation." +fi + +# Increase the maximum file descriptors if we can. +if [ "$cygwin" = "false" -a "$darwin" = "false" -a "$nonstop" = "false" ] ; then + MAX_FD_LIMIT=`ulimit -H -n` + if [ $? -eq 0 ] ; then + if [ "$MAX_FD" = "maximum" -o "$MAX_FD" = "max" ] ; then + MAX_FD="$MAX_FD_LIMIT" + fi + ulimit -n $MAX_FD + if [ $? -ne 0 ] ; then + warn "Could not set maximum file descriptor limit: $MAX_FD" + fi + else + warn "Could not query maximum file descriptor limit: $MAX_FD_LIMIT" + fi +fi + +# For Darwin, add options to specify how the application appears in the dock +if $darwin; then + GRADLE_OPTS="$GRADLE_OPTS \"-Xdock:name=$APP_NAME\" \"-Xdock:icon=$APP_HOME/media/gradle.icns\"" +fi + +# For Cygwin, switch paths to Windows format before running java +if $cygwin ; then + APP_HOME=`cygpath --path --mixed "$APP_HOME"` + CLASSPATH=`cygpath --path --mixed "$CLASSPATH"` + JAVACMD=`cygpath --unix "$JAVACMD"` + + # We build the pattern for arguments to be converted via cygpath + ROOTDIRSRAW=`find -L / -maxdepth 1 -mindepth 1 -type d 2>/dev/null` + SEP="" + for dir in $ROOTDIRSRAW ; do + ROOTDIRS="$ROOTDIRS$SEP$dir" + SEP="|" + done + OURCYGPATTERN="(^($ROOTDIRS))" + # Add a user-defined pattern to the cygpath arguments + if [ "$GRADLE_CYGPATTERN" != "" ] ; then + OURCYGPATTERN="$OURCYGPATTERN|($GRADLE_CYGPATTERN)" + fi + # Now convert the arguments - kludge to limit ourselves to /bin/sh + i=0 + for arg in "$@" ; do + CHECK=`echo "$arg"|egrep -c "$OURCYGPATTERN" -` + CHECK2=`echo "$arg"|egrep -c "^-"` ### Determine if an option + + if [ $CHECK -ne 0 ] && [ $CHECK2 -eq 0 ] ; then ### Added a condition + eval `echo args$i`=`cygpath --path --ignore --mixed "$arg"` + else + eval `echo args$i`="\"$arg\"" + fi + i=$((i+1)) + done + case $i in + (0) set -- ;; + (1) set -- "$args0" ;; + (2) set -- "$args0" "$args1" ;; + (3) set -- "$args0" "$args1" "$args2" ;; + (4) set -- "$args0" "$args1" "$args2" "$args3" ;; + (5) set -- "$args0" "$args1" "$args2" "$args3" "$args4" ;; + (6) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" ;; + (7) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" ;; + (8) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" ;; + (9) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" "$args8" ;; + esac +fi + +# Escape application args +save () { + for i do printf %s\\n "$i" | sed "s/'/'\\\\''/g;1s/^/'/;\$s/\$/' \\\\/" ; done + echo " " +} +APP_ARGS=$(save "$@") + +# Collect all arguments for the java command, following the shell quoting and substitution rules +eval set -- $DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS "\"-Dorg.gradle.appname=$APP_BASE_NAME\"" -classpath "\"$CLASSPATH\"" org.gradle.wrapper.GradleWrapperMain "$APP_ARGS" + +# by default we should be in the correct project dir, but when run from Finder on Mac, the cwd is wrong +if [ "$(uname)" = "Darwin" ] && [ "$HOME" = "$PWD" ]; then + cd "$(dirname "$0")" +fi + +exec "$JAVACMD" "$@" diff --git a/gradlew.bat b/gradlew.bat new file mode 100644 index 000000000..6d57edc70 --- /dev/null +++ b/gradlew.bat @@ -0,0 +1,84 @@ +@if "%DEBUG%" == "" @echo off +@rem ########################################################################## +@rem +@rem Gradle startup script for Windows +@rem +@rem ########################################################################## + +@rem Set local scope for the variables with windows NT shell +if "%OS%"=="Windows_NT" setlocal + +set DIRNAME=%~dp0 +if "%DIRNAME%" == "" set DIRNAME=. +set APP_BASE_NAME=%~n0 +set APP_HOME=%DIRNAME% + +@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. +set DEFAULT_JVM_OPTS="-Xmx64m" + +@rem Find java.exe +if defined JAVA_HOME goto findJavaFromJavaHome + +set JAVA_EXE=java.exe +%JAVA_EXE% -version >NUL 2>&1 +if "%ERRORLEVEL%" == "0" goto init + +echo. +echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. +echo. +echo Please set the JAVA_HOME variable in your environment to match the +echo location of your Java installation. + +goto fail + +:findJavaFromJavaHome +set JAVA_HOME=%JAVA_HOME:"=% +set JAVA_EXE=%JAVA_HOME%/bin/java.exe + +if exist "%JAVA_EXE%" goto init + +echo. +echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME% +echo. +echo Please set the JAVA_HOME variable in your environment to match the +echo location of your Java installation. + +goto fail + +:init +@rem Get command-line arguments, handling Windows variants + +if not "%OS%" == "Windows_NT" goto win9xME_args + +:win9xME_args +@rem Slurp the command line arguments. +set CMD_LINE_ARGS= +set _SKIP=2 + +:win9xME_args_slurp +if "x%~1" == "x" goto execute + +set CMD_LINE_ARGS=%* + +:execute +@rem Setup the command line + +set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar + +@rem Execute Gradle +"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %CMD_LINE_ARGS% + +:end +@rem End local scope for the variables with windows NT shell +if "%ERRORLEVEL%"=="0" goto mainEnd + +:fail +rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of +rem the _cmd.exe /c_ return code! +if not "" == "%GRADLE_EXIT_CONSOLE%" exit 1 +exit /b 1 + +:mainEnd +if "%OS%"=="Windows_NT" endlocal + +:omega diff --git a/magento2plugin.iml b/magento2plugin.iml deleted file mode 100644 index e05bb8cc6..000000000 --- a/magento2plugin.iml +++ /dev/null @@ -1,21 +0,0 @@ - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/.phpstorm.meta.php/di-autocomplete.php b/resources/.phpstorm.meta.php/di-autocomplete.php similarity index 100% rename from .phpstorm.meta.php/di-autocomplete.php rename to resources/.phpstorm.meta.php/di-autocomplete.php diff --git a/META-INF/plugin.xml b/resources/META-INF/plugin.xml similarity index 98% rename from META-INF/plugin.xml rename to resources/META-INF/plugin.xml index f7a0124e1..d888fd90f 100644 --- a/META-INF/plugin.xml +++ b/resources/META-INF/plugin.xml @@ -25,7 +25,7 @@ - + @@ -99,12 +99,11 @@ - - + diff --git a/resources/fileTemplates/code/Magento Plugin After Method.html b/resources/fileTemplates/code/Magento Plugin After Method.html new file mode 100644 index 000000000..7879e1ce9 --- /dev/null +++ b/resources/fileTemplates/code/Magento Plugin After Method.html @@ -0,0 +1,4 @@ + + + + diff --git a/resources/fileTemplates/code/Magento Plugin After Method.php.ft b/resources/fileTemplates/code/Magento Plugin After Method.php.ft new file mode 100644 index 000000000..1638512e4 --- /dev/null +++ b/resources/fileTemplates/code/Magento Plugin After Method.php.ft @@ -0,0 +1,8 @@ +/** +${PARAM_DOC} + */ +public function ${NAME}(${PARAM_LIST}) +{ + // TODO: Implement plugin method. + #if (${RETURN_VARIABLES})return ${RETURN_VARIABLES}; #end +} diff --git a/resources/fileTemplates/code/Magento Plugin Around Method.html b/resources/fileTemplates/code/Magento Plugin Around Method.html new file mode 100644 index 000000000..6bfc7988e --- /dev/null +++ b/resources/fileTemplates/code/Magento Plugin Around Method.html @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/resources/fileTemplates/code/Magento Plugin Around Method.php.ft b/resources/fileTemplates/code/Magento Plugin Around Method.php.ft new file mode 100644 index 000000000..8f05a3303 --- /dev/null +++ b/resources/fileTemplates/code/Magento Plugin Around Method.php.ft @@ -0,0 +1,8 @@ +/** +${PARAM_DOC} + */ +public function ${NAME}(${PARAM_LIST}) +{ + // TODO: Implement plugin method. + return $proceed(#if(${RETURN_VARIABLES})${RETURN_VARIABLES}#end); +} diff --git a/resources/fileTemplates/code/Magento Plugin Before Method.html b/resources/fileTemplates/code/Magento Plugin Before Method.html new file mode 100644 index 000000000..6bfc7988e --- /dev/null +++ b/resources/fileTemplates/code/Magento Plugin Before Method.html @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/resources/fileTemplates/code/Magento Plugin Before Method.php.ft b/resources/fileTemplates/code/Magento Plugin Before Method.php.ft new file mode 100644 index 000000000..e912262e9 --- /dev/null +++ b/resources/fileTemplates/code/Magento Plugin Before Method.php.ft @@ -0,0 +1,10 @@ +/** +${PARAM_DOC} +#if (${RETURN_VARIABLES})* @return array +#end + */ +public function ${NAME}(${PARAM_LIST}) +{ + // TODO: Implement plugin method. + #if (${RETURN_VARIABLES})return [${RETURN_VARIABLES}]; #end +} diff --git a/resources/inspectionDescriptions/PluginOnNotPublicMethod.html b/resources/inspectionDescriptions/PluginOnNotPublicMethod.html new file mode 100644 index 000000000..edc3c12fb --- /dev/null +++ b/resources/inspectionDescriptions/PluginOnNotPublicMethod.html @@ -0,0 +1,13 @@ + + +

Plugins can not be used with the following:

+
    +
  • Final classes
  • +
  • Non-public methods
  • +
  • Class methods (such as static methods)
  • +
  • __construct
  • +
  • Virtual types
  • +
  • Objects that are instantiated before Magento\Framework\Interception is bootstrapped
  • +
+ + \ No newline at end of file diff --git a/src/resources/magento2-module.png b/resources/magento2-module.png similarity index 100% rename from src/resources/magento2-module.png rename to resources/magento2-module.png diff --git a/settings.gradle b/settings.gradle new file mode 100644 index 000000000..3fd0692d4 --- /dev/null +++ b/settings.gradle @@ -0,0 +1,2 @@ +rootProject.name = 'magento2' +