45 lines
No EOL
1.4 KiB
Python
45 lines
No EOL
1.4 KiB
Python
import os
|
|
import re
|
|
import wx
|
|
|
|
|
|
def count_versions(folder_path):
|
|
versions = set()
|
|
version_pattern = re.compile(r'^(\d+\.\d+\.\d+)')
|
|
for file_name in os.listdir(folder_path):
|
|
match = version_pattern.match(file_name)
|
|
if match:
|
|
versions.add(match.group(1))
|
|
return len(versions)
|
|
|
|
|
|
def keep_latest_versions(folder_path, num_versions_to_keep=2):
|
|
version_files = {}
|
|
version_pattern = re.compile(r'^(\d+\.\d+\.\d+)')
|
|
for file_name in os.listdir(folder_path):
|
|
match = version_pattern.match(file_name)
|
|
if match:
|
|
version = match.group(1)
|
|
if version not in version_files:
|
|
version_files[version] = []
|
|
version_files[version].append(file_name)
|
|
|
|
versions_sorted = sorted(version_files.keys(), reverse=True)
|
|
versions_to_remove = versions_sorted[num_versions_to_keep:]
|
|
|
|
for version in versions_to_remove:
|
|
for file_name in version_files[version]:
|
|
os.remove(os.path.join(folder_path, file_name))
|
|
|
|
def get_app_data_folder():
|
|
app = wx.GetApp()
|
|
if app is None:
|
|
app = wx.App(False)
|
|
standard_paths = wx.StandardPaths.Get()
|
|
app_data_dir = standard_paths.GetAppDocumentsDir() + "/BTClockOTA"
|
|
app.Destroy()
|
|
return app_data_dir
|
|
else:
|
|
standard_paths = wx.StandardPaths.Get()
|
|
app_data_dir = standard_paths.GetAppDocumentsDir() + "/BTClockOTA"
|
|
return app_data_dir |