ayakashi
Version:
The next generation web scraping framework
63 lines (61 loc) • 2.53 kB
JavaScript
;
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
return new (P || (P = Promise))(function (resolve, reject) {
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
step((generator = generator.apply(thisArg, _arguments || [])).next());
});
};
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.generateScript = void 0;
const mkdirp_1 = __importDefault(require("mkdirp"));
const util_1 = require("util");
const path_1 = require("path");
const fs_1 = require("fs");
const opLog_1 = require("../../opLog/opLog");
const mkdirp = util_1.promisify(mkdirp_1.default);
const writeFile = util_1.promisify(fs_1.writeFile);
const exists = util_1.promisify(fs_1.exists);
function generateScript(directory, name, ts) {
return __awaiter(this, void 0, void 0, function* () {
const opLog = opLog_1.getOpLog();
const ext = ts ? ".ts" : ".js";
let fileName;
if (name.indexOf(ext) > -1) {
fileName = name;
}
else {
fileName = `${name}${ext}`;
}
const scriptsFolder = path_1.join(directory, "scripts");
const filePath = path_1.join(scriptsFolder, fileName);
if (yield exists(filePath)) {
opLog.error(`script <${name}> already exists in ${filePath}`);
return;
}
yield mkdirp(scriptsFolder);
const content = ts ? getContentTS() : getContent();
yield writeFile(filePath, content);
opLog.info(`Created <${name}> in ${filePath}`);
});
}
exports.generateScript = generateScript;
function getContent() {
return (`module.exports = async function(input, params) {
return {page: "https://github.com/ayakashi-io/ayakashi"};
};
`);
}
function getContentTS() {
return (`type ScriptInput = {};
type ScriptParams = {};
export default async function(input: ScriptInput, params: ScriptParams) {
return {page: "https://github.com/ayakashi-io/ayakashi"};
}
`);
}