mirror of
https://github.com/actions/runner.git
synced 2026-01-02 16:07:42 +08:00
60 lines
1.7 KiB
C#
60 lines
1.7 KiB
C#
using System;
|
|
using System.ComponentModel;
|
|
using System.Text;
|
|
|
|
namespace GitHub.DistributedTask.Pipelines.Validation
|
|
{
|
|
[EditorBrowsable(EditorBrowsableState.Never)]
|
|
public static class NameValidation
|
|
{
|
|
public static Boolean IsValid(
|
|
String name,
|
|
Boolean allowHyphens = false)
|
|
{
|
|
var result = true;
|
|
for (Int32 i = 0; i < name.Length; i++)
|
|
{
|
|
if ((name[i] >= 'a' && name[i] <= 'z') ||
|
|
(name[i] >= 'A' && name[i] <= 'Z') ||
|
|
(name[i] >= '0' && name[i] <= '9' && i > 0) ||
|
|
(name[i] == '_') ||
|
|
(allowHyphens && name[i] == '-' && i > 0))
|
|
{
|
|
continue;
|
|
}
|
|
else
|
|
{
|
|
result = false;
|
|
break;
|
|
}
|
|
}
|
|
|
|
return result;
|
|
}
|
|
|
|
public static String Sanitize(
|
|
String name,
|
|
Boolean allowHyphens = false)
|
|
{
|
|
if (name == null)
|
|
{
|
|
return String.Empty;
|
|
}
|
|
|
|
var sb = new StringBuilder();
|
|
for (Int32 i = 0; i < name.Length; i++)
|
|
{
|
|
if ((name[i] >= 'a' && name[i] <= 'z') ||
|
|
(name[i] >= 'A' && name[i] <= 'Z') ||
|
|
(name[i] >= '0' && name[i] <= '9' && sb.Length > 0) ||
|
|
(name[i] == '_') ||
|
|
(allowHyphens && name[i] == '-' && sb.Length > 0))
|
|
{
|
|
sb.Append(name[i]);
|
|
}
|
|
}
|
|
return sb.ToString();
|
|
}
|
|
}
|
|
}
|