//
// Copyright (c) Shay Jacoby - www.s-online.co.il. All rights reserved.
//
//
// JavaScript + Css Minifier
//
namespace ShopEngine.Tools
{
#region Using directives
using System;
using System.IO;
using Yahoo.Yui.Compressor;
#endregion
///
/// Js + Css Minifier, Assembly taken from:
/// http://yuicompressor.codeplex.com/
///
public static class Minifier
{
#region Constants
///
/// Debug file
///
private const string Debug = "debug";
///
/// Minified file
///
private const string Min = "min";
#endregion Constants
///
/// Main method.
///
/// The arguments.
public static void Main(string[] args)
{
if (args.Length == 0)
{
Console.WriteLine("invalid arguments, no path was specified.");
return;
}
var di = new DirectoryInfo(args[0]);
var files = di.GetFiles(string.Format("*.{0}.js", Debug), SearchOption.AllDirectories);
var i = 0;
foreach (var fi in files)
{
i++;
string src = fi.FullName.ToLower();
string srcText = File.ReadAllText(src);
string dst = src.Replace(Debug, Min);
string dstText = !string.IsNullOrEmpty(srcText) ? JavaScriptCompressor.Compress(srcText, false) : string.Empty;
using (var streamWriter = new StreamWriter(dst))
{
streamWriter.Write(dstText);
}
}
Console.WriteLine("{0} Js Files minified.", i);
// Check for Css folder
if (args.Length > 1)
{
di = new DirectoryInfo(args[1]);
files = di.GetFiles(string.Format("*.{0}.css", Debug), SearchOption.AllDirectories);
i = 0;
foreach (var fi in files)
{
i++;
string src = fi.FullName.ToLower();
string srcText = File.ReadAllText(src);
string dst = src.Replace(Debug, Min);
string dstText = !string.IsNullOrEmpty(srcText) ? CssCompressor.Compress(srcText) : string.Empty;
using (var streamWriter = new StreamWriter(dst))
{
streamWriter.Write(dstText);
}
}
Console.WriteLine("{0} Css Files minified.", i);
}
}
}
}