_(fs.readdirSync(baseDir, {withFileTypes: true})) .filter(dirent => dirent.isDirectory()) .map(dirent => dirent.name) .concat('.') .map(directory => path.resolve(baseDir, directory, '.platform.app.yaml')) .filter(file => fs.existsSync(file)) .map(file => ({data: yamlPlatform.load(fs.readFileSync(file)), file})) .map(data => ({name: data.data.name, file: data.file, dir: path.dirname(data.file)})) .value()
_(files) .flatMap(file => traverseUp(path.resolve(startFrom, file))) .sortBy().reverse() .filter(file => fs.existsSync(file) && path.isAbsolute(file)) .thru(files => _.isEmpty(files) ? [] : [_.first(files)]) .flatMap(dirFile => _.map(files, file => path.join(path.dirname(dirFile), file))) .filter(file => fs.existsSync(file)) .value()
constructor() { this.tempPath = path.join(path.dirname(require.main.filename), '..', 'temp'); mkdirp(this.tempPath); }
let createRelease = async function(api) { let {url} = Config.repository; let owner = basename(dirname(url)); let repo = basename(url, extname(url)); let cb = (resolve, reject) => { api.releases.createRelease({ owner: owner, repo: repo, tag_name: `v${Config.version}`, body: argv.desc || '', name: argv.name || `v${Config.version}`, draft: argv.draft === 'yes' }, (err, result) => { if(err) { onError(err); return reject(err); } resolve(result); }); }; return new Promise(cb); }
function renderMdToHtml(md, targetPath, templateParams) { // Remove the header because it's going to be added back as HTML md = md.replace(/# Joplin\n/, ''); templateParams.baseUrl = 'https://joplinapp.org'; templateParams.imageBaseUrl = `${templateParams.baseUrl}/images`; templateParams.tocHtml = tocHtml(); const title = []; if (!templateParams.title) { title.push('Joplin - an open source note taking and to-do application with synchronisation capabilities'); } else { title.push(templateParams.title); title.push('Joplin'); } md = replaceGitHubByJoplinAppLinks(md); templateParams.pageTitle = title.join(' | '); const html = markdownToHtml(md, templateParams); const folderPath = dirname(targetPath); fs.mkdirpSync(folderPath); fs.writeFileSync(targetPath, html); }
/** * Dumps an object to a YAML file * * @since 3.0.0 * @alias lando.yaml.dump * @param {String} file The path to the file to be loaded * @param {Object} data The object to dump * @return {String} Flename */ dump(file, data = {}) { // Make sure we have a place to store these files mkdirp.sync(path.dirname(file)); // Remove any properties that might be bad and dump data = JSON.parse(JSON.stringify(data)); // And dump fs.writeFileSync(file, yaml.safeDump(data)); // Log and return filename return file; }
const iconModuleRequest = stringify(path.relative(path.dirname(symbol.request.file), iconModulePath));
const folders = getDirectories(dirname(__filename));
let uploadAsset = async function(api, id, dists) { let {url} = Config.repository; let owner = basename(dirname(url)); let repo = basename(url, extname(url)); return Promise.all(_.map(dists, (dist) => { let name = `${basename(dist)}.zip`; let filePath = join(PATHS.DIST, name); return new Promise((resolve, reject) => { api.releases.uploadAsset({ owner: owner, repo: repo, id: id, name: name, filePath: filePath }, (err, result) => { if(err) { onError(err); return reject(err); } resolve(result); }); }); })); }
/* * Helper to locate the "closest" platform yaml */ const traverseUp = (startFrom = process.cwd()) => { return _(_.range(path.dirname(startFrom).split(path.sep).length)) .map(end => _.dropRight(path.dirname(startFrom).split(path.sep), end).join(path.sep)) .unshift(startFrom) .dropRight() .value(); }
const folders = getDirectories(dirname(__filename));