Skip to content

Commit 35a2c5d

Browse files
Merge pull request #142 from HPCNow:main
froster v0.18.0
2 parents efdc4d7 + 379d6e9 commit 35a2c5d

File tree

4 files changed

+114
-124
lines changed

4 files changed

+114
-124
lines changed

Diff for: froster/froster.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -5294,7 +5294,7 @@ def _walker(self, top, skipdirs=['.snapshot',]):
52945294
except Exception:
52955295
print_error()
52965296

5297-
def _walkerr(oserr):
5297+
def _walkerr(self, oserr):
52985298
""" error handler for os.walk """
52995299
print_error(str(oserr))
53005300

Diff for: install.sh

+72-105
Original file line numberDiff line numberDiff line change
@@ -7,11 +7,19 @@ set -e
77
### VARIABLES ###
88
#################
99

10-
date_YYYYMMDDHHMMSS=$(date +%Y%m%d%H%M%S) # Get the current date in YYYYMMDD format
11-
1210
XDG_DATA_HOME=${XDG_DATA_HOME:-$HOME/.local/share}
1311
XDG_CONFIG_HOME=${XDG_CONFIG_HOME:-$HOME/.config}
1412

13+
date_YYYYMMDDHHMMSS=$(date +%Y%m%d%H%M%S) # Get the current date in YYYYMMDD format
14+
15+
froster_data_dir=${XDG_DATA_HOME}/froster
16+
froster_all_data_backups=${XDG_DATA_HOME}/froster_backups
17+
froster_data_backup_dir=${froster_all_data_backups}/froster_${date_YYYYMMDDHHMMSS}.bak
18+
19+
froster_config_dir=${XDG_CONFIG_HOME}/froster
20+
froster_all_config_backups=${XDG_CONFIG_HOME}/froster_backups
21+
froster_config_backup_dir=${froster_all_config_backups}/froster_${date_YYYYMMDDHHMMSS}.bak
22+
1523
#####################
1624
### ERROR HANDLER ###
1725
#####################
@@ -20,32 +28,22 @@ XDG_CONFIG_HOME=${XDG_CONFIG_HOME:-$HOME/.config}
2028
trap 'catch $? $BASH_COMMAND' EXIT
2129

2230
catch() {
23-
if [ "$1" != "0" ]; then
24-
# error handling goes here
2531

26-
if [[ $(command -v pipx) ]]; then
27-
if pipx list | grep 'froster' >/dev/null 2>&1; then
28-
echo " Uninstalling froster..."
29-
pipx uninstall froster >/dev/null 2>&1
30-
echo " ...uninstalled"
31-
fi
32-
fi
32+
if [ "$1" != "0" ]; then
33+
echo -e "\nError: $2: Installation failed!\n"
3334

3435
# Restore (if any) backed up froster config files
35-
if [[ -d ${XDG_CONFIG_HOME}/froster_${date_YYYYMMDDHHMMSS}.bak ]]; then
36-
mv -f ${XDG_CONFIG_HOME}/froster_${date_YYYYMMDDHHMMSS}.bak ${XDG_CONFIG_HOME}/froster >/dev/null 2>&1
36+
if [[ -d ${froster_config_backup_dir} ]]; then
37+
mv -f ${froster_config_backup_dir} ${froster_config_dir} >/dev/null 2>&1
3738
fi
3839

3940
# Restore (if any) backed up froster data files
40-
if [[ -d ${XDG_DATA_HOME}/froster_${date_YYYYMMDDHHMMSS}.bak ]]; then
41-
mv -f ${XDG_DATA_HOME}/froster_${date_YYYYMMDDHHMMSS}.bak ${XDG_DATA_HOME}/froster >/dev/null 2>&1
41+
if [[ -d ${froster_data_backup_dir} ]]; then
42+
mv -f ${froster_data_backup_dir} ${froster_data_dir} >/dev/null 2>&1
4243
fi
4344

4445
rm -rf ${pwalk_path} >/dev/null 2>&1
4546
rm -rf rclone-current-linux-*.zip rclone-v*/ >/dev/null 2>&1
46-
47-
echo
48-
echo "Installation failed!"
4947
fi
5048
}
5149

@@ -71,7 +69,6 @@ spinner() {
7169
fi
7270
}
7371

74-
7572
#################
7673
### FUNCTIONS ###
7774
#################
@@ -213,79 +210,46 @@ check_dependencies() {
213210
# Backup older installations (if any) but keep the froster-archive.json and config.ini files
214211
backup_old_installation() {
215212

216-
# Back up (if any) older froster data files
217-
if [[ -d ${XDG_DATA_HOME}/froster ]]; then
213+
# Make sure we did not left any backup files from previous updates.
214+
# Move all backups to the data or config backup directories
215+
mkdir -p ${froster_all_data_backups}
216+
mkdir -p ${froster_all_config_backups}
217+
find ${XDG_DATA_HOME} -maxdepth 1 -type d -name "froster_*.bak" -print0 | xargs -0 -I {} mv {} $froster_all_data_backups
218+
find ${XDG_CONFIG_HOME} -maxdepth 1 -type d -name "froster_*.bak" -print0 | xargs -0 -I {} mv {} $froster_all_config_backups
218219

219-
backup=true
220220

221-
echo
222-
echo "Backing up older froster installation..."
221+
# Back up (if any) older froster data files
222+
if [[ -d ${froster_data_dir} ]]; then
223+
224+
echo -e "\nBacking Froster data folder ..."
223225

224226
# Copy the froster directory to froster_YYYYMMDD.bak
225-
cp -rf ${XDG_DATA_HOME}/froster ${XDG_DATA_HOME}/froster_${date_YYYYMMDDHHMMSS}.bak
227+
cp -rf ${froster_data_dir} ${froster_data_backup_dir}
226228

227-
echo " Data back up at ${XDG_DATA_HOME}/froster_${date_YYYYMMDDHHMMSS}.bak"
229+
echo " source: ${froster_data_dir}"
230+
echo " destination: ${froster_data_backup_dir}"
231+
232+
echo "...data backed up"
228233
fi
229234

230235
# Back up (if any) older froster configurations
231-
if [[ -d ${XDG_CONFIG_HOME}/froster ]]; then
236+
if [[ -d ${froster_config_dir} ]]; then
232237

233-
if [ "$backup" != "true" ]; then
234-
echo
235-
echo "Backing up older froster installation..."
236-
fi
238+
echo -e "\nBacking Froster config folder ..."
237239

238-
backup=true
240+
echo " source: ${froster_config_dir}"
241+
echo " destination: ${froster_config_backup_dir}"
239242

240243
# Move the froster config directory to froster.bak
241-
cp -rf ${XDG_CONFIG_HOME}/froster ${XDG_CONFIG_HOME}/froster_${date_YYYYMMDDHHMMSS}.bak
242-
243-
echo " Config back up at ${XDG_CONFIG_HOME}/froster_${date_YYYYMMDDHHMMSS}.bak"
244-
fi
245-
246-
if [ "$backup" = "true" ]; then
247-
echo "...older froster installation backed up"
248-
fi
249-
250-
# Check if froster is already installed, if so uninstall it
251-
if which froster >/dev/null 2>&1; then
252-
echo
253-
echo "Uninstalling existing froster installation..."
254-
255-
if pipx list | grep froster >/dev/null 2>&1; then
256-
pipx uninstall froster >/dev/null 2>&1 &
257-
spinner $!
258-
fi
244+
cp -rf ${froster_config_dir} ${froster_config_backup_dir}
259245

260-
echo "...froster uninstalled"
246+
echo "...config backed up"
261247
fi
262-
263-
# Keep the froster-archives.json file (if any)
264-
if [[ -f ${XDG_DATA_HOME}/froster_${date_YYYYMMDDHHMMSS}.bak/froster-archives.json ]]; then
265-
echo
266-
echo "Restoring Froster archives json data from backup..."
267-
268-
# Create the froster directory if it does not exist
269-
mkdir -p ${XDG_DATA_HOME}/froster
270-
271-
# Copy the froster-archives.json file to the data directory
272-
cp -f ${XDG_DATA_HOME}/froster_${date_YYYYMMDDHHMMSS}.bak/froster-archives.json ${XDG_DATA_HOME}/froster/froster-archives.json
273-
274-
echo "...restored"
275-
fi
276-
277-
# Remove old files
278-
rm -rf ${XDG_DATA_HOME}/froster
279-
rm -rf ${XDG_CONFIG_HOME}/froster
280-
rm -f ${HOME}/.local/bin/froster
281-
rm -f ${HOME}/.local/bin/froster.py
282-
rm -f ${HOME}/.local/bin/s3-restore.py
283248
}
284249

285250
install_pipx() {
286251

287-
echo
288-
echo "Installing pipx..."
252+
echo -e "\nInstalling pipx..."
289253

290254
# Check if pipx is installed
291255
if [[ -z $(command -v pipx) ]]; then
@@ -306,67 +270,72 @@ install_pipx() {
306270
else
307271
echo "...pipx already installed"
308272

309-
echo
310-
echo "Upgrading pipx..."
273+
echo -e "\nUpgrading pipx..."
311274
pipx upgrade pipx >/dev/null 2>&1 &
312275
spinner $!
313276
echo "...pipx upgraded"
314277

315-
echo
316-
echo "Ensuring path for pipx..."
278+
echo -e "\nEnsuring path for pipx..."
317279
pipx ensurepath >/dev/null 2>&1
318280
echo "...path ensured"
319281
fi
320282

321283
# Check if PIPX_BIN_DIR is set and not empty, otherwise default to ~/.local/bin
322284
PIPX_BIN_DIR="${PIPX_BIN_DIR:-$HOME/.local/bin}"
323-
echo
324-
echo "Adding $PIPX_BIN_DIR to PATH for this installation session"
285+
echo -e "\nAdding $PIPX_BIN_DIR to PATH for this installation session"
325286
export PATH="$PATH:$PIPX_BIN_DIR"
326287
}
327288

328289
install_froster() {
329290

330-
echo
331-
echo "Installing latest version of froster..."
291+
echo -e "\nRemoving old froster files..."
292+
rm -rf ${froster_data_dir}
293+
rm -rf ${froster_config_dir}
294+
rm -f ${HOME}/.local/bin/froster
295+
rm -f ${HOME}/.local/bin/froster.py
296+
rm -f ${HOME}/.local/bin/s3-restore.py
297+
echo "...old froster files removed"
332298

333299
if [ "$LOCAL_INSTALL" = "true" ]; then
334-
echo " Installing from the current directory in --editable mode"
300+
echo -e "\nInstalling Froster from the current directory in --editable mode..."
335301
pip install -e . >/dev/null 2>&1 &
336302
spinner $!
303+
echo "...Froster installed"
337304
else
338-
echo " Installing from PyPi package repository"
305+
if pipx list | grep froster >/dev/null 2>&1; then
306+
echo -e "\nUninstalling old Froster..."
307+
pipx uninstall froster >/dev/null 2>&1
308+
echo "...old Froster uninstalled"
309+
fi
310+
311+
echo -e "\nInstalling Froster from PyPi package repository"
339312
pipx install froster >/dev/null 2>&1 &
340313
spinner $!
314+
echo "...Froster installed"
341315
fi
342316

343-
echo " Installation path: $(which froster)"
344-
345317
# Keep the config.ini file (if any)
346-
if [[ -f ${XDG_CONFIG_HOME}/froster_${date_YYYYMMDDHHMMSS}.bak/config.ini ]]; then
318+
if [[ -f ${froster_config_backup_dir}/config.ini ]]; then
347319
# Create the froster directory if it does not exist
348-
mkdir -p ${XDG_CONFIG_HOME}/froster
320+
mkdir -p ${froster_config_dir}
349321

350322
# Copy the config file to the data directory
351-
cp -f ${XDG_CONFIG_HOME}/froster_${date_YYYYMMDDHHMMSS}.bak/config.ini ${XDG_CONFIG_HOME}/froster/config.ini
323+
cp -f ${froster_config_backup_dir}/config.ini ${froster_config_dir}
352324
fi
353325

354326
# Keep the froster-archives.json file (if any)
355-
if [[ -f ${XDG_CONFIG_HOME}/froster_${date_YYYYMMDDHHMMSS}.bak/froster-archives.json ]]; then
327+
if [[ -f ${froster_data_backup_dir}/froster-archives.json ]]; then
356328
# Create the froster directory if it does not exist
357-
mkdir -p ${XDG_DATA_HOME}/froster
329+
mkdir -p ${froster_data_dir}
358330

359331
# Copy the froster-archives.json file to the data directory
360-
cp -f ${XDG_CONFIG_HOME}/froster_${date_YYYYMMDDHHMMSS}.bak/froster-archives.json ${XDG_DATA_HOME}/froster/froster-archives.json
332+
cp -f ${froster_data_backup_dir}/froster-archives.json ${froster_data_dir}
361333
fi
362-
363-
echo "...froster installed"
364334
}
365335

366336
install_pwalk() {
367337

368-
echo
369-
echo "Installing third-party dependency: pwalk... "
338+
echo -e "\nInstalling third-party dependency: pwalk... "
370339

371340
# Variables of pwalk third-party tool froster is using
372341
pwalk_commit=1df438e9345487b9c51d1eea3c93611e9198f173 # update this commit when new pwalk version released
@@ -404,8 +373,7 @@ install_pwalk() {
404373
# Install rclone
405374
install_rclone() {
406375

407-
echo
408-
echo "Installing third-party dependency: rclone... "
376+
echo -e "\nInstalling third-party dependency: rclone... "
409377

410378
# Check the architecture of the system
411379
arch=$(uname -m)
@@ -479,12 +447,11 @@ install_rclone
479447
version=$(froster -v | awk '{print $2}')
480448

481449
# Print success message
482-
echo
483-
echo "froster $version has been successfully installed!"
484-
echo
450+
echo -e "\n\nSUCCESS!"
451+
452+
echo -e "\nFroster version: $version"
453+
echo -e "Installation path: $(which froster)"
485454

486455
# Print post-installation instructions
487-
echo
488-
echo "You will need to open a new terminal or refresh your current terminal session by running command:"
489-
echo " source ~/.bashrc"
490-
echo
456+
echo -e "\n\nYou will need to open a new terminal or refresh your current terminal session by running command:"
457+
echo -e " source ~/.bashrc\n"

Diff for: pyproject.toml

+1-1
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ build-backend = "poetry.core.masonry.api"
44

55
[tool.poetry]
66
name = "froster"
7-
version = "0.17.2"
7+
version = "0.18.0"
88
description = "Froster is a tool for easy data transfer between local file systems and AWS S3 storage."
99
authors = ["Victor Machado <[email protected]>"]
1010
readme = "README.md"

0 commit comments

Comments
 (0)