func AllRunners(c *gin.Context) {
	c.JSON(http.StatusOK, availableRunners)
}
AllRunners return all supported languages and their versions
package handler
import (
	"context"
	"github.com/docker/docker/api/types"
	"github.com/docker/docker/client"
	"github.com/gin-gonic/gin"
	"net/http"
)
type tVersion struct {
	Version string `json:"version"`
	URL     string `json:"url"`
}
type runner struct {
	Language string     `json:"name"`
	Versions []tVersion `json:"versions"`
}
var expectRunners []runner
var availableRunners []runner
func init() {
	for name, vs := range VersionMap {
		var versions []tVersion
		for _, v := range vs {
			versions = append(versions, tVersion{v, lv2Url(name, v)})
		}
		expectRunners = append(expectRunners, runner{name, versions})
	}
	allLocalImages := getAllDockerImages()
	for _, r := range expectRunners {
		tmpRunner := &runner{Language: r.Language}
		for _, v := range r.Versions {
			tmpImg := V2Images(r.Language, v.Version)
			if containsString(allLocalImages, tmpImg) {
				tmpRunner.Versions = append(tmpRunner.Versions, v)
			}
		}
		if len(tmpRunner.Versions) > 0 {
			availableRunners = append(availableRunners, *tmpRunner)
		}
	}
}