本文整理汇总了TypeScript中vsts-task-lib/task.find函数的典型用法代码示例。如果您正苦于以下问题:TypeScript find函数的具体用法?TypeScript find怎么用?TypeScript find使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。
在下文中一共展示了find函数的9个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的TypeScript代码示例。
示例1: findDockerFile
export function findDockerFile(dockerfilepath: string): string {
if (dockerfilepath.indexOf('*') >= 0 || dockerfilepath.indexOf('?') >= 0) {
tl.debug(tl.loc('ContainerPatternFound'));
var buildFolder = tl.cwd();
var allFiles = tl.find(buildFolder);
var matchingResultsFiles = tl.match(allFiles, dockerfilepath, buildFolder, { matchBase: true });
if (!matchingResultsFiles || matchingResultsFiles.length == 0) {
throw new Error(tl.loc('ContainerDockerFileNotFound', dockerfilepath));
}
return matchingResultsFiles[0];
}
else {
tl.debug(tl.loc('ContainerPatternNotFound'));
return dockerfilepath;
}
}
示例2: resolvePath
export function resolvePath(path : string): string {
if (path.indexOf('*') >= 0 || path.indexOf('?') >= 0) {
tl.debug(tl.loc('PatternFoundInPath', path));
var rootFolder = tl.getVariable('System.DefaultWorkingDirectory');
var allPaths = tl.find(rootFolder);
var matchingResultsFiles = tl.match(allPaths, path, rootFolder, { matchBase: true });
if (!matchingResultsFiles || matchingResultsFiles.length == 0) {
throw new Error(tl.loc('CantResolvePatternInPath', path));
}
return matchingResultsFiles[0];
}
else
{
tl.debug(tl.loc('PatternNotFoundInFilePath', path));
return path;
}
}
示例3: findDockerFile
export function findDockerFile(dockerfilepath : string) : string {
if (dockerfilepath.indexOf('*') >= 0 || dockerfilepath.indexOf('?') >= 0) {
tl.debug(tl.loc('ContainerPatternFound'));
let workingDirectory = tl.getVariable('System.DefaultWorkingDirectory');
let allFiles = tl.find(workingDirectory);
let matchingResultsFiles = tl.match(allFiles, dockerfilepath, workingDirectory, { matchBase: true });
if (!matchingResultsFiles || matchingResultsFiles.length == 0) {
throw new Error(tl.loc('ContainerDockerFileNotFound', dockerfilepath));
}
return matchingResultsFiles[0];
}
else
{
tl.debug(tl.loc('ContainerPatternNotFound'));
return dockerfilepath;
}
}
示例4: resolveWildcardPath
export function resolveWildcardPath(pattern: string, allowEmptyWildcardMatch?: boolean): string[] {
let isWindows = os.platform() === "win32";
// Resolve files for the specified value or pattern
let filesList: string[];
// empty patterns match nothing (otherwise they will effectively match the current directory)
if (!pattern) {
filesList = [];
}
else if (pattern.indexOf("*") === -1 && pattern.indexOf("?") === -1) {
// No pattern found, check literal path to a single file
tl.checkPath(pattern, "files");
// Use the specified single file
filesList = [pattern];
} else {
let firstWildcardIndex = function (str) {
let idx = str.indexOf("*");
let idxOfWildcard = str.indexOf("?");
if (idxOfWildcard > -1) {
return (idx > -1) ?
Math.min(idx, idxOfWildcard) : idxOfWildcard;
}
return idx;
};
// Find app files matching the specified pattern
tl.debug("Matching glob pattern: " + pattern);
// First find the most complete path without any matching patterns
let idx = firstWildcardIndex(pattern);
tl.debug("Index of first wildcard: " + idx);
let findPathRoot = path.dirname(pattern.slice(0, idx));
tl.debug("find root dir: " + findPathRoot);
// Now we get a list of all files under this root
let allFiles = tl.find(findPathRoot);
// Now matching the pattern against all files
// Turn off a bunch of minimatch features to replicate the behavior of Find-Files in the old PowerShell tasks
let patternFilter = tl.filter(
pattern, {
matchBase: true,
nobrace: true,
noext: true,
nocomment: true,
nonegate: true,
nocase: isWindows,
dot: isWindows,
});
filesList = allFiles.filter(patternFilter);
// Avoid matching anything other than files
filesList = filesList.filter(x => tl.stats(x).isFile());
// Fail if no matching .sln files were found
if (!allowEmptyWildcardMatch && (!filesList || filesList.length === 0)) {
throw new Error("No matching files were found with search pattern: " + pattern);
}
}
if (!isWindows) {
return filesList;
}
else {
return filesList.map(file => file.split("/").join("\\"));
}
}
示例5: findHelm
function findHelm(rootFolder: string) {
var helmPath = path.join(rootFolder, "*", helmToolName + getExecutableExtention());
var allPaths = tl.find(rootFolder);
var matchingResultsFiles = tl.match(allPaths, helmPath, rootFolder);
return matchingResultsFiles[0];
}
示例6: resolveWildcardPath
export function resolveWildcardPath(
pattern: string,
allowEmptyWildcardMatch?: boolean,
includeFolders?: boolean): string[] {
const isWindows = tl.osType() === "Windows_NT";
// Resolve files for the specified value or pattern
let filesList: string[];
// empty patterns match nothing (otherwise they will effectively match the current directory)
if (!pattern) {
filesList = [];
}
else if (pattern.indexOf("*") === -1 && pattern.indexOf("?") === -1) {
// No pattern found, check literal path to a single file
tl.checkPath(pattern, "files");
// Use the specified single file
filesList = [pattern];
} else {
const firstWildcardIndex = function (str) {
const idx = str.indexOf("*");
const idxOfWildcard = str.indexOf("?");
if (idxOfWildcard > -1) {
return (idx > -1) ?
Math.min(idx, idxOfWildcard) : idxOfWildcard;
}
return idx;
};
// Find app files matching the specified pattern
tl.debug("Matching glob pattern: " + pattern);
// First find the most complete path without any matching patterns
const idx = firstWildcardIndex(pattern);
tl.debug("Index of first wildcard: " + idx);
// include the wildcard character because:
// dirname(c:\foo\bar\) => c:\foo (which will make find() return a bunch of stuff we know we'll discard)
// dirname(c:\foo\bar\*) => c:\foo\bar
const findPathRoot = path.dirname(pattern.slice(0, idx + 1));
tl.debug("find root dir: " + findPathRoot);
// Now we get a list of all files under this root
const allFiles = tl.find(findPathRoot);
// Now matching the pattern against all files
// Turn off a bunch of minimatch features to replicate the behavior of Find-Files in the old PowerShell tasks
const patternFilter = tl.filter(
pattern, {
matchBase: true,
nobrace: true,
noext: true,
nocomment: true,
nonegate: true,
nocase: isWindows,
dot: isWindows,
});
filesList = allFiles.filter(patternFilter);
// Avoid matching anything other than files
if (!includeFolders) {
filesList = filesList.filter((x) => tl.stats(x).isFile());
} else {
filesList = filesList.filter((x) => tl.stats(x).isFile() || tl.stats(x).isDirectory());
}
// Fail if no matching .sln files were found
if (!allowEmptyWildcardMatch && (!filesList || filesList.length === 0)) {
throw new Error(tl.loc("Error_NoMatchingFilesFoundForPattern", pattern));
}
}
if (!isWindows) {
return filesList;
}
else {
return filesList.map((file) => file.split("/").join("\\"));
}
}
示例7: getFilesToCopy
// This method will find the list of matching files for the specified contents
// This logic is the same as the one used by CopyFiles task except for allowing dot folders to be copied
// This will be useful to put in the task-lib
function getFilesToCopy(sourceFolder: string, contents: string[]): string[] {
// include filter
const includeContents: string[] = [];
// exclude filter
const excludeContents: string[] = [];
// evaluate leading negations `!` on the pattern
for (const pattern of contents.map(x => x.trim())) {
let negate: boolean = false;
let numberOfNegations: number = 0;
for (const c of pattern) {
if (c === '!') {
negate = !negate;
numberOfNegations++;
} else {
break;
}
}
if (negate) {
tl.debug('exclude content pattern: ' + pattern);
const realPattern = pattern.substring(0, numberOfNegations) + path.join(sourceFolder, pattern.substring(numberOfNegations));
excludeContents.push(realPattern);
} else {
tl.debug('include content pattern: ' + pattern);
const realPattern = path.join(sourceFolder, pattern);
includeContents.push(realPattern);
}
}
// enumerate all files
let files: string[] = [];
const allPaths: string[] = tl.find(sourceFolder);
const allFiles: string[] = [];
// remove folder path
for (const p of allPaths) {
if (!tl.stats(p).isDirectory()) {
allFiles.push(p);
}
}
// if we only have exclude filters, we need add a include all filter, so we can have something to exclude.
if (includeContents.length === 0 && excludeContents.length > 0) {
includeContents.push('**');
}
tl.debug("counted " + allFiles.length + " files in the source tree");
// a map to eliminate duplicates
const pathsSeen = {};
// minimatch options
const matchOptions: tl.MatchOptions = { matchBase: true, dot: true };
if (os.platform() === 'win32') {
matchOptions.nocase = true;
}
// apply include filter
for (const pattern of includeContents) {
tl.debug('Include matching ' + pattern);
// let minimatch do the actual filtering
const matches: string[] = tl.match(allFiles, pattern, matchOptions);
tl.debug('Include matched ' + matches.length + ' files');
for (const matchPath of matches) {
if (!pathsSeen.hasOwnProperty(matchPath)) {
pathsSeen[matchPath] = true;
files.push(matchPath);
}
}
}
// apply exclude filter
for (const pattern of excludeContents) {
tl.debug('Exclude matching ' + pattern);
// let minimatch do the actual filtering
const matches: string[] = tl.match(files, pattern, matchOptions);
tl.debug('Exclude matched ' + matches.length + ' files');
files = [];
for (const matchPath of matches) {
files.push(matchPath);
}
}
return files;
}
示例8: resolveWildcardPath
export function resolveWildcardPath(pattern: string, allowEmptyWildcardMatch?: boolean): string[] {
// Resolve files for the specified value or pattern
var filesList: string[];
if (pattern.indexOf('*') == -1 && pattern.indexOf('?') == -1) {
// No pattern found, check literal path to a single file
tl.checkPath(pattern, 'files');
// Use the specified single file
filesList = [pattern];
} else {
var firstWildcardIndex = function (str) {
var idx = str.indexOf('*');
var idxOfWildcard = str.indexOf('?');
if (idxOfWildcard > -1) {
return (idx > -1) ?
Math.min(idx, idxOfWildcard) : idxOfWildcard;
}
return idx;
}
// Find app files matching the specified pattern
tl.debug('Matching glob pattern: ' + pattern);
// First find the most complete path without any matching patterns
var idx = firstWildcardIndex(pattern);
tl.debug('Index of first wildcard: ' + idx);
var findPathRoot = path.dirname(pattern.slice(0, idx));
tl.debug('find root dir: ' + findPathRoot);
// Now we get a list of all files under this root
var allFiles = tl.find(findPathRoot);
let isWindows = os.platform() === 'win32';
let toPosixPath: (string) => string = _ => _;
if (isWindows) {
// minimatch assumes paths use /, so on Windows, make paths use /
// This needs to be done both to the pattern and to the filenames.
toPosixPath = (path: string) => path.replace("\\", "/");
}
// Now matching the pattern against all files
// Turn off a bunch of minimatch features to replicate the be
let patternFilter = tl.filter(
toPosixPath(pattern), {
matchBase: true,
nobrace: true,
noext: true,
nocomment: true,
nonegate: true,
nocase: isWindows,
dot: isWindows
});
filesList = allFiles.filter((file, index, array) => patternFilter(toPosixPath(file), index, array));
// Fail if no matching .sln files were found
if (!allowEmptyWildcardMatch && (!filesList || filesList.length == 0)) {
throw new Error('No matching files were found with search pattern: ' + pattern);
}
}
return filesList;
}
示例9: resolveWildcardPath
export function resolveWildcardPath(pattern: string, allowEmptyWildcardMatch?: boolean): string[] {
let isWindows = os.platform() === 'win32';
// Resolve files for the specified value or pattern
var filesList: string[];
if (pattern.indexOf('*') == -1 && pattern.indexOf('?') == -1) {
// No pattern found, check literal path to a single file
tl.checkPath(pattern, 'files');
// Use the specified single file
filesList = [pattern];
} else {
var firstWildcardIndex = function (str) {
var idx = str.indexOf('*');
var idxOfWildcard = str.indexOf('?');
if (idxOfWildcard > -1) {
return (idx > -1) ?
Math.min(idx, idxOfWildcard) : idxOfWildcard;
}
return idx;
}
// Find app files matching the specified pattern
tl.debug('Matching glob pattern: ' + pattern);
// First find the most complete path without any matching patterns
var idx = firstWildcardIndex(pattern);
tl.debug('Index of first wildcard: ' + idx);
var findPathRoot = path.dirname(pattern.slice(0, idx));
tl.debug('find root dir: ' + findPathRoot);
// Now we get a list of all files under this root
var allFiles = tl.find(findPathRoot);
// Now matching the pattern against all files
// Turn off a bunch of minimatch features to replicate the behavior of Find-Files in the old PowerShell tasks
let patternFilter = tl.filter(
pattern, {
matchBase: true,
nobrace: true,
noext: true,
nocomment: true,
nonegate: true,
nocase: isWindows,
dot: isWindows
});
filesList = allFiles.filter(patternFilter);
// Fail if no matching .sln files were found
if (!allowEmptyWildcardMatch && (!filesList || filesList.length == 0)) {
throw new Error('No matching files were found with search pattern: ' + pattern);
}
}
if (!isWindows)
{
return filesList;
}
else
{
return filesList.map(file => file.split("/").join("\\"));
}
}