Source: controller/admin_extensions.js

'use strict';

var async = require('async'),
	path = require('path'),
	request = require('superagent'),
	pluralize = require('pluralize'),
	capitalize = require('capitalize'),
	fs = require('fs-extra'),
	merge = require('utils-merge'),
	CoreExtension,
	CoreUtilities,
	CoreController,
	appSettings,
	appenvironment,
	mongoose,
	logger;


var extcmd = {
	search: function (options) {
		// console.log('options', options);
		var output = this.outputStream;
		var searchQuery = options._[2] || options.q || '';
		output.write('searching github for extensions named: periodicjs.ext.' + searchQuery);
		// console.log('searching github for extensions named: periodicjs.ext.' + searchQuery);
		// console.log('search this', this);
		request
			.get('https://api.github.com/search/repositories')
			.query({
				q: 'periodicjs.ext.' + searchQuery
			})
			.set('Accept', 'application/json')
			.end(function (error, res) {
				// console.log('res.body.items', res.body.items);
				if (error) {
					output.write(error.message);
				}
				else if (!res.body.items) {
					output.write('could not find periodicjs.ext.' + searchQuery + ' on github');
				}
				else {
					var returnhtml = '<p><strong>Search Results:</strong></p><ul>';
					res.body.items.forEach(function (ext) {
						returnhtml += '<li><span data-prefill-admin-input="execCommand extension install periodicjs.ext.' + ext.name + '" style="cursor:pointer">periodicjs.ext.' + ext.name + '</span> <br><a class="ts-text-xs" target="_blank" href="' + ext.html_url + '">' + ext.full_name + '</a></li>';
					});
					returnhtml += '</ul><p> To install, example: <span class="ts-text-light-primary-color" data-prefill-admin-input="execCommand extension install periodicjs.ext.example" style="cursor:pointer">execCommand extension install <em>periodicjs.ext.example</em></span>';
					output.write(returnhtml);

				}
			});
		return options;
	},
	install: function (options) {
		console.log('install theme  ' + options.n);
	}
};

/**
 * admin controller
 * @module authController
 * @{@link https://github.com/typesettin/periodic}
 * @author Yaw Joseph Etse
 * @copyright Copyright (c) 2014 Typesettin. All rights reserved.
 * @license MIT
 * @requires module:periodicjs.core.utilities
 * @requires module:periodicjs.core.controller
 * @requires module:periodicjs.core.extensions
 * @param  {object} resources variable injection from current periodic instance with references to the active logger and mongo session
 * @return {object}          
 */
var controller = function (resources) {
	logger = resources.logger;
	mongoose = resources.mongoose;
	appSettings = resources.settings;
	CoreController = resources.core.controller;
	CoreUtilities = resources.core.utilities;
	CoreExtension = resources.core.extension;
	return {
		extcmd: extcmd
	};
};

module.exports = controller;