FiltersHeroes/PolishCookieConsent

Skrypt powershell / bash dla chrome

krystian3w opened this issue · 16 comments

może dałoby radę napisać skrypt co by sprawdzał dostępność nowego wydania, pobrać je, rozpakować do jakieś lokalizacji?

No można by zrobić skrypt bashowy i dodać to do crona. A jest też takie coś https://www.softfluent.com/blog/dev/Be-notified-when-a-new-release-is-created-in-a-GitHub-repository i https://coderelease.io/.

@krystian3w A co jaki czas wg ciebie ten skrypt powinien sprawdzać, co tydzień czy szybciej?

Może być co tydzień.

Ok, a wykonanie skryptu PowerShell zlecam dla @krystian3w 😄. Póki co na razie jest tyle, ja tam raczej za bardzo się nie znam na windowsowych skryptach.

$URI = "https://api.github.com/repos/PolishFiltersTeam/PolishCookieConsent/releases/latest"

$NEW_VERSION_TAG = Invoke-RestMethod -Method Get -Uri $URI | select -expand tag_name  
$NEW_VERSION = "$NEW_VERSION_TAG".Trim("v", " ")



$PATH_INSTALL_EXT=[Environment]::GetFolderPath("UserProfile")+"\Rozszerzenia\PolishCookieConsent"
$OLD_VERSION=cat $PATH_INSTALL_EXT\manifest.json | Select-String -Pattern '"version":'


$PATH_DOWN_EXT=[Environment]::GetFolderPath("UserProfile")+"\Downloads\PolishCookieConsent_v$NEW_VERSION"

OLD_VERSION jest niekompletne i dalej trzeba dorobić pobieranie, wypakowywanie i zrobić Task (https://docs.microsoft.com/en-us/powershell/module/scheduledtasks/new-scheduledtasktrigger?view=win10-ps).

@krystian3w I jak tam postępy 😄?

Brak 😣.

# Download latest 'PolishFiltersTeam/PolishCookieConsent' release from github
# Special thanks for  @MarkTiedemann and @f3l3gy
# credits:
# https://gist.github.com/MarkTiedemann/c0adc1701f3f5c215fc2c2d5b1d5efd3
# https://gist.github.com/f3l3gy/0e89dde158dde024959e36e915abf6bd

$repo = "PolishFiltersTeam/PolishCookieConsent"
$file = "PolishCookieConsent_chromium.zip"


$releases = "https://api.github.com/repos/$repo/releases"

Write-Host Determining latest release
[Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12
$tag = (Invoke-WebRequest -Uri $releases -UseBasicParsing | ConvertFrom-Json)[0].tag_name

$download = "https://github.com/$repo/releases/download/$tag/$file"
$name = $file.Split(".")[0]
$zip = "$name.zip"
$dir = "$name"

Write-Host Dowloading latest release

[Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12
Invoke-WebRequest $download -Out $zip

Write-Host Extracting release files
Expand-Archive $zip -Force

# Cleaning up target dir
#Remove-Item $name -Recurse -Force -ErrorAction SilentlyContinue 

# Moving from temp dir to target dir
#Move-Item $dir\$name -Destination $name -Force

# Removing temp files
Remove-Item $zip -Force
#Remove-Item $dir -Recurse -Force


pause

Jeszcze muszę ogarnąć ten task i wykrywanie już dodanego cyklicznego zadania w harmonogramie.
I by działał z dowolnego folderu zamiast rozszerzenia lub obok tego gdzie mamy dodatek (ścieżka temp i ścieżka właściwa jak podajesz w swoim przykładzie).

@krystian3w Powinno być też sprawdzanie wersji, żeby podmieniał tylko jeżeli jest taka potrzeba.

To jeszcze pomyśle jak to połączyć albo jak dopisać pobieranie, rozpakowywanie, czyszczenie zbędnej paczki zip.

I to dodawanie do zaplanowanych zadań - na razie mam w nim z 30 czerwonych linii o komunikacie błędu.

Nie umiem porównać $NEW_VERSION z $OLD_VERSION, jakoś nie wychodzi mi usunięcie tekstu z stringu.


$NEW_VERSION = '  "version": "' + "$NEW_VERSION_TAG".Trim("v", " ") + '",'

if ($OLD_VERSION[0].Title -eq $NEW_VERSION[0].Title) 
{Write-Host yes } else {Write-Host no }

Ale trochę badziewne

@krystian3w


[Net.ServicePointManager]::SecurityProtocol = 'TLS11','TLS12','ssl3'
$repo = "PolishFiltersTeam/PolishCookieConsent"
$releases = "https://api.github.com/repos/$repo/releases"

$NEW_VERSION = $((Invoke-WebRequest $releases | ConvertFrom-Json)[0].tag_name).TRIM("v", " ")
Write-Output "$NEW_VERSION"

$PATH_DOWN_EXT = [Environment]::GetFolderPath("UserProfile")+"\Downloads\PolishCookieConsent_v$NEW_VERSION"
$PATH_INSTALL_EXT = [Environment]::GetFolderPath("UserProfile")+"\Rozszerzenia\PolishCookieConsent"

$OLD_VERSION = $(cat $PATH_INSTALL_EXT\manifest.json | Select-String -Pattern '"version":').Line.Split(':')[1] -replace '"', "" -replace ',', "" -replace '\s',''
Write-Output "$OLD_VERSION"

$zip = "PolishCookieConsent_chromium.zip"

If ( $NEW_VERSION -gt $OLD_VERSION ) 
{
	new-item $PATH_DOWN_EXT -itemtype directory
	Invoke-WebRequest "https://github.com/$repo/releases/download/v$NEW_VERSION/$zip" -OutFile $PATH_DOWN_EXT/$zip
	Expand-Archive -Path $PATH_DOWN_EXT/$zip -DestinationPath $PATH_INSTALL_EXT -Force
	Remove-Item $PATH_DOWN_EXT -Recurse
	[System.Windows.Forms.MessageBox]::Show("Rozszerzenie Polska Ciasteczkowa Zgoda zostało zaktualizowane. Proszę zrestartować przeglądarkę.", "Sukces")
}
Else
{	
	[System.Windows.Forms.MessageBox]::Show("Aktualnie nie ma nowszej wersji rozszerzenia Polska Ciasteczkowa Zgoda.", "Informacja")
}

To teraz tylko task został.

Aha, najpierw musiałbym taki poleceniami CMD ogarnąć i raczej będą działać w PS.

@krystian3w Skrypt dla PS już gotowy, wymagany jest PS 5.1+ 😄.

A jest sprawdzanie wersji i linki do Uaktualnienia PS do 5.1 na Windows 7 / 8.1?

Nie wiem jaki ma 10 może 6.0.

@krystian3w Tzn. sprawdzanie wersji PowerShella? Nie ma, napisałem tylko w readme, że 5.1+, linków do uaktualnienia też brak.

https://www.microsoft.com/en-us/download/details.aspx?id=54616