Skip to content

Commit

Permalink
chore: build nsis web and upload
Browse files Browse the repository at this point in the history
  • Loading branch information
ci010 committed Oct 23, 2020
1 parent 2085cf6 commit a9c98e7
Show file tree
Hide file tree
Showing 5 changed files with 93 additions and 93 deletions.
8 changes: 8 additions & 0 deletions .github/workflows/build.yml
Original file line number Diff line number Diff line change
Expand Up @@ -46,6 +46,11 @@ jobs:
env:
BUILD_NUMBER: ${{ steps.vars.outputs.build_number }}
FULL_RELEASE: ${{ startsWith(github.event.commits[0].message, 'chore(release)') }}
- name: Upload Web Build
uses: actions/upload-artifact@v2
with:
name: build
path: build/nsis-web/*.*
- name: Upload Build
uses: actions/upload-artifact@v2
with:
Expand Down Expand Up @@ -139,6 +144,9 @@ jobs:
prerelease: false
body: ${{ steps.prepare_release.outputs.body }}
asset_dir_path: ./build
- name: Update the latest-version.js
run: |
node --eval "console.log('const version = \"' + JSON.parse(require('fs').readFileSync('package.json').toString()).version + '\"')" > /build/latest-version.js
- name: Upload to Azure
uses: ci010/upload-blob-to-azure@master
env:
Expand Down
9 changes: 3 additions & 6 deletions docs/index.html
Original file line number Diff line number Diff line change
Expand Up @@ -109,10 +109,6 @@ <h1 class="ui inverted header" style="line-height: 1.4;font-size: 3em;">
</div>
</h1>
<div class="ui hidden divider" style="padding: 0 0;"></div>
<a win-portable class="ui huge inverted download labeled icon olive button">
<i class="file archive outline icon"></i>
<span data-i18n="download-portable"></span>
</a>
<a win-setup class="ui huge inverted download labeled icon positive button">
<i class="rocket icon"></i>
<span data-i18n="download"></span>
Expand Down Expand Up @@ -172,8 +168,6 @@ <h1 class="ui inverted header" style="line-height: 1.4;font-size: 3em;">

</div>



<script src="https://cdn.jsdelivr.net/npm/[email protected]/dist/jquery.min.js"></script>

<script src="https://cdn.jsdelivr.net/npm/[email protected]/i18next.min.js"></script>
Expand All @@ -188,6 +182,9 @@ <h1 class="ui inverted header" style="line-height: 1.4;font-size: 3em;">
<script src="https://cdn.jsdelivr.net/npm/[email protected]/jquery.pagepiling.min.js"></script>

<script src="https://cdn.jsdelivr.net/npm/[email protected]/dist/js-yaml.min.js"></script>
<!-- <script src="https://xmcl.blob.core.windows.net/releases/latest-version.js"></script> -->
<script src="https://xmcl-release.azureedge.net/releases/latest-version.js"></script>

<script src="scripts/platform.js"></script>
<script src="locales/zh.js"></script>
<script src="locales/en.js"></script>
Expand Down
153 changes: 69 additions & 84 deletions docs/scripts/script.js
Original file line number Diff line number Diff line change
Expand Up @@ -27,14 +27,14 @@ $('#languages').dropdown({

$('#source').dropdown({
onChange: function (src, _, elem) {
downloadSource = elem.attr('value');
DOWNLOAD_SOURCE = elem.attr('value');
}
})

/**
* @type {'azure' | 'github' | 'auto'}
*/
let downloadSource = 'auto';
let DOWNLOAD_SOURCE = 'auto';

$('#downloadFor').attr('data-i18n', `downloadFor.${platform.os}`);

Expand All @@ -54,20 +54,42 @@ function inGFW() {

const isInGFW = inGFW();

function getFileUrl(name, fallback) {
return isInGFW.then((inside) => {
if (inside) {
return `https://xmcl-release.azureedge.net/releases/${name}`;
/**
* Get the file url by location. Use azure if in china mainland.
* @param {string} githubUrl github url.
* @param {string} azureUrl azure url
*/
function getFileUrlFromLocation(githubUrl, azureUrl) {
return isInGFW
.then((inside) => inside ? azureUrl : githubUrl)
.catch(() => {
console.log(e);
return githubUrl;
});
}

function getGithubUrl(name) { return `https://github.com/Voxelum/x-minecraft-launcher/releases/download/v${version}/${name}`; }
function getAzureUrl(name) { return `https://xmcl-release.azureedge.net/releases/${name}`; }

function setupHrefByUrl(elem, azureUrl, githubUrl) {
$(elem).click((event) => {
$(elem).addClass('loading');
if (DOWNLOAD_SOURCE === 'auto') {
getFileUrlFromLocation(azureUrl, githubUrl).then((url) => {
$(elem).attr('href', url);
$(elem).removeClass('loading');
})
} else if (DOWNLOAD_SOURCE === 'github') {
$(elem).attr('href', githubUrl);
$(elem).removeClass('loading');
} else {
return fallback;
$(elem).attr('href', azureUrl);
$(elem).removeClass('loading');
}
}).catch(() => {
console.log(e);
return fallback;
});
}

function initGithubInfo() {
function buildFromGithub() {
let releases
function handleReleases(inReleases) {
releases = inReleases;
Expand All @@ -79,44 +101,15 @@ function initGithubInfo() {
$('#prerelease').css('visibility', 'hidden');
}

switch (platform.os.family) {
case 'Windows':
$('[win]').clone().appendTo('[main]');
break;
case 'OS X':
$('[mac]').clone().appendTo('[main]');
break;
case 'Ubuntu':
case 'Debian':
case 'SuSE':
case 'Fedora':
case 'Red Hat':
$('[linux]').clone().appendTo('[main]');
break;
}
function setupHref(elem, find) {
const found = latest.assets.find(find);
if (!found) {
$(elem).addClass('disabled');
} else {
$(elem).click((event) => {
$(elem).addClass('loading');
if (downloadSource === 'auto') {
getFileUrl(found.name, found.browser_download_url).then((url) => {
$(elem).attr('href', url);
$(elem).removeClass('loading');
})
} else if (downloadSource === 'github') {
$(elem).attr('href', found.browser_download_url);
$(elem).removeClass('loading');
} else {
$(elem).attr('href', `https://xmcl-release.azureedge.net/releases/${found.name}`);
$(elem).removeClass('loading');
}
});
setupHrefByUrl(elem, getAzureUrl(found.name), found.browser_download_url);
}
}
setupHref('[win-portable]', a => a.name.indexOf('-Setup') === -1 && a.name.endsWith('.exe'));

setupHref('[win-zip-32]', a => a.name.endsWith('win.zip') && a.name.indexOf('ia32') !== -1);
setupHref('[win-zip]', a => a.name.endsWith('win.zip') && a.name.indexOf('ia32') === -1);
setupHref('[win-setup]', a => a.name.indexOf('-Setup') !== -1 && a.name.endsWith('.exe'));
Expand All @@ -126,53 +119,45 @@ function initGithubInfo() {
setupHref('[snap]', a => a.name.endsWith('.snap'));
setupHref('[appimage]', a => a.name.endsWith('.AppImage'));
setupHref('[rpm]', a => a.name.endsWith('.rpm'));

const { installer, portable, zip } = getLatestDownloadsByPlatform(latest.assets);
$('#download').attr('href', installer.browser_download_url);
if (portable) {
$('#download-portable').attr('href', portable.browser_download_url);
} else {
$('#download-portable').attr('disable', true).addClass('disabled');
}
if (zip) {
$('#download-zip').attr('href', zip.browser_download_url);
} else {
$('#download-zip').attr('disable', true).addClass('disabled');
}
}

fetch('https://api.github.com/repos/voxelum/x-minecraft-launcher/releases')
.then(resp => resp.json())
.then(handleReleases);
}

function getLatestDownloadsByPlatform(assets) {
const os = platform.os;
const is64 = os.architecture === 64;
switch (os.family) {
case 'Windows':
return {
installer: assets.find(a => a.name.indexOf('-Setup-') !== -1 && a.name.endsWith('.exe')),
portable: assets.find(a => a.name.indexOf('-Setup-') === -1 && a.name.endsWith('.exe')),
zip: is64 ? assets.find(a => a.name.endsWith('win.zip') && a.name.indexOf('ia32') === -1)
: assets.find(a => a.name.endsWith('win.zip') && a.name.indexOf('ia32') !== -1),
};
case 'OS X':
return {
installer: assets.find(a => a.name.endsWith('.dmg')),
zip: assets.find(a => a.name.endsWith('mac.zip')),
}
case 'Linux':
return {
installer: assets.find(a => a.name.endsWith('.AppImage')),
portable: assets.find(a => a.name.endsWith('.snap')),
}
}
return '';
function buildByVersion() {
$('#version').text(`v${version}`);
function setupHref(elem, name) {
setupHrefByUrl(elem, getAzureUrl(name), getGithubUrl(name));
}

fetch('https://api.github.com/repos/voxelum/x-minecraft-launcher/releases')
.then(resp => {
return resp.json()
})
.then(handleReleases);
setupHref('[win-zip-32]', `xmcl-${version}-ia32-win.zip`);
setupHref('[win-zip]', `xmcl-${version}-win.zip`);
setupHref('[win-setup]', `xmcl-Setup-${version}.exe`);
setupHref('[mac-zip]', `xmcl-${version}-mac.zip`);
setupHref('[dmg]', `xmcl-${version}.dmg`);
setupHref('[deb]', `x-minecraft-launcher_${version}_amd64.deb`);
setupHref('[snap]', `x-minecraft-launcher_${version}_amd64.snap`);
setupHref('[appimage]', `xmcl-${version}.AppImage`);
setupHref('[rpm]', `x-minecraft-launcher-${version}.x86_64.rpm`);
}


initGithubInfo();
switch (platform.os.family) {
case 'Windows':
$('[win]').clone().appendTo('[main]');
break;
case 'OS X':
$('[mac]').clone().appendTo('[main]');
break;
case 'Ubuntu':
case 'Debian':
case 'SuSE':
case 'Fedora':
case 'Red Hat':
$('[linux]').clone().appendTo('[main]');
break;
}
buildByVersion();
buildFromGithub();
10 changes: 8 additions & 2 deletions scripts/build.full.config.js
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,10 @@ const config = {
oneClick: false,
allowToChangeInstallationDirectory: true,
perMachine: true,
differentialPackage: true
},
nsisWeb: {
appPackageUrl: "https://xmcl-release.azureedge.net/releases",
},
// fileAssociations: [{
// ext: ['xmcl'],
Expand Down Expand Up @@ -50,12 +54,14 @@ const config = {
win: {
icon: "build/icons/icon.ico",
target: [
'nsis:ia32',
'nsis:x64',
{
target: "nsis",
target: "nsis-web",
arch: [
"x64",
"ia32"
],
]
},
{
target: "zip",
Expand Down
6 changes: 5 additions & 1 deletion src/renderer/assets/common.css
Original file line number Diff line number Diff line change
Expand Up @@ -152,10 +152,14 @@ p {

/* Draggable card */

*.selection-mode .draggable-card, .draggable-card.selected {
transform: scale(0.95);
}

.draggable-card.dragged {
transform: scale(0.8);
}

.v-dialog {
overflow: hidden;
}
}

0 comments on commit a9c98e7

Please sign in to comment.