nxtools.psd1

#
# Module manifest for module 'nxtools'
#
# Generated by: GaelColas
#
# Generated on: 08/08/2020
#

@{

    # Script module or binary module file associated with this manifest.
    RootModule           = 'nxtools.psm1'

    # Version number of this module.
    ModuleVersion        = '0.2.0'

    # Supported PSEditions
    CompatiblePSEditions = @('Core')

    # ID used to uniquely identify this module
    GUID                 = 'b3f15f9d-94f2-44ce-8491-6a5dbb585c44'

    # Author of this module
    Author               = 'Gael Colas'

    # Company or vendor of this module
    CompanyName          = 'SynEdgy Limited'

    # Copyright statement for this module
    Copyright            = '(c) SynEdgy Limited. All rights reserved.'

    # Description of the functionality provided by this module
    Description          = 'Collection of Posix tools wrappers.'

    # Minimum version of the PowerShell engine required by this module
    PowerShellVersion    = '6.2'

    # Name of the PowerShell host required by this module
    # PowerShellHostName = ''

    # Minimum version of the PowerShell host required by this module
    # PowerShellHostVersion = ''

    # Minimum version of Microsoft .NET Framework required by this module. This prerequisite is valid for the PowerShell Desktop edition only.
    # DotNetFrameworkVersion = ''

    # Minimum version of the common language runtime (CLR) required by this module. This prerequisite is valid for the PowerShell Desktop edition only.
    # ClrVersion = ''

    # Processor architecture (None, X86, Amd64) required by this module
    # ProcessorArchitecture = ''

    # Modules that must be imported into the global environment prior to importing this module
    RequiredModules = @()

    # Assemblies that must be loaded prior to importing this module
    # RequiredAssemblies = @()

    # Script files (.ps1) that are run in the caller's environment prior to importing this module.
    # ScriptsToProcess = @()

    # Type files (.ps1xml) to be loaded when importing this module
    # TypesToProcess = @()

    # Format files (.ps1xml) to be loaded when importing this module
    # FormatsToProcess = @()

    # Modules to import as nested modules of the module specified in RootModule/ModuleToProcess
    # NestedModules = @()

    # Functions to export from this module, for best performance, do not use wildcards and do not delete the entry, use an empty array if there are no functions to export.
    FunctionsToExport    = @('Compress-nxArchive','Expand-nxArchive','Compare-nxMode','Get-nxChildItem','Get-nxItem','Set-nxGroupOwnership','Set-nxMode','Set-nxOwner','Get-nxDistributionInfo','Get-nxKernelInfo','Get-nxLinuxStandardBaseRelease','Add-nxLocalGroupMember','Add-nxLocalUserToGroup','Disable-nxLocalUser','Enable-nxLocalUser','Get-nxEtcShadow','Get-nxLocalGroup','Get-nxLocalUser','Get-nxLocalUserMemberOf','New-nxLocalGroup','New-nxLocalUser','Remove-nxLocalGroup','Remove-nxLocalGroupMember','Remove-nxLocalUser','Set-nxLocalGroup','Set-nxLocalGroupGID','Set-nxLocalGroupMember','Set-nxLocalUser')

    # Cmdlets to export from this module, for best performance, do not use wildcards and do not delete the entry, use an empty array if there are no cmdlets to export.
    CmdletsToExport      = ''

    # Variables to export from this module
    VariablesToExport    = ''

    # Aliases to export from this module, for best performance, do not use wildcards and do not delete the entry, use an empty array if there are no aliases to export.
    AliasesToExport      = '*'

    # DSC resources to export from this module
    DscResourcesToExport = @('nxFile','nxGroup','nxUser','GC_LinuxGroup')

    # List of all modules packaged with this module
    # ModuleList = @()

    # List of all files packaged with this module
    # FileList = @()

    # Private data to pass to the module specified in RootModule/ModuleToProcess. This may also contain a PSData hashtable with additional module metadata used by PowerShell.
    PrivateData          = @{

        PSData = @{

            # Tags applied to this module. These help with module discovery in online galleries.
            Tags = @('linux', 'sysadmin', 'helper')

            # A URL to the license for this module.
            LicenseUri   = 'https://github.com/SynEdgy/nxtools/blob/main/LICENSE'

            # A URL to the main website for this project.
            ProjectUri   = 'https://github.com/SynEdgy/nxtools/'

            # A URL to an icon representing this module.
            IconUri      = 'https://raw.githubusercontent.com/SynEdgy/nxtools/main/source/assets/pstux.png'

            # ReleaseNotes of this module
            ReleaseNotes = '## [0.2.0-preview0003] - 2021-05-24

### Added

- Initial addition of commandd:
    - `Get-nxKernelInfo`: A simple wrapper around `uname -a`.
    - `Get-nxLinuxStandardBaseRelease`: A quick wrap of `lsb_release -a` command (this `lsb_release` must be present on the system).
    - `Get-nxDistributionInfo`: Parsing information found in `/etc/*-release`.
    - `Get-nxItem`: Similar to Get-Item for file system provider but on Linux using `ls -d`.
    - `Get-nxChildItem`: Similar to Get-ChildItem for the FileSystem provider but on Linux, this will use the `ls` command.
    - `Compare-nxFileSystemMode`: An easy way to compare two sets of unix file system permissions.
        You can use a Symbolic notation (`rwxrwxrwx`), or the numericla permission (`777` or `0777`).
    - `Get-nxLocalUser`: Read and parse local users from `/etc/passwd`.
    - `New-nxLocalUser`: Create a new Local User using `useradd`.
    - `Set-nxLocalUser`: Set the properties of a Local User using `usermod`.
    - `New-nxLocalGroup`: Create a new Local Group using `groupadd`.
    - `Get-nxLocalGroup`: Read and parse local groups from `/etc/group`.
    - `Set-nxLocalGroup`: Set the properties of an existing local group using `gpasswd`.
    - `Get-nxLocalUserMemberOf`: Get the groups (`[nxLocalGroup[]]`) a Local user is member of.
    - `Add-nxLocalGroupMember`: Add users to a group using `gpasswd`.
    - `Set-nxGroupOwnership`: Set the group owning the files and folders using `chgrp`.
    - `Add-nxLocalUserToGroup`: Add user to groups using `usermod`.
    - `Set-nxMode`: Set files and folder mode (permisisons) using `chmod`.
    - `Set-nxOwner`: Set the owner for files and folders (and optionally the group ownership) using `chown`.
    - `Set-nxLocalGroupMember`: Set (and replace) the members of an existing group using `gpasswd`.
    - `Remove-nxLocalUser`: Delete a Local user using `userdel`.
    - `Remove-nxLocalGroupMember`: Removes users from a local group using `gpasswd`.
    - `Remove-nxLocalGroup`: Delete a local group using `groupdel`.
    - `Get-nxEtcShadow`: Get a user''s `/etc/shadow` entry if it exists.
    - `Disable-nxLocalUser`: Lock a user''s password, Expire its account and replace its Shell to `/sbin/nologin`.
    - `Enable-nxLocalUser`: Unlock a user''s password, can set the ExpireOn date and replace the Shell from a value from `/etc/shells`.
    - `Compress-nxArchive`: Compress files and folders using the `tar` command.
    - `Expand-nxArchive`: Uncompress or read files and folder from an archive using the `tar` command.

- Supporting Enums and Classes for File System permissions.
    - In order to make interpretation, Comparison, and manipulation of File system permissions easier,
      the module implements a few classes and enum to make that work.

- DscResource:
    - `nxUser`: Simple resource to manage [nxLocalUser] accounts.
    - `nxGroup`: Simple resource to manage [nxLocalGroup] and group members.
    - `nxFile`: Simple resource to manage [nxItem] (file or directory).

### Changed

- Moved source in subfolders per categories (File/Folders, User/Groups).
- Testing using Git Tools task (the new GitVersion).

### Fixed

- Fixed the main branch to release from to be `main` instead of `master`.
- Removing the ''Configure winrm'' tasks (as we''re only running on linux).
- Added the DocGenerator tasks to build.yaml.
- Fixed casing to `nxtools` because I can''t change PSGallery package casing.
- Removing dupplicate files.
'


            # Prerelease string of this module
            Prerelease   = 'preview0003'

            # Flag to indicate whether the module requires explicit user acceptance for install/update/save
            # RequireLicenseAcceptance = $false

            # External dependent modules of this module
            # ExternalModuleDependencies = @()

        } # End of PSData hashtable

    } # End of PrivateData hashtable

    # HelpInfo URI of this module
    # HelpInfoURI = ''

    # Default prefix for commands exported from this module. Override the default prefix using Import-Module -Prefix.
    DefaultCommandPrefix = ''

}