Skip to content

0xviny/discloud-plugin

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

13 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Discloud Plugin for Jetbrains

IntelliJ Plugin
Discloud

Um plugin simples para IntelliJ IDEA que facilita enviar seus projetos para a Discloud diretamente do IDE. Suporta deploy via .jar e upload completo de projetos (cria projeto na Discloud via /upload), além de oferecer uma Tool Window para gerenciar aplicações.


✨ Destaques

  • Envio rápido de artefatos via clique-direito (Commit Discloud)
  • Upload completo do projeto (chama POST /upload) quando houver discloud.config no root do projeto
  • Tool Window para listar e gerenciar apps (start / restart / stop / backup / logs)
  • Suporte multi-linguagem para commits e empacotamento:
    • Java (.jar)
    • Go
    • Rust
    • Python
    • PHP
    • Ruby
  • Detecção automática de runtime por arquivos de configuração (ex.: go.mod, Cargo.toml, requirements.txt, composer.json, Gemfile, pom.xml, build.gradle) ou por extensĂŁo de arquivo
  • Para Go e Rust, tenta executar go build / cargo build --release e faz upload do binário gerado quando possĂ­vel
  • Fallback: se nĂŁo for possĂ­vel compilar, gera um ZIP do projeto e envia
  • Exclusões inteligentes ao zipar (.git, node_modules, venv, __pycache__, target, build, .idea, .gradle)
  • API Key configurável e persistida nas Settings do IntelliJ (solicita ao usuário se nĂŁo estiver configurada)

📦 Funcionalidades

Commit Discloud

  • Envia .jar ou artefato gerado para um app existente via endpoint PUT /app/{id}/commit.
  • Detecta linguagem, tenta buildar (quando aplicável) e cria o artefato apropriado (JAR, binário zipado ou ZIP do projeto).
  • Envia tambĂ©m um campo runtime quando aplicável para ajudar a Discloud a identificar o tipo de aplicação.

Upload (criar projeto)

  • Se existir discloud.config na raiz do projeto, o plugin permite empacotar todo o projeto em um ZIP e chamar POST /upload para criar o projeto na Discloud.
  • NĂŁo executa upload se discloud.config nĂŁo existir.

Tool Window

  • Lista aplicações vinculadas Ă  sua conta Discloud (nome, status online/offline, RAM).
  • Botões: Start, Restart, Stop, Backup, Logs.
  • Download de backup direto para a pasta do projeto.
  • Visualização de logs em uma janela dentro do IDE.

UX e Segurança

  • Operações longas rodam em background (ProgressManager / Tasks).
  • Mensagens e erros sĂŁo mostrados via JOptionPane / Messages.
  • Validações de seleção e presença de token para evitar erros.
  • Executar builds localmente significa rodar cĂłdigo — use apenas com projetos confiáveis.

đź”§ Requisitos

  • IntelliJ IDEA (Community ou Ultimate)
  • Para builds automáticos de Go e Rust Ă© necessário ter go e cargo instalados no sistema
  • Verifique limites e permissões da sua conta Discloud antes de usar /upload

📥 Instalação (modo dev / sandbox)

  1. Clone o repositĂłrio:

    git clone https://github.com/0xviny/discloud-plugin.git
    cd discloud-plugin
    
  2. Abra no IntelliJ IDEA.

  3. Execute o plugin em sandbox:

    • Gradle Tool Window → Tasks → intellij → runIde

🔑 Configuração da API Key

Na primeira execução, o plugin pedirá sua API Key da Discloud. Também é possível alterar em:

File → Settings → Tools → Discloud Settings

A chave é salva nas configurações do IntelliJ e reutilizada em operações futuras.


🚀 Como usar

Commit de um .jar

  1. Gere o .jar do seu projeto.
  2. No Project Explorer, clique com o botĂŁo direito no .jar.
  3. Selecione Commit Discloud.
  4. Escolha o app destino (quando solicitado) e aguarde o upload.

Upload completo (cria projeto)

  1. Adicione discloud.config na raiz do projeto.
  2. Execute a ação Upar na Discloud (ou equivalente no plugin).
  3. O plugin empacota o projeto em ZIP e chama POST /upload.
  4. Aguarde o retorno e confira o ID / mensagem da API.

🖼️ Screenshots

Tool Window

Tool Window

Actions row (Upload, Commit)

Actions Row

Logs modal

Logs Modal

Import Code

Import Code

📝 Changelog

1.0.0 — Initial

  • Tool Window para gerenciar aplicações
  • Commit de .jar e suporte a mĂşltiplas linguagens (Java, Go, Rust, Python, PHP, Ruby)
  • Upload completo via /upload quando discloud.config estiver presente
  • Build automático para Go e Rust quando possĂ­vel, com fallback para ZIP
  • Exclusões ao empacotar e UX com feedback no IDE

📌 Roadmap

  • Suporte a deploy automático pĂłs-build
  • Upload incremental (enviar apenas arquivos mudados)
  • Mostrar notificações no IDE em vez de modais
  • Suporte a variáveis de ambiente e mapeamento de portas no discloud.config
  • Publicação no JetBrains Marketplace

🤝 Contribuindo

Contribuições são bem-vindas. Abra uma Issue para discutir mudanças ou envie um Pull Request com a sua melhoria.


⚖️ Licença

Distribuído sob a licença MIT. Veja o arquivo LICENSE para detalhes.


💙 Créditos

  • Discloud — hospedagem utilizada e APIs
  • IntelliJ Platform SDK — base para desenvolvimento de plugins

About

💚 Plugin da Discloud para Intellij Idea para fácil manueseio de seus projetos sem sair do Editor.

Topics

Resources

Stars

Watchers

Forks

Contributors

Languages