Skip to content

Instantly share code, notes, and snippets.

@carloscabo
Created March 10, 2024 08:19
Show Gist options
  • Save carloscabo/383b69c365d62d40ac523ab0b6424baa to your computer and use it in GitHub Desktop.
Save carloscabo/383b69c365d62d40ac523ab0b6424baa to your computer and use it in GitHub Desktop.
Script de PowerShell para taggear, añadir la versión en un fichero y pushear al servidor release
# Script de PowerShell para taggear, añadir la versión en un fichero y pushear al servidor release
param (
[string]$command,
[string]$versionString
)
# Ruta del archivo
$file = ".\resources\views\includes\version.blade.php"
# Función para mostrar el contenido del archivo
function ShowContent {
try {
$content = Get-Content $file -Raw
$trimmedContent = $content.Trim()
return $trimmedContent
} catch {
Write-Host "Error: No se pudo encontrar el archivo $file. Por favor, crea el archivo o corrige la ruta en el script."
}
}
# Función para obtener la última versión numérica del archivo
function GetLastNumericVersion {
$content = ShowContent
$regex = "\d+(\d+)*"
$lastVersion = [regex]::Matches($content, $regex) | ForEach-Object { $_.Value } | Select-Object -Last 1
$lastVersion
}
function IncrementVersionAndConfirm {
$content = ShowContent
$lastNumericVersion = GetLastNumericVersion
if ($content -eq $null) {
$content = "0"
}
# Buscar la última secuencia numérica consecutiva
$matches = [Regex]::Matches($content, '\d+')
if ($matches.Count -gt 0) {
# Obtener la última secuencia numérica
$lastNumeric = $matches[$matches.Count - 1].Value
# Obtener la posición de la última secuencia numérica
$lastNumericIndex = $matches[$matches.Count - 1].Index
# Separar el prefix y postfix
$prefix = $content.Substring(0, $lastNumericIndex)
$postfix = $content.Substring($lastNumericIndex + $lastNumeric.Length)
# Incrementar la parte numérica
$newNumeric = [int]$lastNumeric + 1
# Construir la nueva versión
$newVersion = "$prefix$newNumeric$postfix"
Write-Host "Versión anterior: $content"
Write-Host "Nueva versión propuesta: $newVersion"
$confirm = Read-Host "¿Deseas utilizar esta nueva versión? [Y/n]"
if ($confirm -eq 'Y' -or $confirm -eq 'y' -or $confirm -eq '') {
return $newVersion
} else {
Write-Host "No se ha confirmado la nueva versión."
exit
}
} else {
Write-Host "Error: No se encontró ninguna parte numérica en la versión."
exit
}
}
# Función para actualizar la versión en el archivo y realizar el commit y tag en git
function UpdateVersionAndCommit {
param (
[string]$versionToUpdate
)
# Actualizar la versión en el archivo
Write-Host "UpdateVersionAndCommit: $versionToUpdate"
Set-Content -Path $file -Value "$versionToUpdate"
# Realizar commit en git
git add --all
# git add $file
git commit -m $versionToUpdate
git push origin $(git rev-parse --abbrev-ref HEAD)
# Crear y pushear el tag en git
git tag $versionToUpdate
# git push origin $versionToUpdate
git push origin --tags
}
# Manejar comandos
if ($command -eq $null -or $command -eq "show") {
ShowContent
} elseif ($command -eq "version") {
if (-not $versionString) { # $versionString -eq $null
$versionString = IncrementVersionAndConfirm
}
if ($versionString -ne $null) {
UpdateVersionAndCommit -versionToUpdate $versionString
}
} else {
Write-Host "Comando no válido."
Write-Host "Uso: .\tag.ps1 show o .\tag.ps1 version <version_string>"
ShowContent
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment