Skip to content

Commit

Permalink
・_checksum.sha に隠し属性を付与
Browse files Browse the repository at this point in the history
・buildsumのチェックサム生成対象から隠し属性ファイルを除外(--include-hiddenオプションで追加可)
  • Loading branch information
calc33 committed May 25, 2022
1 parent 951789e commit fda782c
Show file tree
Hide file tree
Showing 4 changed files with 47 additions and 33 deletions.
4 changes: 3 additions & 1 deletion .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -4,4 +4,6 @@

/.vs
bin
obj
obj
/_checksum.sha
launchSettings.json
7 changes: 6 additions & 1 deletion BuildSum/MainModule.cs
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,7 @@ public class MainModule
public string TargetDir;
public string CompressDir;
public List<string> IgnoreFiles = new List<string>();
public bool IgnoreHidden = true;

private void Log(LogStatus status, LogCategory category, string filename, string message)
{
Expand Down Expand Up @@ -90,6 +91,10 @@ public MainModule(string[] args)
i++;
ignorePath = args[i];
break;
case "--include-hidden":
case "-h":
IgnoreHidden = false;
break;
case "--help":
case "/?":
ShowUsage();
Expand Down Expand Up @@ -152,7 +157,7 @@ public void Run()
{
Error(string.Format("{0}: ディレクトリがありません", TargetDir));
}
FileList list = FileList.CreateByDirectory(TargetDir, IgnoreFiles, CompressDir);
FileList list = FileList.CreateByDirectory(TargetDir, IgnoreFiles, IgnoreHidden, CompressDir);
list.Log += FileList_Log;
list.SaveChecksum();
CompressFiles(list);
Expand Down
4 changes: 4 additions & 0 deletions BuildSum/Resources/Usage.txt
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,10 @@ Options:
�e�v�f�͉��s�ŋ�؂�B���C���h�J�[�h�B
--ignore�Ɣr���I�Ɏg�p����B

--include-hidden
-h
�ꗗ�ɉB���t�@�C�����܂߂�B

--help
/?
���̃w���v��\��
65 changes: 34 additions & 31 deletions HDistCore/FileList.cs
Original file line number Diff line number Diff line change
Expand Up @@ -127,7 +127,8 @@ public FileEntry FindEntry(string targetDirectory, string filename)

public void SaveChecksum()
{
SaveToFile(Path.Combine(BaseDirectory, CHECKSUM_FILE));
string path = Path.Combine(BaseDirectory, CHECKSUM_FILE);
SaveToFile(path);
}

public void SaveToFile(string filename)
Expand All @@ -139,6 +140,8 @@ public void SaveToFile(string filename)
writer.WriteLine(entry.GetChecksum(BaseDirectory) + "\t" + entry.FileName);
}
}
FileAttributes attr = File.GetAttributes(filename);
File.SetAttributes(filename, attr | FileAttributes.Hidden);
}
public void SaveToStream(Stream stream)
{
Expand Down Expand Up @@ -337,43 +340,43 @@ internal FileList(string baseDir, string filename)
}
}

private void EnumFiles(string directory, List<Regex> ignoreNames)
private bool IsIgnored(string fullPath, string relPath, List<Regex> ignoreNames, bool ignoreHidden)
{
foreach (string s in Directory.EnumerateFiles(directory, "*", SearchOption.TopDirectoryOnly))
if (ignoreHidden && (File.GetAttributes(fullPath) & FileAttributes.Hidden) != 0)
{
string path1 = Path.GetRelativePath(BaseDirectory, s);
string path2 = Path.GetFileName(s);
bool ignore = false;
foreach (Regex regex in ignoreNames)
return true;
}
string path1 = Treat(relPath);
string path2 = Path.GetFileName(path1);
foreach (Regex regex in ignoreNames)
{
if (regex.Match(path1).Success || regex.Match(path2).Success)
{
if (regex.Match(Treat(path1)).Success || regex.Match(Treat(path2)).Success)
{
ignore = true;
break;
}
return true;
}
if (!ignore)
}
return false;
}

private void EnumFiles(string directory, List<Regex> ignoreNames, bool ignoreHidden)
{
foreach (string s in Directory.EnumerateFiles(directory, "*", SearchOption.TopDirectoryOnly))
{
string relPath = Path.GetRelativePath(BaseDirectory, s);
if (IsIgnored(s, relPath, ignoreNames, ignoreHidden))
{
_list.Add(new FileEntry(this, path1));
continue;
}
_list.Add(new FileEntry(this, relPath));
}
foreach (string s in Directory.EnumerateDirectories(directory, "*", SearchOption.TopDirectoryOnly))
{
string path1 = Path.GetRelativePath(BaseDirectory, s);
string path2 = Path.GetFileName(s);
bool ignore = false;
foreach (Regex regex in ignoreNames)
{
if (regex.Match(Treat(path1)).Success || regex.Match(Treat(path2)).Success)
{
ignore = true;
break;
}
}
if (!ignore)
string relPath = Path.GetRelativePath(BaseDirectory, s);
if (IsIgnored(s, relPath, ignoreNames, ignoreHidden))
{
EnumFiles(s, ignoreNames);
continue;
}
EnumFiles(s, ignoreNames, ignoreHidden);
}
InvalidateNameToEntry();
}
Expand Down Expand Up @@ -411,7 +414,7 @@ private static Regex ToRegex(string wildcard)
return new Regex(buf.ToString());
}

internal FileList(string baseDir, IList<string> ignoreNames)
internal FileList(string baseDir, IList<string> ignoreNames, bool ignoreHidden)
{
FileName = null;
BaseDirectory = baseDir;
Expand All @@ -421,14 +424,14 @@ internal FileList(string baseDir, IList<string> ignoreNames)
ignores.Add(ToRegex(s));
}
ignores.Add(ToRegex(CHECKSUM_FILE));
EnumFiles(baseDir, ignores);
EnumFiles(baseDir, ignores, ignoreHidden);
_list.Sort();
Checksum = new byte[0];
}

public static FileList CreateByDirectory(string directory, IList<string> ignoreNames, string compressDirectory)
public static FileList CreateByDirectory(string directory, IList<string> ignoreNames, bool ignodeHidden, string compressDirectory)
{
return new FileList(directory, ignoreNames)
return new FileList(directory, ignoreNames, ignodeHidden)
{
CompressedDirectory = compressDirectory,
DestinationDirectory = directory,
Expand Down

0 comments on commit fda782c

Please sign in to comment.