UNPKG

readmeio-sync

Version:

Sync documentation between Readme.io and your Github Repo

111 lines (89 loc) 3.81 kB
'use strict'; var Downloader = require('./downloader'); var Requestor = require('./requestor'); var config = require('./config'); var Uploader = function(registry, cookie) { this.registry = registry; this.cookie = cookie; this.downloader = new Downloader(config.projectName, cookie); }; Uploader.prototype.uploadDocs = function(cb) { var self = this; var requestor = new Requestor(config.projectName, self.cookie); self.setRequestMethods('allDocCategories', function(allCategories) { config.progress.section('Creating documentation categories...'); requestor.uploadDocCategories(allCategories, function(uploadedCategories) { config.progress.reportResourceResults(uploadedCategories); self.setRequestMethods('allDocs', function(allDocs) { config.progress.section('Creating documents...'); requestor.uploadDocs(allDocs, function(uploadedDocs) { config.progress.reportResourceResults(uploadedDocs); cb(self.registry); }); }); }); }); }; Uploader.prototype.uploadCustomPages = function(cb) { var self = this; var requestor = new Requestor(config.projectName, self.cookie); self.setRequestMethods('allCustomPages', function(allCustomPages) { config.progress.section('Creating custom pages...'); requestor.uploadPages(allCustomPages, function(uploadedPages) { config.progress.reportResourceResults(uploadedPages); cb(self.registry); }); }); }; Uploader.prototype.uploadCustomContent = function(cb) { var self = this; var requestor = new Requestor(config.projectName, self.cookie); var allCustomContent = this.registry.allCustomContent(); config.progress.section('Creating custom content...'); requestor.uploadContent(allCustomContent, function(uploadedContent) { config.progress.reportResourceResults(uploadedContent); cb(self.registry); }); }; Uploader.prototype.uploadAll = function(cb) { var self = this; config.progress.header('Uploading to: ' + this.registry.projectName); self.uploadDocs(function() { self.uploadCustomPages(function() { self.uploadCustomContent(function(contentReg) { self.uploadDocsOrder(function(orderingSuccess) { if (orderingSuccess) { cb(contentReg); } else { config.log('Ordering documentation failed :('); } }); }); }); }); }; Uploader.prototype.uploadDocsOrder = function(cb) { var self = this; var requestor = new Requestor(config.projectName, self.cookie); config.progress.section('Setting category orders...'); requestor.uploadDocCategoriesOrder(self.registry.allDocCategories(), function(categoryResults) { config.progress.reportResourceResults(categoryResults); config.progress.section('Setting document orders...'); requestor.uploadDocsOrder(self.registry.allDocs(), function(docsResults) { config.progress.reportResourceResults(docsResults); cb(!!docsResults && !!categoryResults); }); }); }; Uploader.prototype.setRequestMethods = function(section, cb) { var self = this; self.downloader.downloadRemoteRegistry(function(remoteRegistry) { var diff = self.registry.diff(remoteRegistry); var resources = self.registry[section]().map(function(resource) { resource.method = diff.isAdded(section, { slug: resource.slug, version: resource.version }) ? 'post' : 'put'; return resource; }); cb(resources); }); }; module.exports = Uploader;