Ruff
Paquet d’installation silencieuse pour Ruff
0.15.6-1
Les paquets PREPROD sont des paquets construits via LUTI.
Ils restent généralement 5 jours en PREPROD, après quoi un deuxième scan VirusTotal est effectué pour vérifier que le status n'a pas changé.
Si le paquet réussit ce dernier contrôle, il est promu en PROD et publié sur le store.
- package: tis-ruff-portable
- name: Ruff
- version: 0.15.6-1
- maintainer: Amel FRADJ
- licence: MIT License
- target_os: windows
- architecture: x64
- signature_date:
- size: 10.92 Mo
- homepage : https://docs.astral.sh/ruff/
- depends:
package : tis-ruff-portable
version : 0.15.6-1
architecture : x64
section : base
priority : optional
name : Ruff
categories :
maintainer : Amel FRADJ
description : Ruff aims to be orders of magnitude faster than alternative tools while integrating more functionality behind a single, common interface
depends : tis-vcredist2015-2019
conflicts :
maturity : PREPROD
locale :
target_os : windows
min_wapt_version :
sources :
installed_size :
impacted_process :
description_fr : Ruff vise à être beaucoup plus rapide que les autres outils tout en intégrant davantage de fonctionnalités dans une interface unique et commune
description_pl : Ruff ma być o rzędy wielkości szybszy niż alternatywne narzędzia, jednocześnie integrując więcej funkcji za jednym, wspólnym interfejsem
description_de : Ruff soll um Größenordnungen schneller sein als alternative Tools und gleichzeitig mehr Funktionen hinter einer einzigen, gemeinsamen Schnittstelle integrieren
description_es : Ruff pretende ser mucho más rápido que las herramientas alternativas e integrar más funciones en una única interfaz común
description_pt : O Ruff pretende ser muito mais rápido do que as ferramentas alternativas, integrando mais funcionalidades numa interface única e comum
description_it : Ruff si propone di essere di un ordine di grandezza più veloce rispetto agli strumenti alternativi, integrando al contempo un maggior numero di funzionalità dietro un'unica interfaccia comune
description_nl : Ruff streeft ernaar vele malen sneller te zijn dan alternatieve tools, terwijl het meer functionaliteit integreert achter één gemeenschappelijke interface
description_ru : Ruff стремится быть на порядки быстрее, чем альтернативные инструменты, при этом интегрируя больше функциональности в единый, общий интерфейс
audit_schedule :
editor :
keywords :
licence : MIT License
homepage : https://docs.astral.sh/ruff/
package_uuid : d2a16120-daae-4658-8546-bc11eaacd272
valid_from :
valid_until :
forced_install_on :
changelog :
min_os_version :
max_os_version :
icon_sha256sum : 8fdf178d5c987fc1cf8b20a82793639b4b0c6017515ec0f9aac78b06e3eaacd1
signer : test
signer_fingerprint: b82fc8ef4a4475c0f69ac168176c2bfc58f572eb716c4eadd65e4785c155dd8e
signature_date : 2026-03-12T23:54:44.000000
signed_attributes : package,version,architecture,section,priority,name,categories,maintainer,description,depends,conflicts,maturity,locale,target_os,min_wapt_version,sources,installed_size,impacted_process,description_fr,description_pl,description_de,description_es,description_pt,description_it,description_nl,description_ru,audit_schedule,editor,keywords,licence,homepage,package_uuid,valid_from,valid_until,forced_install_on,changelog,min_os_version,max_os_version,icon_sha256sum,signer,signer_fingerprint,signature_date,signed_attributes
signature : GX4ZIbYcunAp/N5+SLTlGp8MoUWQ+o+Lx55d1cvcnxQZpoPraz34mdroMYiPHoEMw0f6R3Y5Olb6pSwc9FyHUJ09bbeXLZ7B2tn6rgITY/z4xIOcsKM8y20wqlp38qNilICaci3NiOu9a7IAJnBw5/MgaS4fTE7o/VOmOIkbk5Paz8HSEOiLDX3kZi7dsPNxLhBxGilxuYhRGEyDKbZFT6EI36K+d8lJQrNlYX9IxjKDofvCUFV3XeSQfcnrDxEOtFafOVmLzkSJUMJA5z7ICcmeuk/V/UUgnCdPskOxyoQXQPfzDiGhIOq1qA7ggvqIN/XfRugk9V5HUd0WadwqBA==
# -*- coding: utf-8 -*-
from setuphelpers import *
import glob
import os
app_name = "ruff"
app_dir = makepath(programfiles, app_name)
app_path = makepath(app_dir,"ruff.exe")
audit_version = False
def get_installed_version(app_path):
return get_file_properties(app_path).get("FileVersion", "")
def install():
# Find the zip file
zip_name = glob.glob(f"{app_name}*.zip")[0]
unzip_dest = makepath(".", "temp_dezip")
# Remove the temporary directory if it already exists
if isdir(unzip_dest):
remove_tree(unzip_dest)
# Extract the zip file
print(f"Extracting: {zip_name} to: {unzip_dest}")
unzip(zip_name, unzip_dest)
# List the contents of the temporary directory
extracted_files = os.listdir(unzip_dest)
print(f"Contents of the temporary directory after extraction: {extracted_files}")
# Find the name of the extracted directory or the extracted files
if not extracted_files:
raise Exception("No extracted files or directories found")
# If the first extracted item is a directory, use that directory, otherwise use unzip_dest
first_extracted_item = makepath(unzip_dest, extracted_files[0])
if isdir(first_extracted_item):
unzipped_dir = first_extracted_item
else:
unzipped_dir = unzip_dest
# Verify that the extracted directory exists
if not isdir(unzipped_dir):
raise Exception(f"Invalid source directory for copytree2: {unzipped_dir}")
# Remove the old application directory if it exists
if isdir(app_dir):
remove_tree(app_dir)
# Move the new extracted directory or files to the final installation directory
copytree2(unzipped_dir, app_dir, onreplace=default_overwrite)
# Remove the temporary directory
remove_tree(unzip_dest)
# Create custom shortcuts
create_programs_menu_shortcut(app_name, target=app_path)
# Get the desktop path
desktop_path = os.path.expanduser("~\\Desktop")
desktop_shortcut_path = makepath(desktop_path, f"{app_name}.lnk")
# Create the desktop shortcut
print(f"Creating desktop shortcut: {desktop_shortcut_path}")
create_shortcut(desktop_shortcut_path, target=app_path)
print(f"Desktop shortcut created successfully: {desktop_shortcut_path}")
def create_shortcut(shortcut_path, target):
try:
create_desktop_shortcut(shortcut_path, target=target)
return True
except Exception as e:
print(f"Error creating shortcut: {e}")
return False
def audit():
# Auditing software
audit_status = "OK"
installed_version = get_installed_version(app_path)
if Version(installed_version) < Version(control.get_software_version()) and audit_version:
print("%s is installed in version (%s) instead of (%s)" % (app_name, installed_version, control.get_software_version()))
audit_status = "WARNING"
elif isdir(app_dir) and not dir_is_empty(app_dir):
print("%s (%s) is installed" % (app_name, installed_version))
audit_status = "OK"
else:
print("%s is not installed" % app_name)
audit_status = "ERROR"
return audit_status
def uninstall():
# Uninstalling software
killalltasks(ensure_list(control.impacted_process))
if isdir(app_dir):
remove_tree(app_dir)
# Removing shortcuts
desktop_path = os.path.expanduser("~\\Desktop")
desktop_shortcut_path = makepath(desktop_path, f"{app_name}.lnk")
if os.path.exists(desktop_shortcut_path):
print(f"Removing desktop shortcut: {desktop_shortcut_path}")
os.remove(desktop_shortcut_path)
remove_programs_menu_shortcut(app_name)
# Additional check
if os.path.exists(desktop_shortcut_path):
print(f"Failed to remove desktop shortcut: {desktop_shortcut_path}")
else:
print(f"Desktop shortcut removed successfully: {desktop_shortcut_path}")
# -*- coding: utf-8 -*-
from setuphelpers import *
import re
def update_package():
# Declaring local variables
package_updated = False
proxies = get_proxies()
if not proxies:
proxies = get_proxies_from_wapt_console()
dict_arch = {"x64": "x86_64-pc-windows-msvc"}
git_repo = "astral-sh/ruff"
url_api = "https://api.github.com/repos/%s/releases/latest" % git_repo
# Getting latest version information from official sources
print("API used is: %s" % url_api)
json_load = json.loads(wgets(url_api, proxies=proxies))
for download in json_load["assets"]:
if download["browser_download_url"].endswith(".zip") and dict_arch[control.architecture] in download["browser_download_url"]:
url_dl = download["browser_download_url"]
version = json_load["tag_name"].replace("v", "")
filename = download["name"]
break
if not isfile(filename):
package_updated = True
wget(url_dl,filename,proxies=proxies)
#nettoyer les fichiers temporaires
for f in glob.glob('*.zip'):
if f != filename:
remove_file(f)
control.set_software_version(version)
control.save_control_to_wapt()
01ca7fe94636e5a08fcb73849d3b5df25d51e2c82f4dd1a08f01798b25899819 : WAPT/certificate.crt
bb688edef61a7f7560f0d75db5e5723b1dafd15438367fd99370516e11e41672 : WAPT/control
8fdf178d5c987fc1cf8b20a82793639b4b0c6017515ec0f9aac78b06e3eaacd1 : WAPT/icon.png
f326dd4b815d8f714d591b1b1ecdc55e524d8af932b9ee677eb7aa7cce90d8bd : luti.json
34548ff94a9f52c96c75672d34eee6068a4bf4fdcb3ca12d10e9f4b8abedad96 : ruff-x86_64-pc-windows-msvc.zip
d7c4a584d06986b7d121d9df5438c5a3e320e4955b1eca7d2ad3caf717884e0f : setup.py
a559eadf3c21df3379fb037f22155b1f68849996aa49b811e165250d3f8b0c79 : update_package.py