Crescendo icon indicating copy to clipboard operation
Crescendo copied to clipboard

Build can't be easily automated when a parser function is needed

Open DennisL68 opened this issue 2 years ago • 1 comments

Prerequisites

  • [X] Write a descriptive title.
  • [X] Make sure you are able to repro it on the latest released version
  • [X] Search the existing issues.

Steps to reproduce

Create a build script for a Crescendo configuration that requires an external script for parsing

. "$PSScriptRoot\helpers\parse.ps1"

Export-CrescendoModule -ConfigurationFile "$PSScriptRoot\crescendo\mycommand.json" -ModuleName MyCommand -Force

Expected behavior

The functions in parse.ps1 should be available for Export-CrescendoModule

(I'm actually not sure they will be available for any external scripts unless deployed from a console that has had the functions dot sourced.)

Actual behavior

Crescendo fails with error

Work around is to dot source the script by hand into the console that starts the build script

Error details

Exception: Cannot find output handler function 'XXX'.

Environment data

Name                           Value
----                           -----
PSVersion                      7.2.10
PSEdition                      Core
GitCommitId                    7.2.10
OS                             Microsoft Windows 10.0.19045
Platform                       Win32NT
PSCompatibleVersions           {1.0, 2.0, 3.0, 4.0…}
PSRemotingProtocolVersion      2.3
SerializationVersion           1.1.0.1
WSManStackVersion              3.0

Version

1.1.0

Visuals

No response

DennisL68 avatar Jun 15 '23 22:06 DennisL68

My workaround is to execute a separate "Build.ps1" script that dot sources the helper functions ps1 and then executes the ps1 that contains your Export-CrecendoModule command. In my example all 3 ps1 files are in the same directory.

This approach creates a fresh PowerShell session and ensures and eliminates any clobber issues with changing functions in the same session before re-running .

I keep a separate PowerShell session open and I re-run the ". build.ps1" anytime I make modifications to crescendo jsons or the helper functions. This resolved my issues with Crescendo not finding the helper functions or not using the latest version and allowed me to keep helper functions in separate files.

. Build.ps1

. "$PSScriptRoot\Build_Functions.ps1"    #Contains All helper functions 
. "$PSScriptRoot\Build_Deploy.ps1"       #Contains Export-CrecendoModule

victormaso avatar Dec 31 '24 04:12 victormaso