2011-10-20 28 views
18

Estoy tratando de ejecutar IntelliJ en línea de comandos en Mac OS X para usar su herramienta diff. Teóricamente, idea.sh diff file1 file2 debería funcionar. En la práctica, hay algunos problemas con el archivo que creo que funcioné (eliminando algunos argumentos para readlink, etc.).
Sin embargo, cuando se inicia, quiere que ingrese la información de la licencia (aunque ya se está ejecutando una instancia de Intellij y la licencia está allí). Lo que me lleva a creer que hay algún tipo de separación de mundo de línea de comando vs mundo de línea de comando en Mac OS X? ¿Es eso cierto?
también cuando selecciono 30 días de evaluación que se procede a darme la siguiente excepción:línea de comando IntelliJ en Mac OS X

java.lang.IllegalArgumentException: Argument 0 for @NotNull parameter of com/intellij/openapi/fileEditor/impl/FileEditorProviderManagerImpl.getProviders must not be null 
    at com.intellij.openapi.fileEditor.impl.FileEditorProviderManagerImpl.getProviders(FileEditorProviderManagerImpl.java) 
    at com.intellij.openapi.diff.impl.highlighting.EditorPlaceHolder.setContent(EditorPlaceHolder.java:73) 
    at com.intellij.openapi.diff.impl.highlighting.DiffPanelState$1.run(DiffPanelState.java:38) 
    at com.intellij.openapi.application.impl.ApplicationImpl.runWriteAction(ApplicationImpl.java:864) 
... 

Respuesta

20

intente ejecutar /Applications/IntelliJ IDEA 10.app/Contents/MacOS/idea lugar. idea.sh no está diseñado para Mac y no funcionará sin algunos cambios manuales.

+0

es mejor - no hay problemas de licencia, pero todavía me da el mismo error (en un cuadro de diálogo ahora): Error mostrando diff: Argumento 0 para el parámetro @NotNull de com/intellij/API abierta/fileEditor/impl/FileEditorProviderManagerImpl.getProviders no debe ser nulo –

+0

ah, no importa, ¡el archivo debe tener una extensión! –

+0

así que esto funciona para diff, pero me gustaría invocar la funcionalidad de fusión (poder guardar después de resolver conflictos). ¿Es esto factible? –

6

Idea espera que las rutas sean totalmente calificadas, así que escribí un pequeño script de ayuda. Invocar como:

$ idiff foo.txt bar.txt 

El código para idiff:

#!/bin/bash 
idea='/Applications/IntelliJ IDEA 10.app/Contents/MacOS/idea' 
left=`abspath $1` 
right=`abspath $2` 
"$idea" diff $left $right 

es probable que haya una verdadera herramienta de abspath en alguna parte, pero tengo un simple enrollado a mano uno:

$ cat `which abspath` 
#!/bin/bash 
ORIG_DIR=`pwd` 
for fn in $* ; do 
    if [ -e $fn ]; then 
    d=`dirname $fn` 
    if [ -z $d ]; then 
     echo `pwd`/$fn 
    else 
     cd $d 
     echo `pwd`"/"`basename $fn` 
    fi 
    else 
    echo "Don't know how to process $fn" 1>&2 
    exit 1 
    fi 
    cd $ORIG_DIR 
done 
52

IntelliJ puede instale un iniciador de línea de comando, agregándolo a un directorio PATH lo haría como cualquier otro comando en el sistema. El comando es "idea".

IntelliJ Command-line Launcher