ide-gen is a tool for development workspace prepare automation by automatic VCS repositories discovery and clone and project generation for supported IDEs.

Development Workspace Manager

ide-gen is a tool for development workspace prepare automation by automatic VCS repositories discovery and clone and project generation for supported IDEs.

Installation

For macOS users:

$ brew tap xxxbobrxxx/xxxbobrxxx
$ brew install ide-gen

You can also download the binary from the Releases page.

Json Schema

Use json schema for autocompletion during config definition in your favorite IDE.

Quickstart

Define a sample project configuration in the, for example, ${HOME}/main.yaml file:

#: Local non-VCS directories
directory:
  - path: /your/local/dir

#: Git repositories
git:
  -
    #: Git repository URL, required
    url: [email protected]:xxxbobrxxx/ide-gen.git

    #: Apply `git config pull.ff only` during clone.
    #: Optional, default: false
    #:
    # fastForward: true

    #: Additional origins to add to repo to.
    #: Optional, default: {}
    #:
    # remotes: {}
    #   another-origin: [email protected]:xxxbobrxxx/ide-gen-fork.git

#: Gitlab Autodiscovery configs
gitlab:
  -
    #: Gitlab API URL
    #: Optional, default: https://gitlab.com/api/v4
    #:
    # url:

    #: token or tokenEnvVar must be defined to access Gitlab API
    #:
    #: Value of Gitlab API token
    #:
    # token: XXXXXXXXXXXXX

    #: Name of environment variable containing Gitlab API token
    #:
    tokenEnvVar: GITLAB_TOKEN

    #: Use HTTPS Url instead of SSH
    #: Optional, default - false
    #:
    # httpsUrl: false

    #: Apply `git config pull.ff only` during clone.
    #: Optional, default: false
    #:
    # fastForward: true

    #: include/exclude regexp patterns for repositories paths
    #:
    #: Example: for repository `https://gitlab.com/group1/group2/repo`
    #: path is `group1/group2/repo`
    #:
    #: Optional, default - []
    #:
    include:
      - ^group-to-include/.*
    exclude:
      - ^group-to-include/subgroup-to-exclude/.*

Execute a command to discover and clone repositories:

$ ide-gen gen -c ${HOME}/main.yaml

It will:

  • Keep /your/local/dir directory untouched
  • Autodiscover repositories from a Gitlab server and add to git repo list.
  • Clone [email protected]:xxxbobrxxx/ide-gen.git repository to the ${HOME}/dev/github.com/xxxbobrxxx/ide-gen. If already cloned - skip.

To enable IntelliJ IDEA project generation run the command with the -i/--idea-project-root param:

$ ide-gen gen -c ${HOME}/main.yaml -i ${HOME}/dev/idea_projects/main

It will:

  • Create a ${HOME}/dev/idea_projects/main directory if it does not exist. It will be a root of the IntelliJ IDEA project.
  • Inside the IDEA project dir:
    • Just create .idea/iml/ .iml for each repository/directory. Overwrite is forbidden to avoid manual settings loss.
    • Create/Overwrite .idea/modules.xml containing all repositories
    • Create/Overwrite .idea/vcs.xml containing proper VCS mappings

Repository clone path

Directories paths to clone VCS repositories to are generated automatically following the rule

$VCS_ROOT/vcs-hostname/group-1[/group-2][/group-...]/repo-name

By default $VCS_ROOT is ${HOME}/dev and it can be overridden by the -s/--vcs-sources-root param.

IntelliJ IDEA modules structure

Intellij IDEA supports adding of several modules to the one project. The idea of the tools is to keep modules structure as they are present in the VCS. In comparison to Github, Gitlab supports deeper subgroup level so that modules structure may be useful.

To achieve it the tool automatically parses VCS URLs to define modules names. Example:

  • [email protected]:xxxbobrxxx/ide-gen.git -> xxxbobrxxx.ide-gen
  • https://github.com/xxxbobrxxx/ide-gen.git -> xxxbobrxxx.ide-gen

For local directories it uses basename:

  • /your/local/dir -> dir

Example: for the following repos list:

The following modules' tree will be generated:

├── group1
│   ├── repo1
│   └── repo2
├── group2
│   ├── repo1
│   └── repo2
└── dir
Similar Resources

Drive performance measurement tool

dperf is a drive performance measurement tool to identify slow drives in your host. It takes multiple file paths as input, and performs I/O parallely on those files. The read and write throughput are printed in sorted order, with the fastest drives shown first.

Nov 23, 2022

A TinySQL deployment tool inspired by TiUP

A TinySQL deployment tool inspired by TiUP

Jan 26, 2022

A small tool that allows a process to ask a debugger to attach to it.

Client and server for a process to request attach by gdlv. These two packages allow a program to request that a debugger attach to it. The motivating

Feb 1, 2022

Go structure annotations that supports encoding and decoding; similar to C-style bitfields. Supports bitfield packing, self-describing layout parameters, and alignment.

Go structure annotations that supports encoding and decoding; similar to C-style bitfields. Supports bitfield packing, self-describing layout parameters, and alignment.

STRUCTure EXtensions structex provides annotation rules that extend Go structures for implementation of encoding and decoding of byte backed data fram

Oct 13, 2022

Download, build, cache and run a Go app easily.

demand -- An easy way to install apps demand will download, build, cache and run a Go app. You can use it as an interpreter. Create a file bytes2human

Sep 10, 2017

A program to build, run, and restart a Go program on code change

devrun A program to build, run, and restart a Go program on code change. It also supports watching all your Go imports too. So if you change the code

Apr 4, 2022

Yet another Go REPL that works nicely. Featured with line editing, code completion, and more.

  Yet another Go REPL that works nicely. Featured with line editing, code completion, and more.

gore Yet another Go REPL that works nicely. Featured with line editing, code completion, and more. (Screencast taken with cho45/KeyCast) Usage gore Af

Jan 2, 2023

Will autobuild and kill/relaunch the target when you update the code.

Use like rerun github.com/skelterjohn/go.uik/uiktest Usage: rerun [--test] [--build] [--race] [--no-run] import path [arg]* For any go executable in

Jul 23, 2022

golang feature toggle library - a library to help make golang feature toggling clean and easy

toggle supports env_variable backed toggling. It can also be updated via a pubsub interface (tested w/ redis) 2 engines for toggle backing are include

Mar 29, 2022
A tool that helps you write code in your favorite IDE: your word processor!
A tool that helps you write code in your favorite IDE: your word processor!

WordIDE Have you ever wondered: How would it feel like to write code in a word processor? Me neither. But after months minutes of planning, I present

Jul 21, 2022
LiteIDE is a simple, open source, cross-platform Go IDE.
LiteIDE is a simple, open source, cross-platform Go IDE.

LiteIDE X Introduction LiteIDE is a simple, open source, cross-platform Go IDE. Version: X37.3 (support Go modules) Author: visualfc Features Core fea

Jan 5, 2023
Web based, Go IDE.
Web based, Go IDE.

Strukture IDE Beta II Go lang IDE. Built with GopherSauce About project IDE runs as a server and is accessed via web browser. Being a web server, the

Nov 28, 2022
cmd tool for automatic storage and comparison of benchmarks results

prettybenchcmp prettybenchcmp is cmd tool for storage and comparison of benchmarks results. There is a standard tool benchcmp, but I don't think that

Apr 6, 2021
Live reload for Go web development

livedev livedev is a development proxy server for golang that allows live reloading. It supports multiple server configuration. It uses the request's

Jun 17, 2022
Template project to get started with a simple API skeleton in Go and Docker

A template project to create a Docker image for a Go application. The example application exposes an HTTP endpoint through a REST API packaged as a static binary.

Apr 4, 2022
NoColor — validate the architecture of your PHP project
 NoColor — validate the architecture of your PHP project

NoColor is an architecture validation tool based on the concept of colored functions. This concept was originally invented for KPHP and later exposed as a separate tool to be used in regular PHP projects.

Nov 28, 2022
A Go dependency graph visualization tool
A Go dependency graph visualization tool

godepgraph godepgraph is a program for generating a dependency graph of Go packages. Install go get github.com/kisielk/godepgraph Use For basic usage

Jan 7, 2023
go/template is a tool for jumpstarting production-ready Golang projects quickly.
go/template is a tool for jumpstarting production-ready Golang projects quickly.

go/template go/template provides a blueprint for production-ready Go project layouts. Credit to Renée French for the Go Gopher logo Credit to Go Autho

Dec 24, 2022
A tool to lint Grafana dashboards

Grafana Dashboard Linter This is a tool to lint Grafana dashboards for common mistakes. To use: $ go install github.com/grafana/dashboard-linter $ das

Dec 27, 2022