-
Notifications
You must be signed in to change notification settings - Fork 2
/
pack.py
58 lines (44 loc) · 1.97 KB
/
pack.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
# Chocolatey package version checking and packing of package
# Written by Hadrien Dussuel
import os
import subprocess
import json
import urllib.request
import hashlib
import zipfile
import pathlib
import shutil
import functions as func
# Routine de vérification et de paquetage automatique en fonction de la version connue sur le site de Chocolatey
packages = os.listdir('src/')
print(packages)
for p in packages:
print("Checking -> " + p)
# versionPublished = subprocess.getoutput('choco search -r --pre ' + p).split('|')[1]
versionLocalData = func.GetLocalData(p)
versionLocal = versionLocalData["version"]
if not os.path.exists("packed/" + p + "." + versionLocal + ".nupkg"):
print("Packing -> " + p + " | " + versionLocal)
# Create the temp directory
if not os.path.isdir("tmp/"):
os.mkdir("tmp")
# Calculate checksums
urllib.request.urlretrieve(versionLocalData["url"], "tmp/tmpfile") # DEBUG
checksum = func.GetFileChecksum("tmp/tmpfile")
# Loading source files
fileNuspec = func.GetFileContent("src/" + p + "/" + p + ".nuspec")
fileInstall = func.GetFileContent("src/" + p + "/tools/chocolateyinstall.ps1")
# Replace variables
fileNuspec = fileNuspec.replace("{{version}}", versionLocal)
fileInstall = fileInstall.replace("{{checksum}}", checksum).replace("{{url}}", versionLocalData["url"])
if not os.path.isdir("tmp/tools"):
os.mkdir("tmp/tools")
func.WriteFileContent("tmp/" + p + ".nuspec", fileNuspec)
func.WriteFileContent("tmp/tools/chocolateyinstall.ps1", fileInstall)
# Execute the packing
choco = subprocess.Popen(["choco", "pack"], cwd="tmp/")
choco.wait()
# Move the package to the packed directory
os.rename("tmp/" + p + "." + versionLocal + ".nupkg", "packed/" + p + "." + versionLocal + ".nupkg")
# Clean up temp directory
shutil.rmtree('tmp/')