Skip to content

Commit f917dee

Browse files
Merge pull request #232 from PowershellFrameworkCollective/development
0.10.28.144
2 parents 1cdbec1 + 53568fe commit f917dee

76 files changed

Lines changed: 261 additions & 143 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

PSFramework/PSFramework.psd1

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
RootModule = 'PSFramework.psm1'
66

77
# Version number of this module.
8-
ModuleVersion = '0.10.27.135'
8+
ModuleVersion = '0.10.28.144'
99

1010
# ID used to uniquely identify this module
1111
GUID = '8028b914-132b-431f-baa9-94a6952f21ff'

PSFramework/PSFramework.psm1

Lines changed: 14 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
1-
$script:ModuleRoot = $PSScriptRoot
2-
$script:ModuleVersion = "0.10.27.135"
1+
$script:ModuleRoot = $PSScriptRoot
2+
$script:ModuleVersion = (Import-PowerShellDataFile -Path "$($script:ModuleRoot)\PSFramework.psd1").ModuleVersion
33

44
# Detect whether at some level dotsourcing was enforced
55
$script:doDotSource = $false
@@ -25,8 +25,8 @@ if (($PSVersionTable.PSVersion.Major -lt 6) -or ($PSVersionTable.OS -like "*Wind
2525
if ((Get-ItemProperty -Path "HKCU:\SOFTWARE\Microsoft\WindowsPowerShell\PSFramework\System" -Name "ImportIndividualFiles" -ErrorAction Ignore).ImportIndividualFiles) { $script:doDotSource = $true }
2626
}
2727
if (Test-Path (Join-Path (Resolve-Path -Path "$($script:ModuleRoot)\..") '.git')) { $importIndividualFiles = $true }
28-
if (-not (Test-Path (Join-Path $script:ModuleRoot "commands.ps1"))) { $importIndividualFiles = $true }
29-
28+
if ("<was not compiled>" -eq '<was not compiled>') { $importIndividualFiles = $true }
29+
3030
function Import-ModuleFile
3131
{
3232
<#
@@ -54,9 +54,10 @@ function Import-ModuleFile
5454
)
5555

5656
if ($doDotSource) { . (Resolve-Path $Path) }
57-
else { $ExecutionContext.InvokeCommand.InvokeScript($false, ([scriptblock]::Create([io.file]::ReadAllText((Resolve-Path $Path)))), $null, $null) }
57+
else { $ExecutionContext.InvokeCommand.InvokeScript($false, ([scriptblock]::Create([io.file]::ReadAllText((Resolve-Path $Path).ProviderPath))), $null, $null) }
5858
}
5959

60+
#region Load individual files
6061
if ($importIndividualFiles)
6162
{
6263
# Execute Preimport actions
@@ -76,18 +77,12 @@ if ($importIndividualFiles)
7677

7778
# Execute Postimport actions
7879
. Import-ModuleFile -Path "$($script:ModuleRoot)\internal\scripts\postimport.ps1"
79-
}
80-
else
81-
{
82-
if (Test-Path (Join-Path $script:ModuleRoot "resourcesBefore.ps1"))
83-
{
84-
. Import-ModuleFile -Path "$($script:ModuleRoot)\resourcesBefore.ps1"
85-
}
8680

87-
. Import-ModuleFile -Path "$($script:ModuleRoot)\commands.ps1"
88-
89-
if (Test-Path (Join-Path $script:ModuleRoot "resourcesAfter.ps1"))
90-
{
91-
. Import-ModuleFile -Path "$($script:ModuleRoot)\resourcesAfter.ps1"
92-
}
93-
}
81+
# End it here, do not load compiled code below
82+
return
83+
}
84+
#endregion Load individual files
85+
86+
#region Load compiled code
87+
"<compile code into here>"
88+
#endregion Load compiled code
Lines changed: 70 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,70 @@
1+
# The PSFramework Reliability Promise
2+
## About
3+
4+
The PSFramework is designed as a platform for others to build their code upon.
5+
As such, there is a special need for reliability and stability of code.
6+
This is my promise on how I ensure it is safe to use and safe to rely upon.
7+
8+
## Supported Platforms
9+
10+
This module is supported on:
11+
12+
- Windows PowerShell 3+ (And Windows 6.1 and later)
13+
- PowerShell Core 6.0+ (Any OS; Stable Release only)
14+
- PowerShell Core 6.0+ (Any OS; Preview support; Limited support only*)
15+
16+
*Generally, Platform compatibility issues take top priority, having me drop any other issues to fix them.
17+
For preview editions of PowerShell Core this priority may not apply.
18+
19+
## No breaking change (?)
20+
21+
The greatest risk to relying on foreign code is that that code might introduce a breaking change, thereby breaking your code without you doing anything but deploying a latest version of it.
22+
23+
Therefore, my one greatest promise is this:
24+
25+
> No Breaking Changes*
26+
27+
That is, if a feature has reached deployment stage, I will not introduce breaking changes whatsoever, except for under some very limited and constrained circumstances.
28+
And even then I'll try not to if I somehow can.
29+
30+
## Coverage
31+
32+
Now what is covered by this promise:
33+
34+
- All functions and cmdlets signatures. Any current parameterization will keep being valid and produce the same result.
35+
- All logging providers. Configuration and default behavior cannot be changed.
36+
- All parameter classes will keep understanding current input (they may _also_ learn new things however)
37+
- All validation attributes will keep accepting the current definition (new definitions may be introduced however)
38+
- Any otherwise advertised feature on the [documentation site](https://psframework.org/documentation/documents/psframework.html)
39+
40+
Not covered by this promise:
41+
42+
- Preview features. All new commands that are being released are considered to be in preview for one month. This is designed to allow for initial user feedback to be implemented. Note: This only applies to the initial command release, _not_ to any later updates that were made after the preview stage was over.
43+
- Any other internal library mechanics. Some of them need to be public for script funtions to access them. That does _not_ imply they are for public consumption (You may use them for that, but at your own risk).
44+
- UI User Interaction. Messages written to the host intended for a human consumption may be changed in how they are being displayed. The previous state however must be available using configuration (thus changes to the _default_ behavior can be made, as long as the old state can be reintroduced).
45+
- Experimental features. Any feature listed as experimental below is considered to be exempt from this policy.
46+
- System mandated change: If a feature needs to be adapted in order for it to be operable on all supported platforms (for example an active conflict with PowerShell Core), then that is an overriding technical need to change it.
47+
- A feature undergong the Process of Change.
48+
49+
## Process of Change
50+
51+
One of the great limitations of a "No Breaking Change" policy is that in some few cases, keeping to support the old ways incurs a penalty, a cost.
52+
Whether that is hurt performance or undesired environment impact.
53+
In order to not fully prevent improvement in those scenarios, there shall be implemented a public change process:
54+
55+
For each desired breaking change, an RFC most be posted as an issue, describing the reason for this change and the benefits it brings.
56+
This RFC will be open for discussion for three months.
57+
If these three months pass and no convincing argument against it have been brought forward, the suggested change will be marked as a pending change:
58+
59+
- The way of operation that will be broken by that change will be declared deprecated.
60+
- The affected feature will be updated to include a warning if a deprecated way of using it is detected, to warn about the impeding change.
61+
- On Windows Systems, use of a deprecated functionality will generate a warning eventlog event in the PowerShell Eventlog (ID: 666; Category: 1; EntryType: Warning; Source: PowerShell)
62+
- Nine months after the RFC is approved, the breaking change may be implemented.
63+
64+
## Pending Change
65+
66+
There are currently no breaking changes pending
67+
68+
## Experimental features
69+
70+
There currently are no experimental features in the PSFramework

PSFramework/bin/PSFramework.dll

0 Bytes
Binary file not shown.

PSFramework/bin/PSFramework.pdb

0 Bytes
Binary file not shown.

PSFramework/bin/PSFramework.xml

Lines changed: 16 additions & 2 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

PSFramework/changelog.md

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,15 @@
11
# CHANGELOG
2+
## 0.10.28.144 : 2018-10-28
3+
- Upd: Module Architecture update
4+
- Upd: Linked online help for commands (by Andrew Pla)
5+
- Upd: Configuration - redirected SystemDefault to FileSystem scope on non-Windows systems (#229)
6+
- Upd: Message/Logging - Error records are now directly associated with their respective message and available as the ErrorRecord property (#230)
7+
- Fix: Reset-PSFConfig fails with error (#223)
8+
- Fix: Configuration: Registering empty string will register the wrong value (#224)
9+
- Fix: Module on UNC Path Fails to Load (#227)
10+
- Fix: Get-PSFUserChoice handling single options more gracefully (#228)
11+
- Other: Add formal policy on supported platforms and breaking change policy
12+
213
## 0.10.27.135 : 2018-10-12
314
- Fix: New dynamic content collections' Reset() method doesn't do a thing.
415

PSFramework/functions/ComputerManagement/Invoke-PSFCommand.ps1

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -51,7 +51,7 @@
5151
Runs the $scriptblock against all computers in AD with a name that starts with "srv-db".
5252
#>
5353
[Diagnostics.CodeAnalysis.SuppressMessageAttribute("PSPossibleIncorrectUsageOfAssignmentOperator", "")]
54-
[CmdletBinding()]
54+
[CmdletBinding(HelpUri = 'https://psframework.org/documentation/commands/PSFramework/Invoke-PSFCommand')]
5555
param (
5656
[PSFComputer[]]
5757
[Alias('Session')]

PSFramework/functions/configuration/Export-PSFConfig.ps1

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -54,7 +54,7 @@
5454
5555
Exports all settings of the module 'MyModule' that are no longer the original default values to json.
5656
#>
57-
[CmdletBinding(DefaultParameterSetName = 'FullName')]
57+
[CmdletBinding(DefaultParameterSetName = 'FullName', HelpUri = 'https://psframework.org/documentation/commands/PSFramework/Export-PSFConfig')]
5858
Param (
5959
[Parameter(ParameterSetName = "FullName", Position = 0, Mandatory = $true)]
6060
[string]

PSFramework/functions/configuration/Get-PSFConfig.ps1

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,7 @@
3535
Retrieve all configuration elements from all modules, even hidden ones.
3636
#>
3737
[OutputType([PSFramework.Configuration.Config])]
38-
[CmdletBinding(DefaultParameterSetName = "FullName")]
38+
[CmdletBinding(DefaultParameterSetName = "FullName", HelpUri = 'https://psframework.org/documentation/commands/PSFramework/Get-PSFConfig')]
3939
Param (
4040
[Parameter(ParameterSetName = "FullName", Position = 0)]
4141
[string]

0 commit comments

Comments
 (0)