public static String swizzleURL(String url) {
		url = url.replaceFirst("^https://github.com/(.*)/blob/(.*)$",
				"https://raw.githubusercontent.com/$1/$2");

		url = url.replaceFirst("^https://gitlab.com/(.*)/-/blob/(.*)$",
				"https://gitlab.com/$1/-/raw/$2");

		url = url.replaceFirst("^https://bitbucket.org/(.*)/src/(.*)$",
				"https://bitbucket.org/$1/raw/$2");

		url = url.replaceFirst("^https://twitter.com/(.*)/status/(.*)$",
				"https://mobile.twitter.com/$1/status/$2");

		if (isGistURL(url)) {
			url = extractFileFromGist(url);
		} else {
			try {
				URI u = new URI(url);
				if (u.getPath().endsWith("/")) {
					verboseMsg("Directory url, assuming user want to get default application at main.java");
					url = url + "main.java";
				}
			} catch (URISyntaxException e) {
				// ignore
			}

		}

		return url;
	}
Returns a path to the file indicated by a path or URL. In case the file is
referenced by a path no action is performed and the value of updateCache is
ignored. In case the file is referenced by a URL the file will be downloaded
from that URL and stored in the cache. NB: In the case of URLs this only work
when the last part of the URL contains the name of the file to be downloaded!

@param filePathOrURL Path or URL to the file to be retrieved
@return Path to the downloaded file
@throws IOException
src/main/java/dev/jbang/util/Util.java