本文整理汇总了C#中ChocolateyConfiguration类的典型用法代码示例。如果您正苦于以下问题:C# ChocolateyConfiguration类的具体用法?C# ChocolateyConfiguration怎么用?C# ChocolateyConfiguration使用的例子?那么恭喜您, 这里精选的类代码示例或许可以为您提供帮助。
ChocolateyConfiguration类属于命名空间,在下文中一共展示了ChocolateyConfiguration类的20个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的C#代码示例。
示例1: help_message
public virtual void help_message(ChocolateyConfiguration configuration)
{
this.Log().Info(ChocolateyLoggers.Important, "Outdated Command");
this.Log().Info(@"
Returns a list of outdated packages.
NOTE: Available with 0.9.9.6+.
");
"chocolatey".Log().Info(ChocolateyLoggers.Important, "Usage");
"chocolatey".Log().Info(@"
choco outdated [<options/switches>]
");
"chocolatey".Log().Info(ChocolateyLoggers.Important, "Examples");
"chocolatey".Log().Info(@"
choco outdated
choco outdated -s https://somewhere/out/there
choco outdated -s ""'https://somewhere/protected'"" -u user -p pass
If you use `--source=https://somewhere/out/there`, it is
going to look for outdated packages only based on that source.
");
"chocolatey".Log().Info(ChocolateyLoggers.Important, "See It In Action");
"chocolatey".Log().Info(@"
choco outdated: https://raw.githubusercontent.com/wiki/chocolatey/choco/images/gifs/choco_outdated.gif
");
"chocolatey".Log().Info(ChocolateyLoggers.Important, "Options and Switches");
}
开发者ID:RichiCoder1,项目名称:choco,代码行数:33,代码来源:ChocolateyOutdatedCommand.cs
示例2: GetPackages
public static IEnumerable<IPackage> GetPackages(ChocolateyConfiguration configuration, ILogger nugetLogger)
{
var packageRepository = NugetCommon.GetRemoteRepository(configuration, nugetLogger);
IQueryable<IPackage> results = packageRepository.Search(configuration.Input, configuration.Prerelease);
if (configuration.AllVersions)
{
return results.Where(PackageExtensions.IsListed).OrderBy(p => p.Id);
}
if (configuration.Prerelease && packageRepository.SupportsPrereleasePackages)
{
results = results.Where(p => p.IsAbsoluteLatestVersion);
}
else
{
results = results.Where(p => p.IsLatestVersion);
}
if (configuration.ListCommand.Page.HasValue)
{
results = results.Skip(configuration.ListCommand.PageSize * configuration.ListCommand.Page.Value).Take(configuration.ListCommand.PageSize);
}
return results.OrderBy(p => p.Id)
.AsEnumerable()
.Where(PackageExtensions.IsListed)
.Where(p => configuration.Prerelease || p.IsReleaseVersion())
.distinct_last(PackageEqualityComparer.Id, PackageComparer.Version);
}
开发者ID:rismoney,项目名称:choco,代码行数:30,代码来源:NugetList.cs
示例3: handle_additional_argument_parsing
public void handle_additional_argument_parsing(IList<string> unparsedArguments, ChocolateyConfiguration configuration)
{
configuration.Input = string.Join(" ", unparsedArguments);
if (string.IsNullOrWhiteSpace(configuration.NewCommand.Name))
{
configuration.NewCommand.Name = unparsedArguments.DefaultIfEmpty(string.Empty).FirstOrDefault();
var property = unparsedArguments.DefaultIfEmpty(string.Empty).FirstOrDefault().Split(new[] {'='}, StringSplitOptions.RemoveEmptyEntries);
if (property.Count() == 1)
{
configuration.NewCommand.TemplateProperties.Add(TemplateValues.NamePropertyName, configuration.NewCommand.Name);
}
}
foreach (var unparsedArgument in unparsedArguments.or_empty_list_if_null())
{
var property = unparsedArgument.Split(new[] { '=' }, 2, StringSplitOptions.RemoveEmptyEntries);
if (property.Count() == 2)
{
var propName = property[0].trim_safe();
var propValue = property[1].trim_safe().remove_surrounding_quotes();
if (configuration.NewCommand.TemplateProperties.ContainsKey(propName))
{
this.Log().Warn(() => "A value for '{0}' has already been added with the value '{1}'. Ignoring {0}='{2}'.".format_with(propName, configuration.NewCommand.TemplateProperties[propName], propValue));
}
else
{
configuration.NewCommand.TemplateProperties.Add(propName, propValue);
}
}
}
}
开发者ID:GaryPlattenburg,项目名称:choco,代码行数:33,代码来源:ChocolateyNewCommand.cs
示例4: feature_enable
public void feature_enable(ChocolateyConfiguration configuration)
{
var feature = configFileSettings.Features.FirstOrDefault(p => p.Name.is_equal_to(configuration.FeatureCommand.Name));
if (feature == null)
{
throw new ApplicationException("Feature '{0}' not found".format_with(configuration.FeatureCommand.Name));
}
if (!feature.Enabled || !feature.SetExplicitly)
{
if (feature.Enabled && !feature.SetExplicitly)
{
this.Log().Info(() => "{0} was enabled by default. Explicitly setting value.".format_with(feature.Name));
}
feature.Enabled = true;
feature.SetExplicitly = true;
_xmlService.serialize(configFileSettings, ApplicationParameters.GlobalConfigFileLocation);
this.Log().Warn(() => "Enabled {0}".format_with(feature.Name));
}
else
{
this.Log().Warn(NO_CHANGE_MESSAGE);
}
}
开发者ID:Mrivera543,项目名称:choco,代码行数:25,代码来源:ChocolateyConfigSettingsService.cs
示例5: handle_additional_argument_parsing
public void handle_additional_argument_parsing(IList<string> unparsedArguments, ChocolateyConfiguration configuration)
{
configuration.Input = string.Join(" ", unparsedArguments);
var command = ConfigCommandType.unknown;
string unparsedCommand = unparsedArguments.DefaultIfEmpty(string.Empty).FirstOrDefault().to_string().Replace("-",string.Empty);
Enum.TryParse(unparsedCommand, true, out command);
if (command == ConfigCommandType.unknown)
{
if (!string.IsNullOrWhiteSpace(unparsedCommand)) this.Log().Warn("Unknown command {0}. Setting to list.".format_with(unparsedCommand));
command = ConfigCommandType.list;
}
configuration.ConfigCommand.Command = command;
if ((configuration.ConfigCommand.Command == ConfigCommandType.list
|| !string.IsNullOrWhiteSpace(configuration.ConfigCommand.Name)
)
&& unparsedArguments.Count > 1) throw new ApplicationException("A single features command must be listed. Please see the help menu for those commands");
if (string.IsNullOrWhiteSpace(configuration.ConfigCommand.Name) && unparsedArguments.Count >=2)
{
configuration.ConfigCommand.Name = unparsedArguments[1];
}
if (string.IsNullOrWhiteSpace(configuration.ConfigCommand.ConfigValue) && unparsedArguments.Count >= 3)
{
configuration.ConfigCommand.ConfigValue = unparsedArguments[2];
}
}
开发者ID:pkdevboxy,项目名称:choco,代码行数:28,代码来源:ChocolateyConfigCommand.cs
示例6: handle_validation
public void handle_validation(ChocolateyConfiguration configuration)
{
if (!string.IsNullOrWhiteSpace(configuration.ApiKeyCommand.Key) && string.IsNullOrWhiteSpace(configuration.Sources))
{
throw new ApplicationException("You must specify both 'source' and 'key' to set an api key.");
}
}
开发者ID:secretGeek,项目名称:choco,代码行数:7,代码来源:ChocolateyApiKeyCommand.cs
示例7: set_up_configuration
/// <summary>
/// Sets up the configuration based on arguments passed in, config file, and environment
/// </summary>
/// <param name="args">The arguments.</param>
/// <param name="config">The configuration.</param>
/// <param name="fileSystem">The file system.</param>
/// <param name="xmlService">The XML service.</param>
/// <param name="notifyWarnLoggingAction">Notify warn logging action</param>
public static void set_up_configuration(IList<string> args, ChocolateyConfiguration config, IFileSystem fileSystem, IXmlService xmlService, Action<string> notifyWarnLoggingAction)
{
set_file_configuration(config, fileSystem, xmlService, notifyWarnLoggingAction);
ConfigurationOptions.reset_options();
set_global_options(args, config);
set_environment_options(config);
}
开发者ID:shrknt35,项目名称:sonarlint-vs,代码行数:15,代码来源:ConfigurationBuilder.cs
示例8: help_message
public virtual void help_message(ChocolateyConfiguration configuration)
{
this.Log().Info(ChocolateyLoggers.Important, "Pack Command");
this.Log().Info(@"
Chocolatey will attempt to package a nuspec into a compiled nupkg. Some
may prefer to use `cpack` as a shortcut for `choco pack`.
NOTE: 100% compatible with older chocolatey client (0.9.8.32 and below)
with options and switches. In most cases you can still pass options
and switches with one dash (`-`). For more details, see
the command reference (`choco -?`).
NOTE: `cpack` has been deprecated as it has a name collision with CMake. Please
use `choco pack` instead. The shortcut will be removed in v1.
");
"chocolatey".Log().Info(ChocolateyLoggers.Important, "Usage");
"chocolatey".Log().Info(@"
choco pack [<path to nuspec>] [<options/switches>]
cpack [<path to nuspec>] [<options/switches>] (DEPRECATED)
");
"chocolatey".Log().Info(ChocolateyLoggers.Important, "Examples");
"chocolatey".Log().Info(@"
choco pack
choco pack --version 1.2.3
choco pack path/to/nuspec
choco pack --outputdirectory build
");
"chocolatey".Log().Info(ChocolateyLoggers.Important, "Options and Switches");
}
开发者ID:RichiCoder1,项目名称:choco,代码行数:34,代码来源:ChocolateyPackCommand.cs
示例9: configure_argument_parser
public void configure_argument_parser(OptionSet optionSet, ChocolateyConfiguration configuration)
{
optionSet
.Add("s=|source=",
"Source - Source location for install. Can include special 'webpi'. Defaults to sources.",
option => configuration.Sources = option.remove_surrounding_quotes())
.Add("l|lo|localonly|local-only",
"LocalOnly - Only search against local machine items.",
option => configuration.ListCommand.LocalOnly = option != null)
.Add("pre|prerelease",
"Prerelease - Include Prereleases? Defaults to false.",
option => configuration.Prerelease = option != null)
.Add("i|includeprograms|include-programs",
"IncludePrograms - Used in conjunction with LocalOnly, filters out apps chocolatey has listed as packages and includes those in the list. Defaults to false.",
option => configuration.ListCommand.IncludeRegistryPrograms = option != null)
.Add("a|all|allversions|all-versions",
"AllVersions - include results from all versions.",
option => configuration.AllVersions = option != null)
.Add("u=|user=",
"User - used with authenticated feeds. Defaults to empty.",
option => configuration.SourceCommand.Username = option.remove_surrounding_quotes())
.Add("p=|password=",
"Password - the user's password to the source. Defaults to empty.",
option => configuration.SourceCommand.Password = option.remove_surrounding_quotes())
;
//todo exact name
}
开发者ID:shrknt35,项目名称:sonarlint-vs,代码行数:27,代码来源:ChocolateyListCommand.cs
示例10: handle_validation
public void handle_validation(ChocolateyConfiguration configuration)
{
if (configuration.FeatureCommand.Command != FeatureCommandType.list && string.IsNullOrWhiteSpace(configuration.FeatureCommand.Name))
{
throw new ApplicationException("When specifying the subcommand '{0}', you must also specify --name.".format_with(configuration.FeatureCommand.Command.to_string()));
}
}
开发者ID:secretGeek,项目名称:choco,代码行数:7,代码来源:ChocolateyFeatureCommand.cs
示例11: configure_argument_parser
public void configure_argument_parser(OptionSet optionSet, ChocolateyConfiguration configuration)
{
optionSet
.Add("s=|source=",
"Source - The source to find the package(s) to install. Special sources include: ruby, webpi, cygwin, windowsfeatures, and python. Defaults to default feeds.",
option => configuration.Sources = option)
.Add("version=",
"Version - A specific version to uninstall. Defaults to unspecified.",
option => configuration.Version = option.remove_surrounding_quotes())
.Add("a|allversions|all-versions",
"AllVersions - Uninstall all versions? Defaults to false.",
option => configuration.AllVersions = option != null)
.Add("ua=|uninstallargs=|uninstallarguments=|uninstall-arguments=",
"UninstallArguments - Uninstall Arguments to pass to the native installer in the package. Defaults to unspecified.",
option => configuration.InstallArguments = option.remove_surrounding_quotes())
.Add("o|override|overrideargs|overridearguments|override-arguments",
"OverrideArguments - Should uninstall arguments be used exclusively without appending to current package passed arguments? Defaults to false.",
option => configuration.OverrideArguments = option != null)
.Add("notsilent|not-silent",
"NotSilent - Do not uninstall this silently. Defaults to false.",
option => configuration.NotSilent = option != null)
.Add("params=|parameters=|pkgparameters=|packageparameters=|package-parameters=",
"PackageParameters - Parameters to pass to the package. Defaults to unspecified.",
option => configuration.PackageParameters = option.remove_surrounding_quotes())
.Add("x|forcedependencies|force-dependencies|removedependencies|remove-dependencies",
"RemoveDependencies - Uninstall dependencies when uninstalling package(s). Defaults to false.",
option => configuration.ForceDependencies = option != null)
.Add("n|skippowershell|skip-powershell",
"Skip Powershell - Do not run chocolateyUninstall.ps1. Defaults to false.",
option => configuration.SkipPackageInstallProvider = option != null)
;
}
开发者ID:secretGeek,项目名称:choco,代码行数:32,代码来源:ChocolateyUninstallCommand.cs
示例12: handle_validation
public void handle_validation(ChocolateyConfiguration configuration)
{
if (string.IsNullOrWhiteSpace(configuration.PackageNames))
{
throw new ApplicationException("Package name is required. Please pass at least one package name to uninstall.");
}
}
开发者ID:secretGeek,项目名称:choco,代码行数:7,代码来源:ChocolateyUninstallCommand.cs
示例13: PoshHost
public PoshHost(ChocolateyConfiguration configuration)
{
ExitCode = -1;
_configuration = configuration;
_psUI = new PoshHostUserInterface(configuration);
_version = get_current_version();
}
开发者ID:RichiCoder1,项目名称:choco,代码行数:7,代码来源:PoshHost.cs
示例14: configure_argument_parser
public void configure_argument_parser(OptionSet optionSet, ChocolateyConfiguration configuration)
{
optionSet
.Add("a|auto|automaticpackage",
"AutomaticPackage - Generate automatic package instead of normal. Defaults to false",
option => configuration.NewCommand.AutomaticPackage = option != null)
.Add("t=|template=|template-name=",
"TemplateName - Use a named template in {0}\\templates\\templatename instead of built-in template.".format_with(ApplicationParameters.InstallLocation),
option => configuration.NewCommand.TemplateName = option)
.Add("name=",
"Name [Required]- the name of the package. Can be passed as first parameter without \"--name=\".",
option =>
{
configuration.NewCommand.Name = option.remove_surrounding_quotes();
configuration.NewCommand.TemplateProperties.Add(TemplateValues.NamePropertyName, option.remove_surrounding_quotes());
})
.Add("version=",
"Version - the version of the package. Can also be passed as the property PackageVersion=somevalue",
option => configuration.NewCommand.TemplateProperties.Add(TemplateValues.VersionPropertyName, option.remove_surrounding_quotes()))
.Add("maintainer=",
"Maintainer - the name of the maintainer. Can also be passed as the property MaintainerName=somevalue",
option => configuration.NewCommand.TemplateProperties.Add(TemplateValues.MaintainerPropertyName, option.remove_surrounding_quotes()))
;
//todo: more built-in templates
}
开发者ID:GaryPlattenburg,项目名称:choco,代码行数:25,代码来源:ChocolateyNewCommand.cs
示例15: help_message
public virtual void help_message(ChocolateyConfiguration configuration)
{
this.Log().Info(ChocolateyLoggers.Important, "Pack Command");
this.Log().Info(@"
Chocolatey will attempt to package a nuspec into a compiled nupkg. Some
may prefer to use `cpack` as a shortcut for `choco pack`.
NOTE: `cpack` has been deprecated as it has a name collision with CMake. Please
use `choco pack` instead. The shortcut will be removed in v1.
");
"chocolatey".Log().Info(ChocolateyLoggers.Important, "Usage");
"chocolatey".Log().Info(@"
choco pack [<path to nuspec>] [<options/switches>]
cpack [<path to nuspec>] [<options/switches>] (DEPRECATED)
");
"chocolatey".Log().Info(ChocolateyLoggers.Important, "Examples");
"chocolatey".Log().Info(@"
choco pack
choco pack --version 1.2.3
choco pack path/to/nuspec
");
"chocolatey".Log().Info(ChocolateyLoggers.Important, "Options and Switches");
}
开发者ID:dekalinowski,项目名称:choco,代码行数:28,代码来源:ChocolateyPackCommand.cs
示例16: configure_argument_parser
public virtual void configure_argument_parser(OptionSet optionSet, ChocolateyConfiguration configuration)
{
optionSet
.Add("a|auto|automaticpackage",
"AutomaticPackage - Generate automatic package instead of normal. Defaults to false",
option => configuration.NewCommand.AutomaticPackage = option != null)
.Add("t=|template=|template-name=",
"TemplateName - Use a named template in {0}\\templates\\templatename instead of built-in template. Available in 0.9.9.9+. Manage templates as packages in 0.9.10+.".format_with(ApplicationParameters.InstallLocation),
option => configuration.NewCommand.TemplateName = option)
.Add("name=",
"Name [Required]- the name of the package. Can be passed as first parameter without \"--name=\".",
option =>
{
configuration.NewCommand.Name = option.remove_surrounding_quotes();
configuration.NewCommand.TemplateProperties.Add(TemplateValues.NamePropertyName, option.remove_surrounding_quotes());
})
.Add("version=",
"Version - the version of the package. Can also be passed as the property PackageVersion=somevalue",
option => configuration.NewCommand.TemplateProperties.Add(TemplateValues.VersionPropertyName, option.remove_surrounding_quotes()))
.Add("maintainer=",
"Maintainer - the name of the maintainer. Can also be passed as the property MaintainerName=somevalue",
option => configuration.NewCommand.TemplateProperties.Add(TemplateValues.MaintainerPropertyName, option.remove_surrounding_quotes()))
.Add("outputdirectory=",
"OutputDirectory - Specifies the directory for the created Chocolatey package file. If not specified, uses the current directory. Available in 0.9.10+.",
option => configuration.OutputDirectory = option)
.Add("built-in|built-in-template|originaltemplate|original-template|use-original-template|use-built-in-template",
"BuiltInTemplate - Use the original built-in template instead of any override. Available in 0.9.10+.",
option => configuration.NewCommand.UseOriginalTemplate = option != null)
;
//todo: more built-in templates
}
开发者ID:RichiCoder1,项目名称:choco,代码行数:31,代码来源:ChocolateyNewCommand.cs
示例17: execute_package_search
private static IQueryable<IPackage> execute_package_search(ChocolateyConfiguration configuration, ILogger nugetLogger)
{
var packageRepository = NugetCommon.GetRemoteRepository(configuration, nugetLogger);
// Whether or not the package is remote determines two things:
// 1. Does the repository have a notion of "listed"?
// 2. Does it support prerelease in a straight-forward way?
// Choco previously dealt with this by taking the path of least resistance and manually filtering out and sort unwanted packages
// This result in blocking operations that didn't let service based repositories, like OData, take care of heavy lifting on the server.
bool isRemote;
var aggregateRepo = packageRepository as AggregateRepository;
if (aggregateRepo != null)
{
isRemote = aggregateRepo.Repositories.All(repo => repo is IServiceBasedRepository);
}
else
{
isRemote = packageRepository is IServiceBasedRepository;
}
IQueryable<IPackage> results = packageRepository.Search(configuration.Input, configuration.Prerelease);
if (configuration.AllVersions)
{
if (isRemote)
{
return results.OrderBy(p => p.Id);
}
else
{
return results.Where(PackageExtensions.IsListed).OrderBy(p => p.Id).AsQueryable();
}
}
if (configuration.Prerelease && packageRepository.SupportsPrereleasePackages)
{
results = results.Where(p => p.IsAbsoluteLatestVersion);
}
else
{
results = results.Where(p => p.IsLatestVersion);
}
if (!isRemote)
{
results =
results
.Where(PackageExtensions.IsListed)
.Where(p => configuration.Prerelease || p.IsReleaseVersion())
.distinct_last(PackageEqualityComparer.Id, PackageComparer.Version)
.AsQueryable();
}
if (configuration.ListCommand.Page.HasValue)
{
results = results.Skip(configuration.ListCommand.PageSize * configuration.ListCommand.Page.Value).Take(configuration.ListCommand.PageSize);
}
return results.OrderBy(p => p.Id);
}
开发者ID:secretGeek,项目名称:choco,代码行数:60,代码来源:NugetList.cs
示例18: configure_argument_parser
public override void configure_argument_parser(OptionSet optionSet, ChocolateyConfiguration configuration)
{
optionSet
.Add(
"s=|source=",
"Source - Source location for install. Can include special 'webpi'. Defaults to sources.",
option => configuration.Sources = option.remove_surrounding_quotes())
.Add(
"l|lo|localonly|local-only",
"LocalOnly - Only search against local machine items.",
option => configuration.ListCommand.LocalOnly = option != null)
.Add(
"pre|prerelease",
"Prerelease - Include Prereleases? Defaults to false.",
option => configuration.Prerelease = option != null)
.Add(
"u=|user=",
"User - used with authenticated feeds. Defaults to empty.",
option => configuration.SourceCommand.Username = option.remove_surrounding_quotes())
.Add(
"p=|password=",
"Password - the user's password to the source. Defaults to empty.",
option => configuration.SourceCommand.Password = option.remove_surrounding_quotes())
;
}
开发者ID:dekalinowski,项目名称:choco,代码行数:25,代码来源:ChocolateyInfoCommand.cs
示例19: add_or_remove_licensed_source
private static void add_or_remove_licensed_source(ChocolateyLicense license, Container container)
{
var addOrUpdate = license.IsValid;
var config = new ChocolateyConfiguration {
RegularOutput = false,
QuietOutput = true,
};
var sourceService = container.GetInstance<IChocolateyConfigSettingsService>();
var sources = sourceService.source_list(config);
config.SourceCommand.Name = ApplicationParameters.ChocolateyLicensedFeedSourceName;
config.Sources = ApplicationParameters.ChocolateyLicensedFeedSource;
config.SourceCommand.Username = "customer";
config.SourceCommand.Password = license.Id;
config.SourceCommand.Priority = 10;
if (addOrUpdate && !sources.Any(s =>
s.Id.is_equal_to(ApplicationParameters.ChocolateyLicensedFeedSourceName)
&& s.Authenticated)
)
{
sourceService.source_add(config);
}
if (!addOrUpdate)
{
sourceService.source_remove(config);
}
}
开发者ID:f911,项目名称:choco,代码行数:30,代码来源:Program.cs
示例20: configure_argument_parser
public void configure_argument_parser(OptionSet optionSet, ChocolateyConfiguration configuration)
{
configuration.Sources = null;
configuration.PushCommand.TimeoutInSeconds = 300;
optionSet
.Add("s=|source=",
"Source - The source we are pushing the package to. Use {0} to push to community feed.".format_with(ApplicationParameters.ChocolateyCommunityFeedPushSource),
option => configuration.Sources = option.remove_surrounding_quotes())
.Add("k=|key=|apikey=|api-key=",
"ApiKey - The api key for the source. If not specified (and not local file source), does a lookup. If not specified and one is not found for an https source, push will fail.",
option => configuration.PushCommand.Key = option.remove_surrounding_quotes())
.Add("t=|timeout=",
"Timeout (in seconds) - The time to allow a package push to occur before timing out. Defaults to 300 seconds (5 minutes).",
option =>
{
int timeout = 0;
int.TryParse(option, out timeout);
if (timeout > 0)
{
configuration.PushCommand.TimeoutInSeconds = timeout;
}
})
//.Add("b|disablebuffering|disable-buffering",
// "DisableBuffering - Disable buffering when pushing to an HTTP(S) server to decrease memory usage. Note that when this option is enabled, integrated windows authentication might not work.",
// option => configuration.PushCommand.DisableBuffering = option)
;
//todo: push command - allow disable buffering?
}
开发者ID:shrknt35,项目名称:sonarlint-vs,代码行数:29,代码来源:ChocolateyPushCommand.cs
注:本文中的ChocolateyConfiguration类示例整理自Github/MSDocs等源码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。 |
请发表评论