Como verificar o sucesso da instalação do IDEA com a CLI em uma VM?

1

Estou usando um módulo Puppet de terceiros para instalar o IntelliJ IDEA e gostaria de verificar automaticamente se a instalação funcionou. A solução atual falha porque não há licença:

$ make test
[...]
/usr/bin/vagrant ssh --command '/opt/idea/bin/inspect.sh "/home/user/dev/root" ~/.IntelliJIdea14/config/inspection/Default.xml /tmp -d "/home/user/dev/root/test/module"'
OpenJDK 64-Bit Server VM warning: ignoring option MaxPermSize=350m; support was removed in 8.0
Sep 14, 2015 1:40:43 AM java.util.prefs.FileSystemPreferences$1 run
INFO: Created user preferences directory.
Sep 14, 2015 1:40:43 AM java.util.prefs.FileSystemPreferences$6 run
WARNING: Prefs file removed in background /home/vagrant/.java/.userPrefs/prefs.xml
[   1380]  ERROR - nse.impl.GeneralLicenseManager - No valid license found 
java.lang.Throwable
        at com.intellij.openapi.diagnostic.Logger.error(Logger.java:115)
        at com.intellij.ide.a.g.cb.a(cb.java:107)
        at com.intellij.idea.MainImpl$1.start(MainImpl.java:43)
        at com.intellij.idea.StartupUtil.prepareAndStart(StartupUtil.java:117)
        at com.intellij.idea.MainImpl.start(MainImpl.java:38)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
        at java.lang.reflect.Method.invoke(Method.java:497)
        at com.intellij.ide.plugins.PluginManager$2.run(PluginManager.java:91)
        at java.lang.Thread.run(Thread.java:745)
[   1389]  ERROR - nse.impl.GeneralLicenseManager - IntelliJ IDEA 14.1.4  Build #IU-141.1532.4 
[   1389]  ERROR - nse.impl.GeneralLicenseManager - JDK: 1.8.0_60 
[   1389]  ERROR - nse.impl.GeneralLicenseManager - VM: OpenJDK 64-Bit Server VM 
[   1390]  ERROR - nse.impl.GeneralLicenseManager - Vendor: Oracle Corporation 
[   1390]  ERROR - nse.impl.GeneralLicenseManager - OS: Linux 
Connection to 127.0.0.1 closed.
Makefile:198: recipe for target 'test-integrated-development-environment' failed
make: *** [test-integrated-development-environment] Error 255

Eu obviamente não posso colocar meu próprio arquivo de licença no repositório. Então, as opções parecem com o seguinte:

  1. Crie um arquivo de licença da comunidade, inclua-o no repositório e grave-o no local do arquivo de licença apenas se o arquivo ainda não existir. Não tenho certeza de como isso seria hacky.
  2. Gere o arquivo de licença da comunidade na mesma condição dada a mesma condição acima. Não faço ideia se isso é possível.
  3. Execute algum comando completamente diferente que não exija um servidor X ou licença em execução.

A solução alternativa por enquanto é simplesmente verificar se /opt/idea/bin/inspect.sh existe , o que não é um bom indicador IMO.

Eu não quero fazer algo como instalar a versão da comunidade se não houver arquivo de licença disponível. Eu quero verificar a instalação do pacote que eu realmente vou instalar.

    
por l0b0 13.09.2015 / 19:05

1 resposta

1

A primeira é provavelmente a melhor ideia. O Puppet tem um atributo para isso no tipo file builtin; apenas faça algo como

file { "idea-license":
    source => "puppet:///.../community-license",
    replace => false,
}

Isso instalará a licença da comunidade se o arquivo de licença ainda não existir, mas não o tocará, se houver.

    
por 13.09.2015 / 19:17