Lesspass.psm1

function Get-LessPass {
    [CmdletBinding()]
    [alias("lesspass")]
    param(
        [string]$site,
        [string]$login,
        [string][Parameter(Mandatory=$true)]$master_password,
        [Alias('l')][Switch]$lowercase,
        [Alias('u')][Switch]$uppercase,
        [Alias('d')][Switch]$digits,
        [Alias('s')][Switch]$symbols,
        [Alias('nl')][Switch]$noLowercase,
        [Alias('nu')][Switch]$noUppercase,
        [Alias('nd')][Switch]$noDigits,
        [Alias('ns')][Switch]$noSymbols,
        [ValidateRange(5, 35)]$length=16,
        $counter=1,
        # $prompt,
        # $clipboard,
        [Switch]$version
    )
    process {
        if ($version) {
            (Get-Module Lesspass).Version | Write-Host
            return 
        }
        $Error, $HelpMessage = Confirm-Arguments @PSBoundParameters
        if ($Error) {
            Write-Host $HelpMessage
        }

        
        $PasswordProfile = New-Profile @PSBoundParameters
        
        return GeneratePassword $PasswordProfile $master_password
        # todo: if -Prompt flag is present copy to clipboard
        # todo: request master_password if not provided
        # todo: if -Clipboard flag is present copy to clipboard
    }
    end {
    }

<#
.SYNOPSIS
LessPass - stateless password generator

.LINK
Website: http://lesspass.com/
Github: https://github.com/lesspass/lesspass/

.DESCRIPTION
LessPass computes a unique password using a site, login and a master password.
You don't need to sync a password vault across every device because LessPass works offline!

LINUX REQUIREMENT:
The `xclip` utility must be installed to support the copy to clipboard feature;
Debian-based platforms such as Ubuntu/Linux Mint, install it with:

    sudo apt install xclip

.PARAMETER Site
Site used in the password generation (required)

.PARAMETER Login
Login used in the password generation
default to '' if not provided.

.PARAMETER MasterPassword
Master password used in password generation
default to LESSPASS_MASTER_PASSWORD env variable or prompt

.PARAMETER Lowercase
Add lowercase in password

.PARAMETER Uppercase
Add uppercase in password

.PARAMETER Digits
Add digits in password

.PARAMETER Symbols
Add symbols in password

.PARAMETER NoLowercase
Remove lowercase from password

.PARAMETER NoUppercase
Remove uppercase from password

.PARAMETER NoDigits
Remove digits from password

.PARAMETER NoSymbols
Remove symbols from password

.PARAMETER Length
Password length (default: 16)

.PARAMETER Counter
Get a new version for an existing password (default: 1)

# .PARAMETER Prompt
# Interactively prompt SITE and LOGIN (prevent leak to shell history)

# .PARAMETER Clipboard
# Copy generated password to clipboard rather than displaying it.
# Need pbcopy (OSX), xsel or xclip (Linux) or clip (Windows).

# .PARAMETER Version
# lesspass version number

.EXAMPLE
lesspass site login masterpassword -noSymbols

No symbols

.EXAMPLE
lesspass site login masterpassword -L -U -D

No symbols shortcut

.EXAMPLE
lesspass site login masterpassword -D -L 8

Only digits and length of 8

# .EXAMPLE # is it applicable to Powershell?
# LESSPASS_MASTER_PASSWORD="masterpassword" lesspass site login

# Master password in env variable
#>

}

Export-ModuleMember -Function Get-LessPass -Alias lesspass