New Case Study:See how Anthropic automated 95% of dependency reviews with Socket.Learn More
Socket
Sign inDemoInstall
Socket

files-extractor

Package Overview
Dependencies
Maintainers
1
Versions
37
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

files-extractor - npm Package Compare versions

Comparing version 0.0.5 to 0.0.6

170

index.js

@@ -15,4 +15,5 @@ /*!

const fs = require('fs-extra')
const chalk = require('chalk');
const yaml = require('js-yaml');
const chalk = require('chalk');
const cluster = require('cluster');
const utils = require('./lib/utils');

@@ -26,12 +27,16 @@ const async = require('./lib/async');

const YAMLFILE = path.join(CWD, YAML);
const searching = chalk.reset.green.bold('Searching');
const filtering = chalk.reset.green.bold('Filtering');
const load = ora({ text: searching, stream: process.stdout, spinner: spinners.line });
function color(value, color) {
return chalk.reset.bold[color || 'cyan'](value);
}
function filter(files, options) {
return files.filter(function(file) {
load.text = `${ filtering }: ${ chalk.reset.cyan.bold(file) }`;
let stat;
process.send({
status: STATUS.FILTERING,
data: file
});
try {

@@ -92,47 +97,140 @@ stat = fs.statSync(path.join(CWD, file));

const STATUS = {
FAILED: 0,
WARNING: 1,
SEARCHING: 2,
FILTERING: 3,
FILTERED: 4,
EXTRACTING: 5,
EXTRACTED: 6
};
const starting = color('Starting...', 'green');
const searching = color('Searching', 'green');
const filtering = color('Filtering', 'green');
const extracting = color('Extracting', 'green');
const fmt = `${ extracting }: [:bar] (:current/:total) :percent - :file`;
FilesExtractor.prototype = {
extract: function() {
load.start();
spinner: function() {
return this.load = ora({
stream: process.stdout,
spinner: spinners.line
}).start(starting);
},
bar: function(total) {
return this.progress = new ProgressBar(fmt, {
width: 30,
clear: true,
total: total,
stream: process.stdout,
head: '>'
});
},
UI: function(message) {
let context = this;
let data = message.data;
let load = context.load;
let progress = context.progress;
let options = this.options;
switch (message.status) {
case STATUS.FAILED:
load.fail(data.message);
glob(options.files, { root: CWD, dot: options.dot, nodir: true, ignore: options.ignore }, function(error, files) {
if (error) {
process.exit();
break;
case STATUS.WARNING:
progress.interrupt(`${ extracting }: ${ data.syscall } ${ color(data.file, 'red') } ${ data.code }!`);
break;
case STATUS.SEARCHING:
load.text = `${ searching }: ${ color(data) }`;
break;
case STATUS.FILTERING:
load.text = `${ filtering }: ${ color(data) }`;
break;
case STATUS.FILTERED:
load.stop();
context.bar(data);
break;
case STATUS.EXTRACTING:
progress.tick({
file: color(data)
});
break;
case STATUS.EXTRACTED:
process.stdout.write(color(data, 'green'));
process.exit();
break;
}
},
extract: function() {
let context = this;
let options = context.options;
return process.stderr.write(error);
}
if (cluster.isMaster) {
cluster.setupMaster({
silent: true
});
files = filter(files, options);
context.spinner();
load.stop();
let worker = cluster.fork();
let extracting = chalk.reset.green.bold('Extracting');
let fmt = `${ extracting }: [:bar] (:current/:total) :percent - :file`;
let bar = new ProgressBar(fmt, { width: 30, clear: true, total: files.length, stream: process.stdout, head: '>' });
// Listen event
worker.on('message', context.UI.bind(context));
} else {
glob(options.files, { root: CWD, dot: options.dot, nodir: true, ignore: options.ignore }, function(error, files) {
if (error) {
return process.send({
status: STATUS.FAILED,
data: error
});
}
async.series(files, function(file, next) {
fs.copy(file, dest(file, options), { preserveTimestamps: true }, function(error) {
bar.tick({ file: chalk.reset.cyan.bold(file) });
files = filter(files, options);
if (error) {
let syscall = error.syscall || 'extract';
let code = error.code || 'failed';
process.send({
status: STATUS.FILTERED,
data: files.length
});
bar.interrupt(`${ extracting }: ${ syscall } ${ chalk.reset.red.bold(file) } ${ code }!`);
}
async.series(files, function(file, next) {
fs.copy(file, dest(file, options), { preserveTimestamps: true }, function(error) {
process.send({
status: STATUS.EXTRACTING,
data: file
});
next();
if (error) {
let syscall = error.syscall || 'extract';
let code = error.code || 'failed';
process.send({
status: STATUS.WARNING,
data: { syscall, file, code }
});
}
next();
});
}, function() {
let message = files.length
? 'Oh yeah, extract the matched files successfully!'
: 'Oops, there is no files matched the condition!';
process.send({
status: STATUS.EXTRACTED,
data: message
});
process.exit();
});
}, function() {
let message = files.length ? 'Oh yeah, extract the matched files successfully!' : 'Oops, there is no files matched the condition!';
process.stdout.write(chalk.reset.green.bold(message));
process.exit();
}).on('match', function(file) {
process.send({
status: STATUS.SEARCHING,
data: file
});
});
}).on('match', function(file) {
load.text = `${ searching }: ${ chalk.reset.cyan.bold(file) }`;
});
}
return this;
return context;
}

@@ -139,0 +237,0 @@ };

@@ -11,2 +11,4 @@ /*!

const toString = Object.prototype.toString;
const padStart = String.prototype.padStart ? function(value, length, pad) {

@@ -39,3 +41,6 @@ return String.prototype.padStart.call(value, length, pad);

padStart: padStart,
dateIsValid: dateIsValid
dateIsValid: dateIsValid,
isString: function(value) {
return toString.call(value) === '[object String]';
}
};
{
"name": "files-extractor",
"version": "0.0.5",
"version": "0.0.6",
"description": "Extract files that have changed between the specified date.",

@@ -5,0 +5,0 @@ "main": "index.js",

Sorry, the diff of this file is not supported yet

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc