Должны ли вспомогательные функции в пакете NuGet Packages init.ps1 быть глобальными? - PullRequest
4 голосов
/ 23 марта 2011

Я хочу написать пару команд для диспетчера пакетов NuGet консоли для вставки Gists из GitHub . У меня есть 4 основные команды

  • Списки-списки 'user'
  • Gist-Info 'gistId'
  • Gist-Contents 'gistId' 'fileName'
  • Gist-Insert 'gistId' 'fileName'

Все мои команды зависят от пары служебных функций, и я борюсь с тем, должны ли они быть глобальными или нет.

# Json Parser
function parseJson([string]$json, [bool]$throwError = $true) {    
    try {
        $result = $serializer.DeserializeObject( $json );    
        return $result;
    } catch {                
        if($throwError) { throw "ERROR: Parsing Error"}
        else { return $null }            
    }
}

function downloadString([string]$stringUrl) {
    try {        
        return $webClient.DownloadString($stringUrl)
    } catch {         
        throw "ERROR: Problem downloading from $stringUrl"
    }
}

function parseUrl([string]$url) {
    return parseJson(downloadString($url));
}

Могу ли я просто иметь эти служебные функции вне моих глобальных функций, или мне нужно будет как-то включить их в каждую область определения глобальных функций?

1 Ответ

7 голосов
/ 15 апреля 2011

Нет, они этого не делают. Из вашего init.ps1 вы можете импортировать файл PowerShell, который вы написали (psm1), и двигаться дальше, так мы будем рекомендовать добавлять методы в консольную среду.

Ваш init.ps1 будет выглядеть примерно так:

param($installPath, $toolsPath)
Import-Module (Join-Path $toolsPath MyModule.psm1)

В MyModule.psm1:

function MyPrivateFunction {
    "Hello World"
}

function Get-Value {
    MyPrivateFunction
}

# Export only the Get-Value method from this module so that's what gets added to the nuget console environment
Export-ModuleMember Get-Value

Подробнее о модулях вы можете узнать здесь http://msdn.microsoft.com/en-us/library/dd878340(v=VS.85).aspx

...