To download from GitHub, you should navigate to the top level of the project (SDN in this case) and then a green "Code" download button will be visible on the right. Choose the Download ZIP option from the Code pull-down menu. That ZIP file will contain the entire repository content, including the area you wanted.
Linking to code On GitHub.com, navigate to the main page of the repository. Locate the code you'd like to link to: To link to code from a file, navigate to the file. To link to code from a pull request, navigate to the pull request and click Files changed.
A few years late, but I just implemented a simple redirect to support https://github.com/USER/PROJECT/releases/latest/download/package.zip
. That should redirected to the latest tagged package.zip
release asset. Hope it's handy!
Linux solution to get latest release asset download link (works only if release has one asset only)
curl -s https://api.github.com/repos/boxbilling/boxbilling/releases/latest | grep browser_download_url | cut -d '"' -f 4
You can do an ajax request to get latest release download URL using the GitHub Releases API. It also shows when it was released and the download count:
function GetLatestReleaseInfo() {
$.getJSON("https://api.github.com/repos/ShareX/ShareX/releases/latest").done(function(release) {
var asset = release.assets[0];
var downloadCount = 0;
for (var i = 0; i < release.assets.length; i++) {
downloadCount += release.assets[i].download_count;
}
var oneHour = 60 * 60 * 1000;
var oneDay = 24 * oneHour;
var dateDiff = new Date() - new Date(asset.updated_at);
var timeAgo;
if (dateDiff < oneDay) {
timeAgo = (dateDiff / oneHour).toFixed(1) + " hours ago";
} else {
timeAgo = (dateDiff / oneDay).toFixed(1) + " days ago";
}
var releaseInfo = release.name + " was updated " + timeAgo + " and downloaded " + downloadCount.toLocaleString() + " times.";
$(".download").attr("href", asset.browser_download_url);
$(".release-info").text(releaseInfo);
$(".release-info").fadeIn("slow");
});
}
GetLatestReleaseInfo();
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<a class="download" href="https://github.com/ShareX/ShareX/releases/latest">Download</a>
<p class="release-info"></p>
It is important for you to set the default button URL to the releases page (like https://github.com/ShareX/ShareX/releases/latest) so if the browser does not support ajax (or javascript) or is too slow to get the URL, the download button will still work.
When the Ajax request completes, the URL of this button will change automatically to a direct download URL.
Edit:
I also made a downloads page that shows multiple releases which you can find here: https://getsharex.com/downloads/
Source code of it: https://github.com/ShareX/sharex.github.io/blob/master/js/downloads.js
From the command line using curl
and jq
, retrieves the first file of the latest release:
curl -s https://api.github.com/repos/porjo/staticserve/releases/latest | \
jq --raw-output '.assets[0] | .browser_download_url'
Another Linux solution using curl and wget to download a single binary file from the latest release page
curl -s -L https://github.com/bosun-monitor/bosun/releases/latest | egrep -o '/bosun-monitor/bosun/releases/download/[0-9]*/scollector-linux-armv6' | wget --base=http://github.com/ -i - -O scollector
Explanation:
curl -s -L
is to silently download the latest release HTML (after following redirect)
egrep -o '...'
uses regex to find the file you want
wget --base=http://github.com/ -i -
converts the relative path from the pipeline to absolute URL
and -O scollector
sets the desired file name.
may be able to add -N
to only download if the file is newer but S3 was giving a 403 Forbidden error.
Just use one of the urls below to download the latest release: (took urls from boxbilling project for example): https://api.github.com/repos/boxbilling/boxbilling/releases
Download the latest release as zip: https://api.github.com/repos/boxbilling/boxbilling/zipball
Download the latest release as tarball: https://api.github.com/repos/boxbilling/boxbilling/tarball
Click on one of the urls to download the latest release instantly. As i wrote this lines it's currently: boxbilling-boxbilling-4.20-30-g452ad1c[.zip/.tar.gz]
UPDATE: Found an other url in my logfiles (ref. to example above) https://codeload.github.com/boxbilling/boxbilling/legacy.tar.gz/master
As noted previously, jq is useful for this and other REST APIs.
Assuming you want the macOS release:
URL=$( curl -s "https://api.github.com/repos/atom/atom/releases/latest" \
| jq -r '.assets[] | select(.name=="atom-mac.zip") | .browser_download_url' )
curl -LO "$URL"
Note each repo can have different ways of providing the desired artifact, so I will demonstrate for a well-behaved one like atom.
curl -s "https://api.github.com/repos/atom/atom/releases/latest" \
| jq -r '.assets[] | .name'
atom-1.15.0-delta.nupkg
atom-1.15.0-full.nupkg
atom-amd64.deb
...
Below atom-mac is my desired asset via jq's select(.name=="atom-mac.zip")
curl -s "https://api.github.com/repos/atom/atom/releases/latest" \
| jq -r '.assets[] | select(.name=="atom-mac.zip") | .browser_download_url'
https://github.com/atom/atom/releases/download/v1.15.0/atom-mac.zip
curl -LO "https://github.com/atom/atom/releases/download/v1.15.0/atom-mac.zip"
jq syntax can be difficult. Here's a playground for experimenting with the jq
above:
https://jqplay.org/s/h6_LfoEHLZ
You should take measures to ensure the validity of the downloaded artifact via sha256sum and gpg, if at all possible.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With