This is a simple script for NodeJS, which was developed to download releases from the site GitHub. It allows you to download a file from the repository and unpack it into the desired folder.
Warning: When unpacking the archive
.tar.gz
the script overwrites the folder (does not update it)!
- Connect the file
loader.js
- Create a new object
- Configure remote, local and the final path
- Run it
I hope you find this script useful. I will be glad to respond to your comments (preferably in Russian or English)!
Это простой скрипт для NodeJS, который был разработан для загрузки релизов с сайта GitHub. Он позволяет загружать файл из репозитория и распаковывать его в нужную папку.
Предупреждение: При распаковке архива
.tar.gz
скрипт перезаписывает папку (не обновляет ее)!
- Подключаем файл
loader.js
- Создаем новый объект
- Настраиваем удаленный, локальный и конечный путь
- Запускаем
Надеюсь, вам пригодится данный скрипт. Буду рад ответить на ваши комментарии (желательно на русском или английском языке)!
Dies ist ein einfaches Skript für NodeJS, das entwickelt wurde, um Releases von der Site GitHub herunterzuladen. Sie können eine Datei aus dem Repository herunterladen und in den gewünschten Ordner entpacken.
Warnung: Beim Entpacken des Archivs
.tar.gz
überschreibt das Skript den Ordner (wird nicht aktualisiert)!
- Verbinde die Datei
loader.js
- Erstellen Sie ein neues Objekt
- Konfigurieren Sie remote, local und den endgültigen Pfad
- Wir beginnen
Ich hoffe, Sie finden dieses Skript nützlich. Ich werde gerne auf Ihre Kommentare antworten (vorzugsweise auf Russisch oder Englisch)!
Ceci est un script simple pour NodeJS, qui a été développé pour télécharger les versions du site GitHub. Il vous permet de télécharger un fichier depuis le référentiel et de le décompresser dans le dossier souhaité.
Avertissement: Lors du déballage de l'archive
.tar.gz
, le script écrase le dossier (ne le met pas à jour)!
- Connectez le fichier
loader.js
- Créez un nouvel objet
- Configurez remote, local et le chemin final
- Nous commençons
J'espère que vous trouvez ce script utile. Je serai heureux de répondre à vos commentaires (de préférence en russe ou en anglais)!
Este es un script simple para NodeJS, que fue desarrollado para descargar versiones del sitio GitHub. Le permite descargar un archivo del repositorio y descomprimirlo en la carpeta deseada.
Advertencia: Al desempacar el archivo
.tar.gz
, el script sobrescribe la carpeta (¡no la actualiza)!
- Conecte el archivo
loader.js
- Crea un nuevo objeto
- Configure remoto, local y la ruta final
- Comenzamos
Script y example a continuación.
Espero que este script te sea útil. Estaré encantado de responder a sus comentarios (preferiblemente en ruso o inglés)!
これは、サイト** GitHubからリリースをダウンロードするために開発されたNodeJS**の簡単なスクリプトです。リポジトリからファイルをダウンロードし、目的のフォルダに展開することができます。
警告アーカイブ
.tar.gz
をアンパックすると、スクリプトはフォルダを上書きします(更新しません)!
- ファイル
loader.js
を接続します。 - 新しいオブジェクトを作成する
- リモート、ローカル、最終パスを設定する
- 始めましょう
このスクリプトが役立つことを願っています。私はあなたのコメント(好ましくはロシア語または英語)にお答えできてうれしいです!
'use strict'
const path = require ('path');
const url = require ('url');
const http = require ('http');
const https = require ('https');
const { createReadStream, createWriteStream } = require ('fs');
const unpack = require ('tar-pack').unpack;
const chalk = require ('chalk');
var log = console.log;
function loader (unpackage) {
this.unpackage = unpackage;
log (`${chalk.cyan ('Init')}`);
};
loader.prototype.file = {
write: {},
ready: false,
bytes: 0
};
loader.prototype.contentLength = 0;
loader.prototype.remote = '';
loader.prototype.local = '';
loader.prototype.unpack = '';
loader.prototype.redirect = false;
loader.prototype.percent = 0;
loader.prototype.transport = {};
loader.prototype.port = 0;
loader.prototype.set = function (type, name) {
log (`${chalk.blue ('Set:')} ${chalk.black (type)} ${chalk.grey (name)}`);
this[type] = name;
};
loader.prototype.run = function () {
log (`${chalk.cyan ('Start')}`);
this.download (this.remote, this.local, 0);
};
loader.prototype.download = function (remote, local) {
log (`${chalk.cyan ('Request:')} ${chalk.grey (remote)}`);
var __ = this;
if (remote.indexOf ('https') != -1) {
__.port = 443;
__.transport = https;
} else {
__.port = 80;
__.transport = http;
}
var request = __.transport.get ({
host: url.parse (remote).hostname,
port: __.port,
path: url.parse (remote).pathname
}, function (response) {
switch (response.statusCode) {
case 200:
log (`${chalk.cyan ('Response:')} ${chalk.green (response.statusCode)}`);
__.contentLength = response.headers['content-length'];
break;
case 302:
log (`${chalk.cyan ('Response:')} ${chalk.grey (response.statusCode)}`);
__.download (response.headers.location, local);
return;
break;
case 404:
log (`${chalk.cyan ('Response:')} ${chalk.orange (response.statusCode)}`);
default:
log (`${chalk.cyan ('Response:')} ${chalk.red (response.statusCode)}`);
request.abort ();
return;
}
response.on ('data', function (chunk) {
log (`${chalk.cyan ('Download')}`);
if(!__.file.ready) {
__.file.write = createWriteStream (local);
__.file.ready = true;
}
__.file.write.write (chunk);
__.file.bytes += chunk.length;
__.percent = parseInt ((__.file.bytes / __.contentLength) * 100);
log (`${chalk.cyan ('Percent:')} ${chalk.green (__.percent)}${chalk.green ('%')}`);
});
response.on ('end', function () {
log (`${chalk.green ('Done')}`);
__.file.write.end (function (argument) {
if (__.unpackage) {
createReadStream (local).pipe (unpack (__.unpack, function (err) {
log (`${chalk.cyan ('Unpack')} ${chalk.grey (__.unpack)}`);
if (err) {
log (`${chalk.red ('Error:')} ${chalk.red (err)}`);
} else {
log (`${chalk.green ('Finish')}`);
}
}));
}
});
});
});
request.on ('error', function (err) {
log (`${chalk.red ('Error:')} ${chalk.red (err.message)}`);
});
};
module.exports = loader;
'use strict'
/* 1 */
const loader = require ('./loader');
/* 2 */
var load = new loader (true);
/* 3 */
load.set ('remote', 'https://github.com/rateljs/cms/archive/v0.0.0.tar.gz');
load.set ('local', './application/v0.0.0.tar.gz');
load.set ('unpack', './application/v0.0.0/');
/* 4 */
load.run ();
'use strict'
/* 1 */
const loader = require ('./loader');
/* 2 */
var load = new loader (false);
/* 3 */
load.set ('remote', 'https://github.com/rateljs/cms/archive/v0.0.0.tar.gz');
load.set ('local', './application/v0.0.0.tar.gz');
/* 4 */
load.run ();
Copyright (c) 2018 Vyacheslav Tomasevich vyacheslav.tomasevich@gmail.com
Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.