BannerTask.cs 1.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354
  1. using System;
  2. using System.IO;
  3. using System.Threading;
  4. using Microsoft.Build.Framework;
  5. using Microsoft.Build.Utilities;
  6. public class BannerTask : Task
  7. {
  8. ITaskItem _textFileItem;
  9. FileStream _fileStream;
  10. StreamReader _filein;
  11. StreamWriter _stdout;
  12. bool _taskSucceeded;
  13. int _width;
  14. [Required]
  15. public ITaskItem TextFile { get; set; }
  16. public override bool Execute()
  17. {
  18. try
  19. {
  20. _textFileItem = TextFile;
  21. if (_textFileItem == null || _textFileItem.ItemSpec.Length <= 0)
  22. {
  23. throw new FileNotFoundException("Invalid TaskItem passed to BannerTask::TextFile");
  24. }
  25. _taskSucceeded = true;
  26. using (_fileStream = new FileStream(_textFileItem.ItemSpec, FileMode.Open, FileAccess.Read))
  27. using (_filein = new StreamReader(_fileStream))
  28. using (_stdout = new StreamWriter(Console.OpenStandardOutput()))
  29. {
  30. _stdout.AutoFlush = true;
  31. _width = Console.BufferWidth;
  32. if (_width >= 80)
  33. {
  34. while (_filein.Peek() > 0)
  35. {
  36. _stdout.WriteLine(_filein.ReadLine());
  37. Thread.Sleep(5);
  38. }
  39. }
  40. }
  41. }
  42. catch (Exception e)
  43. {
  44. Log.LogError("SockLynx Build Error: " + e.Message);
  45. _taskSucceeded = false;
  46. }
  47. return _taskSucceeded;
  48. }
  49. }