PoshCode / Configuration

A module to help other modules have settings
MIT License
176 stars 27 forks source link

The -Scope parameter for Export-Configuration has a parameterset (and it should not) #8

Open Jaykul opened 7 years ago

Jaykul commented 7 years ago

We need to be able to specify a value for Export-Configuration -Scope regardless of ParameterSet (just like you can for Get-StoragePath).

Currently, it has it's ParameterSet to the ManualOverride set, so you can only use it when specifying the -Name and -Company by hand (as in the first example below).

I want all three of these to work:

Scenario: Specifying the scope when listing metadata
    Given a module with the name 'MyModule1' and the author 'MyCompany' with code like this
    """
    $Config = Import-Configuration -Company 'MyCompany' -Name MyModule1
    if(!$Config.ApiKey) {
        $Config =@{ ApiKey = "My Default API Key" }
        Export-Configuration $Config  -Company 'MyCompany' -Name MyModule1 -Scope Machine
    }
    """
    When the module is imported
    Then a settings file named Configuration.psd1 should exist in the Machine folder

Scenario: Specifying the scope when piping moduleinfo
    Given a module with the name 'MyModule1'
    When a user writes (something like) this
    """
    Get-Module MyModule1 | Export-Configuration @{ ApiKey = "MyApiKey" } -Scope Enterprise
    """
    Then a settings file named Configuration.psd1 should exist in the Enterprise folder

Scenario: Specifying the scope implicitly
    Given a module with the name 'MyModule1' and the author 'MyCompany' with code like this
    """
    function Set-ApiKey {
        param($ApiKey)
        $Config =@{ ApiKey = $ApiKey }
        Export-Configuration $Config -Scope Machine
    }
    """
   When I invoke Set-ApiKey "OurCorporateApiKey"
   Then a settings file named Configuration.psd1 should exist in the Machine folder
gerane commented 7 years ago

If you remove the ManualOverride ParameterSet from Scope, all three of these Scenarios should pass. Even if you have the Company set to 'Unknown', you can still specify the AuthorName and it will successfully update the Config.

fsackur commented 3 years ago

I would love to PR this, but I see some development is happening off the master branch.

I see that Jaykul is actively working on the build process, and I'm getting nowhere with the build scripts as they exist in master.

Should I hold off? @Jaykul is it your intention to merge / deploy to the gallery any time soon?

Jaykul commented 3 years ago

LOL. Yeah. I have a couple more pieces to do in the build (I'm working on a Script Analyzer action), and then I was thinking of trying to auto-publish builds of master ...

It's all a little mad. I made a new CI build in Github Actions because I was having weird problems with the Azure build (and I wanted to learn Actions anyway). ... and then the Github Action had the same problem.

It turned out it wasn't properly importing the new build output for some reason when it ran the tests. Fixed now, anyway.

Jaykul commented 3 years ago

Ok, that stuff is done (enough). I still want to make some improvements, but the build is working and running tests and script analyzer, and it's merged to master. Thanks for your patience, @fsackur

fsackur commented 3 years ago

No, thank YOU. I'll pick this back up when my day job calms down a little.