Click here to Skip to main content
15,895,667 members
Articles / Web Development / ASP.NET

DesktopBrowser - A Web Based File Explorer for Media Desktops

Rate me:
Please Sign up or sign in to vote.
4.21/5 (4 votes)
25 Jun 2011GPL32 min read 34.1K   1.1K   22  
A presentation of DesktopBrowser open-source project, a web based file explorer for media desktops.
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.IO;
using System.Diagnostics;
using GCUpload;

namespace Release
{
    class Program
    {
        static void Main(string[] args)
        {
            var versionsFile = @"C:\Projects\DesktopBrowser\trunk\Release\Versions.txt";
            var lastVersion = File.ReadAllLines(versionsFile).Where(t => !String.IsNullOrEmpty(t)).LastOrDefault();
            Console.WriteLine("Last version is: {0}, Enter new version:", lastVersion);
            var version = Console.ReadLine();
            var zipFile = "DesktopBrowser-" + version + ".zip";
            var srcDir = @"C:\Projects\DesktopBrowser\trunk\";
            var tempDir = @"c:\temp\DesktopBrowser";
            VerifyDir(tempDir);
            DeleteDirContents(tempDir);
            CD(tempDir);
            CopyDirContents(srcDir, tempDir, true, true);
            DeleteFiles(new string[] { "*.sln", "*.pdb", "*.vshost.exe" });
            DeleteDirectories(new string[] { "Release", "DesktopBrowser.Launcher" });
            CD("DesktopBrowser");
            DeleteFiles(new string[] { "*.cs", "*.pdb", "*.user", "*.csproj" }, true);
            DeleteDirectories(new string[] { "Client", "Server", "obj", "Properties" });
            CD("..");
            if (File.Exists(zipFile))
                File.Delete(zipFile);
            ZipDirectory(tempDir, zipFile);
            Console.WriteLine("Ready to upload to google code? press enter to continue");
            Console.ReadLine();
            WriteLine("uploading");
            GoogleCodeUpload(new GoogleCodeUploadRequest
            {
                userName = "danelkhen",
                password = File.ReadAllText(@"C:\Projects\GoogleCodePassword.txt"),
                projectName = "desktopbrowser",
                fileName = zipFile,
                summary = "DesktopBrowser v" + version,
                labels = new List<string> { "Featured", "Type-Executable", "OpSys-Windows" }
            });
            File.AppendAllLines(versionsFile, new []{version});
        }

        static void GoogleCodeUpload(GoogleCodeUploadRequest req)
        {
            FileUpload.UploadFile(req.userName, req.password, req.projectName, req.fileName, req.targetFileName, req.summary, req.labels, req.uploadUrl);
        }
        private static void WriteLine(string p)
        {
            Console.WriteLine(p);
        }

        static void CD(string dir)
        {
            Directory.SetCurrentDirectory(dir);
        }

        private static void DeleteFiles(string[] filenames, bool recursive = false)
        {
            var dir = Directory.GetCurrentDirectory();
            filenames.ForEach(t => Directory.GetFiles(dir, t, recursive ? SearchOption.AllDirectories : SearchOption.TopDirectoryOnly).ForEach(x => File.Delete(x)));
        }

        private static void DeleteDirectories(string[] dirs)
        {
            dirs.ForEach(dir => Directory.Delete(dir, true));
        }


        static List<string> GetFiles(string dir, bool excludeHidden)
        {
            var files = Directory.GetFiles(dir).ToList();
            if (excludeHidden)
                files = files.Where(t => !File.GetAttributes(t).HasFlag(FileAttributes.Hidden)).ToList();
            return files;
        }
        static List<string> GetDirectories(string dir, bool excludeHidden)
        {
            var dirs = Directory.GetDirectories(dir).ToList();
            if (excludeHidden)
                dirs = dirs.Where(t => !File.GetAttributes(t).HasFlag(FileAttributes.Hidden)).ToList();
            return dirs;
        }
        static void CopyDirContents(string dir1, string dir2, bool recursive, bool excludeHidden)
        {
            VerifyDir(dir2);
            GetFiles(dir1, excludeHidden).ForEach(t => File.Copy(t, Path.Combine(dir2, Path.GetFileName(t))));
            if (recursive)
            {
                GetDirectories(dir1, excludeHidden).ForEach(innerDir =>
                {
                    var innerDir2 = Path.Combine(dir2, Path.GetFileName(innerDir));
                    Directory.CreateDirectory(innerDir2);
                    CopyDirContents(innerDir, innerDir2, true, excludeHidden);
                });
            }
        }
        private static void DeleteDirContents(string dir)
        {
            Directory.GetFiles(dir, "*", SearchOption.AllDirectories).ForEach(t => File.Delete(t));
            Directory.GetDirectories(dir).ForEach(t => Directory.Delete(t, true));
        }

        private static void VerifyDir(string dir)
        {
            if (dir.Length == 0)
                return;
            if (!Directory.Exists(dir))
                Directory.CreateDirectory(dir);
        }


        static void ZipDirectory(string dir, string zipFile)
        {
            var prevDir = Directory.GetCurrentDirectory();
            Console.WriteLine("Zipping");
            Directory.SetCurrentDirectory(dir);
            var process = Process.Start(@"C:\Program Files\7-Zip\7z.exe", "a " + zipFile);
            process.WaitForExit();
            Console.WriteLine("Finished zipping");
            Directory.SetCurrentDirectory(prevDir);
        }

    }

    public class GoogleCodeUploadRequest
    {
        public string userName { get; set; }
        public string password { get; set; }
        public string projectName { get; set; }
        public string fileName { get; set; }
        public string targetFileName { get; set; }
        public string summary { get; set; }
        public List<string> labels { get; set; }
        public string uploadUrl { get; set; }
    }
}

By viewing downloads associated with this article you agree to the Terms of Service and the article's licence.

If a file you wish to view isn't highlighted, and is a text file (not binary), please let us know and we'll add colourisation support for it.

License

This article, along with any associated source code and files, is licensed under The GNU General Public License (GPLv3)


Written By
Architect SharpKit
Israel Israel
Founder of SharpKit

Comments and Discussions