Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Using Pode as a Service in Windows, MacOSX and Linux (Systemd) #1421

Open
wants to merge 95 commits into
base: develop
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from 18 commits
Commits
Show all changes
95 commits
Select commit Hold shift + click to select a range
f264e07
First drop
mdaneri Oct 16, 2024
d42b58d
Merge branch 'develop' into service
mdaneri Oct 16, 2024
f965cbf
Integrated in Pode
mdaneri Oct 16, 2024
2791504
update
mdaneri Oct 17, 2024
d60d1cc
Update to linux, Mac
mdaneri Oct 17, 2024
3c3a5cd
fix Mac detection
mdaneri Oct 17, 2024
430ea27
FIx Mac service
mdaneri Oct 17, 2024
b87561e
Fix Windows
mdaneri Oct 18, 2024
6c51a48
Fix tests
mdaneri Oct 18, 2024
0091321
Remove settingsfile with unregister
mdaneri Oct 18, 2024
e29752e
fixes
mdaneri Oct 18, 2024
99f5109
Merge branch 'develop' into service
mdaneri Oct 19, 2024
9d90c78
Add UAC support
mdaneri Oct 19, 2024
2ca3621
FIx Mac service
mdaneri Oct 19, 2024
c3073d2
Merge remote-tracking branch 'upstream/develop' into service
mdaneri Oct 20, 2024
65b28d6
Merge remote-tracking branch 'upstream/develop' into service
mdaneri Oct 21, 2024
1f55857
Update Pode.psd1
mdaneri Oct 21, 2024
97d8e3c
fix linux 1
mdaneri Oct 21, 2024
734f6b3
fixes
mdaneri Oct 21, 2024
36e14cc
fix
mdaneri Oct 21, 2024
9e76fbb
fix service path
mdaneri Oct 21, 2024
5c0c33d
fixes
mdaneri Oct 21, 2024
1e0cf3b
Add logs
mdaneri Oct 22, 2024
b19643d
Update Service.ps1
mdaneri Oct 22, 2024
8a314ea
Code completed
mdaneri Oct 22, 2024
00c5252
remove spaces between function Register-PodeService and header
mdaneri Oct 22, 2024
302bb09
reinstated create user
mdaneri Oct 22, 2024
a67b3c3
fixes
mdaneri Oct 22, 2024
afcd5c1
fixes
mdaneri Oct 22, 2024
9326e32
fix the example
mdaneri Oct 22, 2024
88246e8
Merge branch 'develop' into service
mdaneri Oct 23, 2024
78e50f2
minor log fixex
mdaneri Oct 23, 2024
d79fe5f
Merge remote-tracking branch 'upstream/develop' into service
mdaneri Oct 23, 2024
fc3e1c3
MacOS improvements
mdaneri Oct 23, 2024
b113821
Merge remote-tracking branch 'upstream/develop' into service
mdaneri Oct 27, 2024
49b45c0
Merge branch 'develop' into service
mdaneri Oct 28, 2024
2e6b153
Merge branch 'develop' into service
mdaneri Oct 30, 2024
96cc8a3
Merge remote-tracking branch 'upstream/develop' into service
mdaneri Nov 2, 2024
b3579ea
Merge branch 'develop' into service
mdaneri Nov 3, 2024
6cc2da7
Merge branch 'develop' into service
mdaneri Nov 3, 2024
756853e
Merge branch 'develop' into service
mdaneri Nov 6, 2024
87254b3
add suspend ,resume
mdaneri Nov 17, 2024
ebf36a2
Improvements
mdaneri Nov 17, 2024
c11eb7f
revert to net8
mdaneri Nov 17, 2024
4996642
improvements
mdaneri Nov 17, 2024
93ca614
Added comments
mdaneri Nov 17, 2024
b04f761
fixes
mdaneri Nov 18, 2024
d4ada0f
Add restart to windows using sc control 'Hello Service2' 128
mdaneri Nov 18, 2024
ab64da5
add EnableTransactions to mac plist
mdaneri Nov 18, 2024
0e5765d
Rename folders and fix windows service credential
mdaneri Nov 19, 2024
d959b34
fixes
mdaneri Nov 19, 2024
9bb9747
minor fixes
mdaneri Nov 19, 2024
ac2fd82
Linux fixes
mdaneri Nov 19, 2024
0978c68
fixes
mdaneri Nov 19, 2024
cc5787e
Mac fixes
mdaneri Nov 20, 2024
6c2b883
add DisableLifecycleServiceOperations to build
mdaneri Nov 20, 2024
66e4817
fix Test-PodeAdminPrivilege
mdaneri Nov 20, 2024
44f8768
improve workflow
mdaneri Nov 21, 2024
5ee2225
improvements
mdaneri Nov 21, 2024
3cdfb0d
windows fixes
mdaneri Nov 22, 2024
ad28272
Merge branch 'develop' into service
mdaneri Nov 22, 2024
b0bd204
Update Helpers.ps1
mdaneri Nov 22, 2024
697cd8b
adding tests
mdaneri Nov 22, 2024
770702e
Added stopping and fix suspended report on linux
mdaneri Nov 23, 2024
d568de1
Merge remote-tracking branch 'upstream/develop' into service
mdaneri Nov 23, 2024
6040563
Update pode.build.ps1
mdaneri Nov 23, 2024
6ba6419
linux fixes
mdaneri Nov 23, 2024
a576386
support workflow debug
mdaneri Nov 23, 2024
ae24dd9
retry
mdaneri Nov 23, 2024
bb1fbb2
try to catch $_ -like "*##[debug]*"
mdaneri Nov 23, 2024
f000a9e
fix trhe workflow
mdaneri Nov 23, 2024
1b188e6
again
mdaneri Nov 23, 2024
55df3ab
adding delays
mdaneri Nov 23, 2024
7d208c6
build improvements
mdaneri Nov 23, 2024
d6946f3
replace Test-PodeBuildIsWindows with $iswindows
mdaneri Nov 23, 2024
ad7a7e8
add group adm as sudo users
mdaneri Nov 23, 2024
d18b1f6
Fix the macos part
mdaneri Nov 23, 2024
304457d
modified: tests/integration/Service.Tests.ps1
mdaneri Nov 23, 2024
6af3213
tests fix
mdaneri Nov 24, 2024
50b23a3
Merge remote-tracking branch 'upstream/develop' into service
mdaneri Nov 25, 2024
12c33a4
improvements to the service commands
mdaneri Nov 25, 2024
7f77d94
fix windows test
mdaneri Nov 26, 2024
035cb12
linux fixes
mdaneri Nov 26, 2024
bc36b0f
test fixes
mdaneri Nov 26, 2024
79e5b2f
fix MacOS
mdaneri Nov 26, 2024
6f817e6
fixes
mdaneri Nov 27, 2024
10a272d
fix MacOS test (I hope)
mdaneri Nov 27, 2024
0c50dd1
Retry
mdaneri Nov 27, 2024
c9c84f3
Code Improvements
mdaneri Nov 27, 2024
d6a026f
fix linux
mdaneri Nov 27, 2024
40d5bbc
fixes for Powershell 5.1
mdaneri Nov 27, 2024
1761077
Added log rotation and additional features
mdaneri Nov 27, 2024
d2b5b49
add full support for macos agents
mdaneri Nov 28, 2024
ac4cbb9
fix pipename generator on mac/linux+ log errors
mdaneri Nov 28, 2024
5c8bb3d
Fix examples
mdaneri Nov 29, 2024
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -266,3 +266,4 @@ examples/PetStore/data/PetData.json
packers/choco/pode.nuspec
packers/choco/tools/ChocolateyInstall.ps1
docs/Getting-Started/Samples.md
examples/*_srvsettings.json
12 changes: 12 additions & 0 deletions examples/HelloService/Hello Service_srvsettings.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
{
"PodePwshWorker": {
"PwshPath": "/opt/microsoft/powershell/7/pwsh",
"LogFilePath": "/home/m.daneri/Documents/Pode/examples/HelloService/logs/Hello Service_svc.log",
"ParameterString": "",
"ScriptPath": "/home/m.daneri/Documents/Pode/examples/HelloService/HelloService.ps1",
"DisableTermination": true,
"Quiet": true,
"Name": "Hello Service",
"ShutdownWaitTimeMs": 30000
}
}
140 changes: 140 additions & 0 deletions examples/HelloService/HelloService.ps1
Original file line number Diff line number Diff line change
@@ -0,0 +1,140 @@
<#
.SYNOPSIS
PowerShell script to register, start, stop, query, and unregister a Pode service, with a basic server setup.

.DESCRIPTION
This script manages a Pode service named 'Hello Service' with commands to register, start, stop, query,
and unregister the service. Additionally, it sets up a Pode server that listens on port 8080 and includes
a simple GET route that responds with 'Hello, Service!'.

The script checks if the Pode module exists locally and imports it; otherwise, it imports Pode from the system.

To test the Pode server's HTTP endpoint:
Invoke-RestMethod -Uri http://localhost:8080/ -Method Get
# Response: 'Hello, Service!'

.PARAMETER Register
Registers the 'Hello Service' with Pode.

.PARAMETER Unregister
Unregisters the 'Hello Service' from Pode. Use with the -Force switch to forcefully unregister the service.

.PARAMETER Force
Used with the -Unregister parameter to forcefully unregister the service.

.PARAMETER Start
Starts the 'Hello Service'.

.PARAMETER Stop
Stops the 'Hello Service'.

.PARAMETER Query
Queries the status of the 'Hello Service'.

.EXAMPLE
Register the service:
./HelloWorld.ps1 -Register

.EXAMPLE
Start the service:
./HelloWorld.ps1 -Start

.EXAMPLE
Query the service:
./HelloWorld.ps1 -Query

.EXAMPLE
Stop the service:
./HelloWorld.ps1 -Stop

.EXAMPLE
Unregister the service:
./HelloWorld.ps1 -Unregister -Force

.LINK
https://github.com/Badgerati/Pode/blob/develop/examples/HelloService/HelloService.ps1

.NOTES
Author: Pode Team
License: MIT License
#>

[CmdletBinding(DefaultParameterSetName = 'Inbuilt')]
param(
[Parameter(Mandatory = $true, ParameterSetName = 'Register')]
[switch]
$Register,
[Parameter(Mandatory = $true, ParameterSetName = 'Unregister')]
[switch]
$Unregister,
[Parameter( ParameterSetName = 'Unregister')]
[switch]
$Force,
[Parameter( ParameterSetName = 'Start')]
[switch]
$Start,
[Parameter( ParameterSetName = 'Stop')]
[switch]
$Stop,
[Parameter( ParameterSetName = 'Query')]
[switch]
$Query
)
try {
# Get the path of the script being executed
$ScriptPath = (Split-Path -Parent -Path (Split-Path -Parent -Path $MyInvocation.MyCommand.Path))
# Get the parent directory of the script's path
$podePath = Split-Path -Parent -Path $ScriptPath

# Check if the Pode module file exists in the specified path
if (Test-Path -Path "$($podePath)/src/Pode.psm1" -PathType Leaf) {
# If the Pode module file exists, import it
Import-Module "$($podePath)/src/Pode.psm1" -Force -ErrorAction Stop
}
else {
# If the Pode module file does not exist, import the Pode module from the system
Import-Module -Name 'Pode' -MaximumVersion 2.99 -ErrorAction Stop
}
}
catch {
# If there is any error during the module import, throw the error
throw
}


if ( $Register.IsPresent) {
Register-PodeService -Name 'Hello Service'
exit
}
if ( $Unregister.IsPresent) {
Unregister-PodeService -Name 'Hello Service' -Force:$Force
exit
}
if ($Start.IsPresent) {
Start-PodeService -Name 'Hello Service'
exit
}

if ($Stop.IsPresent) {
Stop-PodeService -Name 'Hello Service'
exit
}

if ($Query.IsPresent) {
Get-PodeService -Name 'Hello Service'
exit
}
# Alternatively, you can directly import the Pode module from the system
# Import-Module Pode

# Start the Pode server
Start-PodeServer {
# Add an HTTP endpoint listening on localhost at port 8080
Add-PodeEndpoint -Address localhost -Port 8080 -Protocol Http

# Add a route for GET requests to the root path '/'
Add-PodeRoute -Method Get -Path '/' -ScriptBlock {
# Send a text response with 'Hello, world!'
Write-PodeTextResponse -Value 'Hello, Service!'
}
}
12 changes: 12 additions & 0 deletions examples/HelloService/HelloService2_srvsettings.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
{
"PodePwshWorker": {
"DisableTermination": true,
"Quiet": true,
"Name": "HelloService2",
"ParameterString": "",
"ShutdownWaitTimeMs": 30000,
"LogFilePath": "/home/m.daneri/Documents/Pode/examples/HelloService/logs/HelloService2_svc.log",
"PwshPath": "/opt/microsoft/powershell/7/pwsh",
"ScriptPath": "/home/m.daneri/Documents/Pode/examples/HelloService/HelloService.ps1"
}
}
11 changes: 11 additions & 0 deletions examples/HelloWorld/servicesettings.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
{
"PodePwshWorker ": {
"ScriptPath": "C:\\Users\\m_dan\\Documents\\GitHub\\Pode\\examples\\HelloWorld\\HelloWorld.ps1",
"PwshPath": "C:\\Program Files\\PowerShell\\7\\pwsh.exe",
"ParameterString": "",
"LogFilePath": "C:\\Users\\m_dan\\Documents\\GitHub\\Pode\\examples\\HelloWorld\\logs\\PodePwshMonitorService.Prod.log",
"Quiet": true,
"DisableTermination": true,
"ShutdownWaitTimeMs": 30000
}
}
57 changes: 55 additions & 2 deletions pode.build.ps1
Original file line number Diff line number Diff line change
Expand Up @@ -141,6 +141,38 @@ function Invoke-PodeBuildDotnetBuild($target) {

}


function Invoke-PodeBuildDotnetMonitorSrvBuild() {
# Retrieve the highest installed SDK version
$majorVersion = ([version](dotnet --version)).Major

# Determine if the target framework is compatible
$isCompatible = $majorVersion -ge 8

# Skip build if not compatible
if ($isCompatible) {
Write-Host "SDK for target framework $target is compatible with the installed SDKs"
}
else {
Write-Host "SDK for target framework $target is not compatible with the installed SDKs. Skipping build."
return
}
if ($Version) {
Write-Host "Assembly Version $Version"
$AssemblyVersion = "-p:Version=$Version"
}
else {
$AssemblyVersion = ''
}
foreach ($target in @('win-x64','win-arm64' ,'linux-x64','linux-arm64', 'osx-x64', 'osx-arm64')) {
dotnet publish --configuration Release $AssemblyVersion --runtime $target --output ../Bin/$target
if (!$?) {
throw "dotnet publish failed for $($target)"
}
}

}

function Get-PodeBuildPwshEOL {
$eol = Invoke-RestMethod -Uri 'https://endoflife.date/api/powershell.json' -Headers @{ Accept = 'application/json' }
return @{
Expand Down Expand Up @@ -291,7 +323,7 @@ Task PrintChecksum {
Task ChocoDeps -If (Test-PodeBuildIsWindows) {
if (!(Test-PodeBuildCommand 'choco')) {
Set-ExecutionPolicy Bypass -Scope Process -Force
Invoke-Expression ((New-Object System.Net.WebClient).DownloadString('https://chocolatey.org/install.ps1'))
Invoke-Expression (([System.Net.WebClient]::new()).DownloadString('https://chocolatey.org/install.ps1'))
}
}

Expand Down Expand Up @@ -401,6 +433,21 @@ Task Build BuildDeps, {
finally {
Pop-Location
}

if (Test-Path ./src/Bin) {
Remove-Item -Path ./src/Bin -Recurse -Force | Out-Null
}

try {
Push-Location ./src/PodePwshMonitor
Invoke-PodeBuildDotnetMonitorSrvBuild
}
finally {
Pop-Location
}



}


Expand Down Expand Up @@ -474,7 +521,7 @@ Task Pack Build, {
New-Item -Path $path -ItemType Directory -Force | Out-Null

# which source folders do we need? create them and copy their contents
$folders = @('Private', 'Public', 'Misc', 'Libs', 'Locales')
$folders = @('Private', 'Public', 'Misc', 'Libs', 'Locales', 'Bin')
$folders | ForEach-Object {
New-Item -ItemType Directory -Path (Join-Path $path $_) -Force | Out-Null
Copy-Item -Path "./src/$($_)/*" -Destination (Join-Path $path $_) -Force -Recurse | Out-Null
Expand Down Expand Up @@ -676,6 +723,12 @@ Task CleanLibs {
Remove-Item -Path $path -Recurse -Force | Out-Null
}

$path = './src/Bin'
if (Test-Path -Path $path -PathType Container) {
Write-Host "Removing $path contents"
Remove-Item -Path $path -Recurse -Force | Out-Null
}

Write-Host "Cleanup $path done"
}

Expand Down
6 changes: 6 additions & 0 deletions src/Locales/ar/Pode.psd1
Original file line number Diff line number Diff line change
Expand Up @@ -292,4 +292,10 @@
fnDoesNotAcceptArrayAsPipelineInputExceptionMessage = "الدالة '{0}' لا تقبل مصفوفة كمدخل لأنبوب البيانات."
unsupportedStreamCompressionEncodingExceptionMessage = 'تشفير الضغط غير مدعوم للتشفير {0}'
LocalEndpointConflictExceptionMessage = "تم تعريف كل من '{0}' و '{1}' كنقاط نهاية محلية لـ OpenAPI، لكن يُسمح فقط بنقطة نهاية محلية واحدة لكل تعريف API."
serviceAlreadyRegisteredException = "الخدمة '{0}' مسجلة بالفعل."
serviceIsNotRegisteredException = "الخدمة '{0}' غير مسجلة."
serviceCommandFailedException = "فشل الأمر '{0}' في الخدمة '{1}'."
serviceRegistrationException = "فشل تسجيل الخدمة '{0}'."
serviceIsRunningException = "الخدمة '{0}' تعمل. استخدم المعامل -Force للإيقاف بالقوة."
serviceUnRegistrationException = "فشل إلغاء تسجيل الخدمة '{0}'."
}
6 changes: 6 additions & 0 deletions src/Locales/de/Pode.psd1
Original file line number Diff line number Diff line change
Expand Up @@ -292,4 +292,10 @@
fnDoesNotAcceptArrayAsPipelineInputExceptionMessage = "Die Funktion '{0}' akzeptiert kein Array als Pipeline-Eingabe."
unsupportedStreamCompressionEncodingExceptionMessage = 'Die Stream-Komprimierungskodierung wird nicht unterstützt: {0}'
LocalEndpointConflictExceptionMessage = "Sowohl '{0}' als auch '{1}' sind als lokale OpenAPI-Endpunkte definiert, aber es ist nur ein lokaler Endpunkt pro API-Definition erlaubt."
serviceAlreadyRegisteredException = "Der Dienst '{0}' ist bereits registriert."
serviceIsNotRegisteredException = "Der Dienst '{0}' ist nicht registriert."
serviceCommandFailedException = "Der Dienstbefehl '{0}' ist bei dem Dienst '{1}' fehlgeschlagen."
serviceRegistrationException = "Die Registrierung des Dienstes '{0}' ist fehlgeschlagen."
serviceIsRunningException = "Der Dienst '{0}' läuft. Verwenden Sie den Parameter -Force, um den Dienst zwangsweise zu stoppen."
serviceUnRegistrationException = "Die Abmeldung des Dienstes '{0}' ist fehlgeschlagen."
}
9 changes: 8 additions & 1 deletion src/Locales/en-us/Pode.psd1
Original file line number Diff line number Diff line change
Expand Up @@ -291,4 +291,11 @@
getRequestBodyNotAllowedExceptionMessage = '{0} operations cannot have a Request Body.'
fnDoesNotAcceptArrayAsPipelineInputExceptionMessage = "The function '{0}' does not accept an array as pipeline input."
unsupportedStreamCompressionEncodingExceptionMessage = 'Unsupported stream compression encoding: {0}'
LocalEndpointConflictExceptionMessage = "Both '{0}' and '{1}' are defined as local OpenAPI endpoints, but only one local endpoint is allowed per API definition."}
LocalEndpointConflictExceptionMessage = "Both '{0}' and '{1}' are defined as local OpenAPI endpoints, but only one local endpoint is allowed per API definition."
serviceAlreadyRegisteredException = "Service '{0}' is already registered."
serviceIsNotRegisteredException = "Service '{0}' is not registered."
serviceCommandFailedException = "Service command '{0}' failed on service '{1}'."
serviceRegistrationException = "Service '{0}' registration failed."
serviceIsRunningException = "Service '{0}' is running. Use the -Force parameter to forcefully stop."
serviceUnRegistrationException = "Service '{0}' unregistration failed."
}
6 changes: 6 additions & 0 deletions src/Locales/en/Pode.psd1
Original file line number Diff line number Diff line change
Expand Up @@ -292,4 +292,10 @@
fnDoesNotAcceptArrayAsPipelineInputExceptionMessage = "The function '{0}' does not accept an array as pipeline input."
unsupportedStreamCompressionEncodingExceptionMessage = 'Unsupported stream compression encoding: {0}'
LocalEndpointConflictExceptionMessage = "Both '{0}' and '{1}' are defined as local OpenAPI endpoints, but only one local endpoint is allowed per API definition."
serviceAlreadyRegisteredException = "Service '{0}' is already registered."
serviceIsNotRegisteredException = "Service '{0}' is not registered."
serviceCommandFailedException = "Service command '{0}' failed on service '{1}'."
serviceRegistrationException = "Service '{0}' registration failed."
serviceIsRunningException = "Service '{0}' is running. Use the -Force parameter to forcefully stop."
serviceUnRegistrationException = "Service '{0}' unregistration failed."
}
6 changes: 6 additions & 0 deletions src/Locales/es/Pode.psd1
Original file line number Diff line number Diff line change
Expand Up @@ -292,4 +292,10 @@
fnDoesNotAcceptArrayAsPipelineInputExceptionMessage = "La función '{0}' no acepta una matriz como entrada de canalización."
unsupportedStreamCompressionEncodingExceptionMessage = 'La codificación de compresión de transmisión no es compatible: {0}'
LocalEndpointConflictExceptionMessage = "Tanto '{0}' como '{1}' están definidos como puntos finales locales de OpenAPI, pero solo se permite un punto final local por definición de API."
serviceAlreadyRegisteredException = "El servicio '{0}' ya está registrado."
serviceIsNotRegisteredException = "El servicio '{0}' no está registrado."
serviceCommandFailedException = "El comando del servicio '{0}' falló en el servicio '{1}'."
serviceRegistrationException = "Falló el registro del servicio '{0}'."
serviceIsRunningException = "El servicio '{0}' está en ejecución. Utilice el parámetro -Force para detenerlo a la fuerza."
serviceUnRegistrationException = "La anulación del registro del servicio '{0}' falló."
}
6 changes: 6 additions & 0 deletions src/Locales/fr/Pode.psd1
Original file line number Diff line number Diff line change
Expand Up @@ -292,4 +292,10 @@
fnDoesNotAcceptArrayAsPipelineInputExceptionMessage = "La fonction '{0}' n'accepte pas un tableau en tant qu'entrée de pipeline."
unsupportedStreamCompressionEncodingExceptionMessage = "La compression de flux {0} n'est pas prise en charge."
LocalEndpointConflictExceptionMessage = "Les deux '{0}' et '{1}' sont définis comme des points de terminaison locaux pour OpenAPI, mais un seul point de terminaison local est autorisé par définition d'API."
serviceAlreadyRegisteredException = "Le service '{0}' est déjà enregistré."
serviceIsNotRegisteredException = "Le service '{0}' n'est pas enregistré."
serviceCommandFailedException = "La commande de service '{0}' a échoué sur le service '{1}'."
serviceRegistrationException = "Échec de l'enregistrement du service '{0}'."
serviceIsRunningException = "Le service '{0}' est en cours d'exécution. Utilisez le paramètre -Force pour forcer l'arrêt."
serviceUnRegistrationException = "La désinscription du service '{0}' a échoué."
}
6 changes: 6 additions & 0 deletions src/Locales/it/Pode.psd1
Original file line number Diff line number Diff line change
Expand Up @@ -292,4 +292,10 @@
fnDoesNotAcceptArrayAsPipelineInputExceptionMessage = "La funzione '{0}' non accetta una matrice come input della pipeline."
unsupportedStreamCompressionEncodingExceptionMessage = 'La compressione dello stream non è supportata per la codifica {0}'
LocalEndpointConflictExceptionMessage = "Sia '{0}' che '{1}' sono definiti come endpoint locali OpenAPI, ma è consentito solo un endpoint locale per definizione API."
serviceAlreadyRegisteredException = "Il servizio '{0}' è già registrato."
serviceIsNotRegisteredException = "Il servizio '{0}' non è registrato."
serviceCommandFailedException = "Il comando '{0}' è fallito sul servizio '{1}'."
serviceRegistrationException = "Registrazione del servizio '{0}' non riuscita."
serviceIsRunningException = "Il servizio '{0}' è in esecuzione. Utilizzare il parametro -Force per interromperlo forzatamente."
serviceUnRegistrationException = "La cancellazione della registrazione del servizio '{0}' è fallita."
}
6 changes: 6 additions & 0 deletions src/Locales/ja/Pode.psd1
Original file line number Diff line number Diff line change
Expand Up @@ -292,4 +292,10 @@
fnDoesNotAcceptArrayAsPipelineInputExceptionMessage = "関数 '{0}' は配列をパイプライン入力として受け付けません。"
unsupportedStreamCompressionEncodingExceptionMessage = 'サポートされていないストリーム圧縮エンコーディングが提供されました: {0}'
LocalEndpointConflictExceptionMessage = "'{0}' と '{1}' は OpenAPI のローカルエンドポイントとして定義されていますが、API 定義ごとに 1 つのローカルエンドポイントのみ許可されます。"
serviceAlreadyRegisteredException = "サービス '{0}' はすでに登録されています。"
serviceIsNotRegisteredException = "サービス '{0}' は登録されていません。"
serviceCommandFailedException = "サービスコマンド '{0}' はサービス '{1}' で失敗しました。"
serviceRegistrationException = "サービス '{0}' の登録に失敗しました。"
serviceIsRunningException = "サービス '{0}' が実行中です。強制的に停止するには、-Force パラメーターを使用してください。"
serviceUnRegistrationException = "サービス '{0}' の登録解除に失敗しました。"
}
Loading