var shell = require( "shelljs" );
var Release = {
	define: function( props ) {
		for ( var key in props ) {
			Release[ key ] = props[ key ];
		}
	},
	exec: function( _options, errorMessage ) {
		var result,
			command = _options.command || _options,
			options = {};

		if ( _options.silent ) {
			options.silent = true;
		}

		errorMessage = errorMessage || "Error executing command: " + command;

		result = shell.exec( command, options );
		if ( result.code !== 0 ) {
			Release.abort( errorMessage );
		}

		return result.output;
	},
	abort: function() {
		console.error.apply( console, arguments );
		process.exit( 1 );
	},
	newVersion: require( "../package" ).version
};

var script = require( "./release" );
script( Release );

// Ignores actual version installed, should be good enough for a test
if ( shell.exec( "npm ls --depth 0 | grep download.jqueryui.com" ).code === 1 ) {
	shell.exec( "npm install " + script.dependencies.join( " " ) );
}

// If AUTHORS.txt is outdated, this will update it
// Very annoying during an actual release
shell.exec( "grunt update-authors" );

Release.generateArtifacts( function() {
	console.log( "Done generating artifacts, verify output, should be in dist/cdn" );
} );
