ez-organizer
Version:
Organise tvshows automatically (part of the 'ez' programs)
154 lines (132 loc) • 4.88 kB
JavaScript
;
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = void 0;
var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));
var _promise = _interopRequireDefault(require("@babel/runtime/core-js/promise"));
var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
var _path = _interopRequireDefault(require("path"));
var _fsExtra = _interopRequireDefault(require("fs-extra"));
var _progress = _interopRequireDefault(require("progress"));
var _truncate = _interopRequireDefault(require("truncate"));
var FileStream =
/*#__PURE__*/
function () {
function FileStream(_fileUri, _outputURI) {
(0, _classCallCheck2.default)(this, FileStream);
this.fileUri = _fileUri;
this.outputURI = _outputURI;
this.filename = _path.default.basename(_fileUri);
}
(0, _createClass2.default)(FileStream, [{
key: "copy",
value: function () {
var _copy = (0, _asyncToGenerator2.default)(
/*#__PURE__*/
_regenerator.default.mark(function _callee(id) {
var fileStats, bar, fileStream, writeStream;
return _regenerator.default.wrap(function _callee$(_context) {
while (1) {
switch (_context.prev = _context.next) {
case 0:
_context.next = 2;
return this._fileStats(this.fileUri);
case 2:
fileStats = _context.sent;
bar = new _progress.default(" ".concat(id, ". Copying ").concat((0, _truncate.default)(this.filename, 100), " [:bar] :percent"), {
width: 30,
total: fileStats.size
});
fileStream = _fsExtra.default.createReadStream(this.fileUri);
writeStream = _fsExtra.default.createWriteStream(this.outputURI);
return _context.abrupt("return", new _promise.default(function (resolve) {
fileStream.on('data', function (chunk) {
return bar.tick(chunk.length);
}).on('end', function () {
fileStream.unpipe(writeStream);
writeStream.close();
resolve();
}).pipe(writeStream);
}));
case 7:
case "end":
return _context.stop();
}
}
}, _callee, this);
}));
return function copy(_x) {
return _copy.apply(this, arguments);
};
}()
}, {
key: "exists",
value: function () {
var _exists = (0, _asyncToGenerator2.default)(
/*#__PURE__*/
_regenerator.default.mark(function _callee2(uri) {
var stat;
return _regenerator.default.wrap(function _callee2$(_context2) {
while (1) {
switch (_context2.prev = _context2.next) {
case 0:
_context2.prev = 0;
_context2.next = 3;
return this._fileStats(uri);
case 3:
stat = _context2.sent;
return _context2.abrupt("return", stat);
case 7:
_context2.prev = 7;
_context2.t0 = _context2["catch"](0);
return _context2.abrupt("return", false);
case 10:
case "end":
return _context2.stop();
}
}
}, _callee2, this, [[0, 7]]);
}));
return function exists(_x2) {
return _exists.apply(this, arguments);
};
}()
}, {
key: "delete",
value: function _delete(inputFolder) {
// const parentDir = this._searchForParentDir(inputFolder)
// const uriToDelete = parentDir !== this.filename
// ? parentDir
// : this.filename
return this._del(_path.default.join(inputFolder, this.filename // uriToDelete
));
}
}, {
key: "_del",
value: function _del(URI) {
return _fsExtra.default.remove(URI);
}
}, {
key: "_searchForParentDir",
value: function _searchForParentDir(inputFolder) {
return _path.default.relative(inputFolder, this.fileUri).split('/')[0];
}
}, {
key: "_fileStats",
value: function _fileStats(_uri) {
return new _promise.default(function (resolve, reject) {
_fsExtra.default.stat(_uri, function (err, stat) {
if (err) return reject(err);
resolve(stat);
});
});
}
}]);
return FileStream;
}();
exports.default = FileStream;
//# sourceMappingURL=FileStream.js.map