Skip to content

Commit

Permalink
1.0.1
Browse files Browse the repository at this point in the history
  • Loading branch information
mazzy-ax committed Apr 23, 2018
1 parent def7e75 commit 330d84b
Show file tree
Hide file tree
Showing 12 changed files with 98 additions and 27 deletions.
8 changes: 7 additions & 1 deletion CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,12 @@

All notable changes to the project [https://github.com/mazzy-ax/xpoTools](https://github.com/mazzy-ax/xpoTools) will be documented in this file. See also [https://github.com/mazzy-ax/xpoTools/releases](https://github.com/mazzy-ax/xpoTools/releases).

## [1.0.0](https://github.com/mazzy-ax/SysEnumerators/compare/0.1.0...master) - 2018-04-22
## [1.0.1](https://github.com/mazzy-ax/SysEnumerators/compare/1.0.1...1.0.0) - 2018-04-23

* Added object types for ax2012 in `Get-XpoType.ps1`. #1 closed.
* Fixed a couple bugs and typo
* Fixed readme.md

## [1.0.0](https://github.com/mazzy-ax/SysEnumerators/compare/1.0.0...master) - 2018-04-22

* Initial release
8 changes: 4 additions & 4 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
# [xpoTools](https://github.com/mazzy-ax/xpoTools)
# xpoTools

![version](https://img.shields.io/badge/version-1.0.0-green.svg) ![license](https://img.shields.io/badge/license-MIT-blue.svg)
![version](https://img.shields.io/badge/version-1.0.1-green.svg) ![license](https://img.shields.io/badge/license-MIT-blue.svg)

**xpoTools** is a Powershell module contains cmdlets that splits one XPO file into separate XPO files and combines a set of set of interdependent XPO files into a single XPO file.
[xpoTools](https://github.com/mazzy-ax/xpoTools) is a Powershell module contains cmdlets that splits one XPO file into separate XPO files and combines a set of set of interdependent XPO files into a single XPO file.

XPO file is a text file contains Microsoft Dynamics AX (Axapta) objects. See [tests/assets](tests/assets) folder for example.

Expand Down Expand Up @@ -45,7 +45,7 @@ or manual:
* Download and unblock the latest .zip file.
* Extract the .zip into your $PSModulePath, e.g. ~\Documents\WindowsPowerShell\Modules.
* Ensure the extracted folder is named `xpoTools`.
* Set an execution policy to RemoteSigned or Unrestricted to execute not signed modules `Set-ExecutionPolicy RemoteSigned`.
* Set an execution policy to `RemoteSigned` or `Unrestricted` to execute not signed modules `Set-ExecutionPolicy RemoteSigned`.
* Run `Import-Module Write-ProgressEx`.

## Changelog
Expand Down
23 changes: 15 additions & 8 deletions examples/parallel-split.ps1
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
#Requires -Version 5
#Requires -module xpoTools
#Requires -module SplitPipeline
#Requires -Module xpoTools
#Requires -Module SplitPipeline

# To install the modules from https://www.powershellgallery.com/ run powershell commands:
# PS> Install-Module xpoTools
Expand All @@ -11,12 +11,19 @@
Set-StrictMode -Version Latest

$load = 0 # 0 is auto. Try 10, 50, 100 or another values for a big xpo file.
$projectRoot = Resolve-Path $PSScriptRoot\..

# split
Get-ChildItem $projectRoot\tests\assets -filter '*.xpo' |
$projectRoot = (Resolve-Path $PSScriptRoot\..).Path
$data = @{
projectRoot = $projectRoot
}

# parallel split
Get-ChildItem $projectRoot\tests\assets\*.xpo |
Import-Xpo |
Split-Pipeline -Verbose -Load $load {process {
Split-xpo -Destination $projectRoot\.test -xpp -PathStyle mazzy -Encoding UTF8 -PassThru
}}
#ForEach-Object {
Split-Pipeline -Verbose -Load $load -Variable data -Module xpoTools {process {

Split-xpo -Items $_ -Destination $data.projectRoot, \.test -xpp -PathStyle mazzy -Encoding UTF8 -PassThru
}
}

7 changes: 6 additions & 1 deletion tests/ModuleManifest.Tests.ps1
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,8 @@ $projectRoot = Resolve-Path $PSScriptRoot\..
$moduleRoot = Split-Path (Resolve-Path $projectRoot\*\*.psd1)
$moduleName = Split-Path $moduleRoot -Leaf

$script:manifest = $null

Describe 'Nuget specification Tests' -Tag 'Meta' {

It 'Passes Test-ModuleManifest' {
Expand All @@ -24,7 +26,10 @@ Describe 'Nuget specification Tests' -Tag 'Meta' {
}

It 'nuspec and manifest release notes are same' {
$nuspec.package.metadata.ReleaseNotes | Should Be ($manifest.PrivateData.PSData.ReleaseNotes)
$nuspecReleaseNotes = $nuspec.package.metadata.ReleaseNotes -replace '\s'
$manifestReleaseNotes = $manifest.PrivateData.PSData.ReleaseNotes -replace '\s'

$nuspecReleaseNotes -eq $manifestReleaseNotes | Should Be $true
}

It 'nuspec and manifest projectUrl are same' {
Expand Down
2 changes: 1 addition & 1 deletion tests/examples.Tests.ps1
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@ $projectRoot = Resolve-Path $PSScriptRoot\..
$moduleRoot = Split-Path (Resolve-Path $projectRoot\*\*.psd1)
$moduleName = Split-Path $moduleRoot -Leaf

Import-Module $moduleRoot -Force
#Import-Module $moduleRoot -Force

Describe "Module $moduleName examples Tests" -Tag 'Build' {

Expand Down
2 changes: 1 addition & 1 deletion tests/xpoTools.Tests.ps1
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ $moduleName = Split-Path $moduleRoot -Leaf

$assets = "$projectRoot\tests\assets"

Import-Module $moduleRoot -Force
#Import-Module $moduleRoot -Force

Describe "Basic function feature integration tests for module $moduleName" -Tags Build, Integration {

Expand Down
10 changes: 8 additions & 2 deletions xpoTools.nuspec
Original file line number Diff line number Diff line change
Expand Up @@ -2,13 +2,19 @@
<package xmlns="http://schemas.microsoft.com/packaging/2010/07/nuspec.xsd">
<metadata>
<id>xpoTools</id>
<version>1.0.0</version>
<version>1.0.1</version>
<authors>Sergey Mazurkin</authors>
<licenseUrl>https://github.com/mazzy-ax/xpoTools/blob/master/LICENSE</licenseUrl>
<projectUrl>https://github.com/mazzy-ax/xpoTools</projectUrl>
<requireLicenseAcceptance>false</requireLicenseAcceptance>
<description>Powershell cmdlets to split and to merge XPO files contains AOT objects of Microsoft Dynamics AX (Axapta) 3.0, 4.0, 2009, 2012</description>
<releaseNotes>Initial release</releaseNotes>
<releaseNotes>
## 1.0.1

* Added object types for ax2012 in `Get-XpoType.ps1`. See #1
* Fixed couple bugs and type in `Select-FileName.ps1`, `parallel-split.ps1` and `Import-Xpo.ps1`
* Fixed readme.md
</releaseNotes>
<tags>xpo split merge Axapta Microsoft Dynamics AX</tags>
</metadata>
<files>
Expand Down
4 changes: 2 additions & 2 deletions xpoTools/functions/Import-Xpo.ps1
Original file line number Diff line number Diff line change
Expand Up @@ -4,10 +4,10 @@ using namespace Microsoft.PowerShell.Commands
Set-StrictMode -Version Latest

function Import-Xpo {
[CmdletBinding(DefaultParameterSetName = 'fileName')]
[CmdletBinding(DefaultParameterSetName = 'FileName')]
[OutputType([psObject])]
Param (
[Parameter(Position = 0, Mandatory = $true, ValueFromPipeline = $true, ParameterSetName = 'fileName')]
[Parameter(Position = 0, Mandatory = $true, ValueFromPipeline = $true, ParameterSetName = 'FileName')]
[string[]]$Path,

[Parameter(Position = 0, Mandatory = $true, ValueFromPipeline = $true, ParameterSetName = 'FileInfo')]
Expand Down
47 changes: 44 additions & 3 deletions xpoTools/internal/Get-XpoType.ps1
Original file line number Diff line number Diff line change
Expand Up @@ -17,8 +17,8 @@ $script:xpoTypeInfo = @(
[xpoType]@{AOTpath = @('Menus'); OneLevelAOTPath ='Menus'; UtilType = 16; NodeType = 205; Tag = 'MNU'; FilePrefix = 'Menu'; SubTag = ''}
[xpoType]@{AOTpath = @('Data Dictionary', 'Table Collections'); OneLevelAOTPath ='Table Collections'; UtilType = 48; NodeType = 211; Tag = 'TCL'; FilePrefix = 'TableCollection'; SubTag = ''}
[xpoType]@{AOTpath = @('Queries'); OneLevelAOTPath ='Queries'; UtilType = 20; NodeType = 330; Tag = 'QUE'; FilePrefix = 'Query'; SubTag = ''}
[xpoType]@{AOTpath = @('Shared Projects'); OneLevelAOTPath ='Shared Projects'; UtilType = 37; NodeType = 0; Tag = 'PRN'; FilePrefix = 'SharedProject'; SubTag = 'SHARED'}
[xpoType]@{AOTpath = @('Private Projects'); OneLevelAOTPath ='Private Projects'; UtilType = 38; NodeType = 0; Tag = 'PRN'; FilePrefix = 'Private'; SubTag = 'PRIVATE'}
[xpoType]@{AOTpath = @('Projects', 'Shared'); OneLevelAOTPath ='Shared Projects'; UtilType = 37; NodeType = 0; Tag = 'PRN'; FilePrefix = 'SharedProject'; SubTag = 'SHARED'}
[xpoType]@{AOTpath = @('Projects', 'Private'); OneLevelAOTPath ='Private Projects'; UtilType = 38; NodeType = 0; Tag = 'PRN'; FilePrefix = 'Private'; SubTag = 'PRIVATE'}
[xpoType]@{AOTpath = @('References'); OneLevelAOTPath ='References'; UtilType = 53; NodeType = 822; Tag = 'REF'; FilePrefix = 'Reference'; SubTag = ''}
[xpoType]@{AOTpath = @('Reports'); OneLevelAOTPath ='Reports'; UtilType = 18; NodeType = 202; Tag = 'RG' ; FilePrefix = 'Report'; SubTag = ''}
[xpoType]@{AOTpath = @('Report Libraries'); OneLevelAOTPath ='Report Libraries'; UtilType = 79; NodeType = 1426; Tag = 'RLB' ; FilePrefix = 'ReportLibrary'; SubTag = ''}
Expand All @@ -31,6 +31,8 @@ $script:xpoTypeInfo = @(
[xpoType]@{AOTpath = @('Data Dictionary', 'License Codes'); OneLevelAOTPath ='License Codes'; UtilType = 15; NodeType = 311; Tag = 'LIC'; FilePrefix = 'LicenseCode'; SubTag = ''}
[xpoType]@{AOTpath = @('Data Dictionary', 'Perspectives'); OneLevelAOTPath ='Perspectives'; UtilType = 66; NodeType = 1311; Tag = 'PRS'; FilePrefix = 'Perspective'; SubTag = ''}
[xpoType]@{AOTpath = @('Services'); OneLevelAOTPath ='Services'; UtilType = 76; NodeType = 1321; Tag = 'SVC'; FilePrefix = 'Service'; SubTag = ''}
[xpoType]@{AOTpath = @('Service Groups'); OneLevelAOTPath ='Service Groups'; UtilType = 137; NodeType = 1325; Tag = 'SVG'; FilePrefix = 'ServiceGroup'; SubTag = ''}

[xpoType]@{AOTpath = @('Web', 'Menu Items', 'URL'); OneLevelAOTPath ='Web URL Items'; UtilType = 55; NodeType = 864; Tag = 'WMU'; FilePrefix = 'WebUrlItem'; SubTag = ''}
[xpoType]@{AOTpath = @('Web', 'Menu Items', 'Actions'); OneLevelAOTPath ='Web Action Menu Items'; UtilType = 56; NodeType = 866; Tag = 'WMA'; FilePrefix = 'WebActionItem'; SubTag = ''}
[xpoType]@{AOTpath = @('Web', 'Menus'); OneLevelAOTPath ='Web Menus'; UtilType = 30; NodeType = 806; Tag = 'WME'; FilePrefix = 'WebMenu'; SubTag = ''}
Expand All @@ -54,9 +56,48 @@ $script:xpoTypeInfo = @(
[xpoType]@{AOTpath = @('Workflow', 'Categories'); OneLevelAOTPath ='Workflow Categories'; UtilType = 71; NodeType = 1423; Tag = 'WFC'; FilePrefix = 'WorkflowCategory'; SubTag = ''}
[xpoType]@{AOTpath = @('Help Files'); OneLevelAOTPath ='Help Files'; UtilType = 65; NodeType = 1301; Tag = 'HPF'; FilePrefix = 'HelpFile'; SubTag = ''}

#ax2012
[xpoType]@{AOTpath = @('Parts', 'Info Parts'); OneLevelAOTPath ='Info Parts'; UtilType = 81; NodeType = 1429; Tag = 'IPA'; FilePrefix = 'InfoPart'; SubTag = ''}
[xpoType]@{AOTpath = @('Parts', 'Form Parts'); OneLevelAOTPath ='Form Parts'; UtilType = 82; NodeType = 1431; Tag = 'FPA'; FilePrefix = 'FormPart'; SubTag = ''}
[xpoType]@{AOTpath = @('Parts', 'Cues'); OneLevelAOTPath ='Cues'; UtilType = 98; NodeType = 1543; Tag = 'CUN'; FilePrefix = 'Cue'; SubTag = ''}
[xpoType]@{AOTpath = @('Parts', 'Cue Groups'); OneLevelAOTPath ='Cue Groups'; UtilType = 99; NodeType = 1544; Tag = 'CGN'; FilePrefix = 'CueGroup'; SubTag = ''}
#[xpoType]@{AOTpath = @('SSRS Reports', 'Reports Images'); OneLevelAOTPath ='SSRS Report Images'; UtilType = ; NodeType = 1450; Tag = ; FilePrefix = 'SSRSReportImage'; SubTag = ''}
[xpoType]@{AOTpath = @('SSRS Reports', 'Reports Datasources'); OneLevelAOTPath ='SSRS Report Datasources'; UtilType = 93; NodeType = 1449; Tag = 'SDS'; FilePrefix = 'SSRSReportDataSource'; SubTag = ''}
[xpoType]@{AOTpath = @('SSRS Reports', 'Report Style Templates', 'XY Chart Style Templates'); OneLevelAOTPath ='SSRS Report XY Chart Style Templates'; UtilType = 92; NodeType = 1448; Tag = 'SXT'; FilePrefix = 'SSRSReportXYChartStyleTemplate'; SubTag = ''}
[xpoType]@{AOTpath = @('SSRS Reports', 'Report Style Templates', 'Table Style Templates'); OneLevelAOTPath ='SSRS Report Table Style Templates'; UtilType = 91; NodeType = 1447; Tag = 'STT'; FilePrefix = 'SSRSReportTableStyleTemplate'; SubTag = ''}
[xpoType]@{AOTpath = @('SSRS Reports', 'Report Style Templates', 'Pie Chart Style Templates'); OneLevelAOTPath ='SSRS Report Pie Chart Style Templates'; UtilType = 90; NodeType = 1446; Tag = 'SPT'; FilePrefix = 'SSRSReportPieChartStyleTemplate'; SubTag = ''}
[xpoType]@{AOTpath = @('SSRS Reports', 'Report Style Templates', 'Matrix Style Templates'); OneLevelAOTPath ='SSRS Report Matrix Style Templates'; UtilType = 89; NodeType = 1445; Tag = 'SMT'; FilePrefix = 'SSRSReportMatrixStyleTemplate'; SubTag = ''}
[xpoType]@{AOTpath = @('SSRS Reports', 'Report Style Templates', 'List Style Templates'); OneLevelAOTPath ='SSRS Report List Style Templates'; UtilType = 88; NodeType = 1444; Tag = 'SLT'; FilePrefix = 'SSRSReportListStyleTemplate'; SubTag = ''}
[xpoType]@{AOTpath = @('SSRS Reports', 'Report Style Templates', 'Layout Templates'); OneLevelAOTPath ='SSRS Report Layout Templates'; UtilType = 87; NodeType = 1443; Tag = 'SRL'; FilePrefix = 'SSRSReportLayoutTemplate'; SubTag = ''}
[xpoType]@{AOTpath = @('SSRS Reports', 'Reports'); OneLevelAOTPath ='SSRS Reports'; UtilType = 85; NodeType = 1439; Tag = 'SRP'; FilePrefix = 'SSRSReport'; SubTag = ''}
[xpoType]@{AOTpath = @('SSRS Reports', 'Report Style Templates', 'Matrix Style Templates'); OneLevelAOTPath ='SSRS Report Matrix Style Templates'; UtilType = 89; NodeType = 1445; Tag = 'SMT'; FilePrefix = 'SSRSReportMatrixStyleTemplate'; SubTag = ''}
[xpoType]@{AOTpath = @('SSRS Reports', 'Report Style Templates', 'Matrix Style Templates'); OneLevelAOTPath ='SSRS Report Matrix Style Templates'; UtilType = 89; NodeType = 1445; Tag = 'SMT'; FilePrefix = 'SSRSReportMatrixStyleTemplate'; SubTag = ''}

[xpoType]@{AOTpath = @('Visual Studio Projects', 'Dynamics AX Model Projects'); OneLevelAOTPath ='VSProject Dynamics AX Model Projects'; UtilType = 127; NodeType = 1531; Tag = 'VPY'; FilePrefix = 'VSProject_AXModel'; SubTag = ''}
[xpoType]@{AOTpath = @('Visual Studio Projects', 'C Sharp Projects'); OneLevelAOTPath ='VSProject C Sharp Projects'; UtilType = 128; NodeType = 1531; Tag = 'VPC'; FilePrefix = 'VSProject_CSharp'; SubTag = ''}
#[xpoType]@{AOTpath = @('Visual Studio Projects', 'Visual Basic Projects'); OneLevelAOTPath ='VSProject Visual Basic Projects'; UtilType = 129; NodeType = 1531; Tag = ; FilePrefix = 'VSProject_VB'; SubTag = ''}
#[xpoType]@{AOTpath = @('Visual Studio Projects', 'Web Application Projects'); OneLevelAOTPath ='VSProject Web Application Projects'; UtilType = 130; NodeType = 1531; Tag = ; FilePrefix = 'VSProject_WebApplication'; SubTag = ''}
[xpoType]@{AOTpath = @('Visual Studio Projects', 'Analysis Services Projects'); OneLevelAOTPath ='VSProject Analysis Projects'; UtilType = 131; NodeType = 1531; Tag = 'VPY'; FilePrefix = 'VSProject_Analysis'; SubTag = ''}

[xpoType]@{AOTpath = @('Workflow', 'Automated Tasks'); OneLevelAOTPath ='Workflow Automated Tasks'; UtilType = 95; NodeType = 1409; Tag = 'WFN'; FilePrefix = 'WorkflowAutomatedTask'; SubTag = ''}
[xpoType]@{AOTpath = @('Workflow', 'Providers', 'Hierarchy Assignment'); OneLevelAOTPath ='Workflow Hierarchy Assignment Providers'; UtilType = 139; NodeType = 1397; Tag = 'WFH'; FilePrefix = 'WorkflowHierarchyProvider'; SubTag = ''}
[xpoType]@{AOTpath = @('Workflow', 'Providers', 'Participant Assignment'); OneLevelAOTPath ='Workflow Participant Assignment Providers'; UtilType = 140; NodeType = 1399; Tag = 'WFP'; FilePrefix = 'WorkflowParticipantProvider'; SubTag = ''}
[xpoType]@{AOTpath = @('Workflow', 'Providers', 'Analysis Queue Assignment'); OneLevelAOTPath ='Workflow Queue Providers'; UtilType = 141; NodeType = 1401; Tag = 'WFQ'; FilePrefix = 'WorkflowQueueProvider'; SubTag = ''}
[xpoType]@{AOTpath = @('Workflow', 'Providers', 'Due Date Calculation'); OneLevelAOTPath ='Workflow Due Date Providers'; UtilType = 142; NodeType = 1403; Tag = 'WFD'; FilePrefix = 'WorkflowDueDateProvider'; SubTag = ''}

[xpoType]@{AOTpath = @('Security', 'Code Permissions'); OneLevelAOTPath ='Security Code Permissions'; UtilType = 115; NodeType = 1608; Tag = 'SCP'; FilePrefix = 'SecCodePermission'; SubTag = ''}
[xpoType]@{AOTpath = @('Security', 'Privileges'); OneLevelAOTPath ='Security Privileges'; UtilType = 134; NodeType = 1628; Tag = 'SPV'; FilePrefix = 'SecPrivilege'; SubTag = ''}
[xpoType]@{AOTpath = @('Security', 'Duties'); OneLevelAOTPath ='Security Duties'; UtilType = 135; NodeType = 1630; Tag = 'SDT'; FilePrefix = 'SecDuty'; SubTag = ''}
[xpoType]@{AOTpath = @('Security', 'Roles'); OneLevelAOTPath ='Security Roles'; UtilType = 133; NodeType = 1626; Tag = 'SRO'; FilePrefix = 'SecRole'; SubTag = ''}
[xpoType]@{AOTpath = @('Security', 'Process Cycles'); OneLevelAOTPath ='Security Process Cycles'; UtilType = 136; NodeType = 1636; Tag = 'SPC'; FilePrefix = 'SecProcessCycle'; SubTag = ''}
[xpoType]@{AOTpath = @('Security', 'Policies'); OneLevelAOTPath ='Security Policies'; UtilType = 119; NodeType = 1619; Tag = 'SPO'; FilePrefix = 'SecPolicy'; SubTag = ''}

[xpoType]@{AOTpath = @('Label Files'); OneLevelAOTPath ='Label Files'; UtilType = 117; NodeType = 831; Tag = 'LBL'; FilePrefix = 'LabelFile'; SubTag = ''}
[xpoType]@{AOTpath = @('Help Document Sets'); OneLevelAOTPath ='Help Document Sets'; UtilType = 101; NodeType = 1527; Tag = 'DCS'; FilePrefix = 'DocSet'; SubTag = ''}

#ax30
[xpoType]@{AOTpath = @('Data Dictionary', 'Feature keys'); OneLevelAOTPath ='Feature keys'; UtilType = 39; NodeType = 237; Tag = 'FСС'; FilePrefix = 'FeatureKey'; SubTag = ''}

)

function Get-XpoType {
Expand Down
4 changes: 3 additions & 1 deletion xpoTools/internal/Select-FileName.ps1
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,9 @@ function Select-FileName {
$PathStyleScript = Get-PathStyle -Style $PathStyle
}

$PathParts = $PathParts.Trim() -split '\s*[\\/]\s*'
if( $PathParts ) {
$PathParts = $PathParts.Trim() -split '\s*[\\/]\s*'
}

$filePath = & $PathStyleScript -Item $Item -PathParts $PathParts -Ext $Ext

Expand Down
2 changes: 1 addition & 1 deletion xpoTools/internal/Test-NotEmpty.ps1
Original file line number Diff line number Diff line change
Expand Up @@ -2,5 +2,5 @@
Set-StrictMode -Version Latest

filter Test-NotEmpty {
if ( $_ -and $_ -notmatch '^\s*$' ) { $_ }
if ( $_ -and ($_ -isnot [string] -or $_ -notmatch '^\s*$') ) { $_ }
}
8 changes: 6 additions & 2 deletions xpoTools/xpoTools.psd1
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@
RootModule = 'xpoTools.psm1'

# Version number of this module.
ModuleVersion = '1.0.0'
ModuleVersion = '1.0.1'

# Supported PSEditions
# CompatiblePSEditions = @()
Expand Down Expand Up @@ -103,7 +103,11 @@ PrivateData = @{

# ReleaseNotes of this module
ReleaseNotes = @'
Initial release
## 1.0.1
* Added object types for ax2012 in `Get-XpoType.ps1`. See #1
* Fixed couple bugs and type in `Select-FileName.ps1`, `parallel-split.ps1` and `Import-Xpo.ps1`
* Fixed readme.md
'@

# External dependent modules of this module
Expand Down

0 comments on commit 330d84b

Please sign in to comment.