From 5e242a371d1f54fc9d59acf798d5b39a5d0b374f Mon Sep 17 00:00:00 2001 From: cosmos <91248142+cosmos1721@users.noreply.github.com> Date: Wed, 19 Jul 2023 22:47:39 +0530 Subject: [PATCH 1/6] add --dir --- README.md | 8 +++++--- auto-cpufreq-installer | 9 +++++---- auto_cpufreq/core.py | 13 ++++--------- bin/auto-cpufreq | 40 +++++++++++++++++++++++++++++++--------- 4 files changed, 45 insertions(+), 25 deletions(-) diff --git a/README.md b/README.md index 62d400eb..ce19f44d 100644 --- a/README.md +++ b/README.md @@ -288,9 +288,11 @@ If the install has been performed as part of snap package, daemon status can be ### Update - auto-cpufreq update -Update functionality works by cloning auto-cpufreq repo to /home directory of currently logged in user, installing it using [auto-cpufreq-installer](#auto-cpufreq-installer) and performing [auto-cpufreq daemon install](#install---auto-cpufreq-daemon) with [latest version](https://github.com/AdnanHodzic/auto-cpufreq/releases) changes. +Update functionality works by cloning auto-cpufreq repo, installing it using [auto-cpufreq-installer](#auto-cpufreq-installer) and performing [auto-cpufreq daemon install](#install---auto-cpufreq-daemon) with [latest version](https://github.com/AdnanHodzic/auto-cpufreq/releases) changes. -Update the package by running: `sudo auto-cpufreq --update` +Update auto-cpufreq by running: `sudo auto-cpufreq --update`. Latest revision is cloned to default location `/opt/auto-cpufreq/source`, thus maintaining existing dir structure. + +Update and clone to custom directory by running: `sudo auto-cpufreq --update --dir /path/to/directory`. ### Remove - auto-cpufreq daemon @@ -393,4 +395,4 @@ If auto-cpufreq helped you out and you find it useful, show your appreciation by Other ways of supporting the project consists of making a code or documentation contribution. If you have an idea for a new features or want to implement some of the existing feature requests or fix some of the [bugs & issues](https://github.com/AdnanHodzic/auto-cpufreq/issues) please make your changes and submit a [pull request](https://github.com/AdnanHodzic/auto-cpufreq/pulls) which I'll be glad to review. If your changes are accepted you'll be credited as part of [releases page](https://github.com/AdnanHodzic/auto-cpufreq/releases). -**Please note: auto-cpufreq is looking for co-maintainers & open source developers to [help shape future of the project!](https://github.com/AdnanHodzic/auto-cpufreq/discussions/312)** +**Please note: auto-cpufreq is looking for co-maintainers & open source developers to [help shape future of the project!](https://github.com/AdnanHodzic/auto-cpufreq/discussions/312)** \ No newline at end of file diff --git a/auto-cpufreq-installer b/auto-cpufreq-installer index d3e65614..2bc2b5cf 100755 --- a/auto-cpufreq-installer +++ b/auto-cpufreq-installer @@ -20,9 +20,9 @@ fi #separator function separator { - local COLUMNS="`tput cols`" + local COLOUMNS="`tput cols`" echo -e "\n" - printf "%0.s─" $(seq $COLUMNS) + printf "%0.s─" $(seq $COLOUMNS) echo -e "\n" } @@ -37,8 +37,8 @@ function root_check { } function header { - local COLUMNS="`tput cols`" - MID="$((COLUMNS / 2))" + local COLOUMNS="`tput cols`" + MID="$((COLOUMNS / 2))" HEADER="$1" printf "%0.s─" $(seq $((MID-(${#HEADER}/2)- 1))) echo -n " $HEADER " @@ -192,6 +192,7 @@ elif [ -f /etc/os-release ];then else # In case /etc/os-release doesn't exist manual_install fi +mkdir /opt/auto-cpufreq/source } function tool_remove { diff --git a/auto_cpufreq/core.py b/auto_cpufreq/core.py index 24c71ef1..febabf42 100755 --- a/auto_cpufreq/core.py +++ b/auto_cpufreq/core.py @@ -183,19 +183,14 @@ def verify_update(): print(f"Updates are available,\nCurrent version: {installed_version}\nLatest version: {latest_version}") print("Note that your previous custom settings might be erased with the following update") -def new_update(): - username = os.getlogin() - home_dir = "/home/" + username - os.chdir(home_dir) - current_working_directory = os.getcwd() - print("Cloning the latest release to the home directory: ") - print(os.getcwd()) +def new_update(custom_dir): + os.chdir(custom_dir) + print(f"Cloning the latest release to {custom_dir}") run(["git", "clone", "https://github.com/AdnanHodzic/auto-cpufreq.git"]) os.chdir("auto-cpufreq") - print("package cloned to directory ", current_working_directory) + print(f"package cloned to directory {custom_dir}") run(['./auto-cpufreq-installer'], input='i\n', encoding='utf-8') - # return formatted version for a better readability def get_formatted_version(): literal_version = pkg_resources.require("auto-cpufreq")[0].version diff --git a/bin/auto-cpufreq b/bin/auto-cpufreq index b89d925b..40f977f7 100755 --- a/bin/auto-cpufreq +++ b/bin/auto-cpufreq @@ -7,7 +7,7 @@ # core import import sys import time -import click +from click import UsageError from subprocess import call, run sys.path.append("../") @@ -19,6 +19,7 @@ from auto_cpufreq.power_helper import * @click.option("--monitor", is_flag=True, help="Monitor and see suggestions for CPU optimizations") @click.option("--live", is_flag=True, help="Monitor and make (temp.) suggested CPU optimizations") @click.option("--update", is_flag=True, help="Update daemon and package for (permanent) automatic CPU optimizations") +@click.option("--dir", is_flag=False, default=None, type=str, help="Specify the directory path for update") @click.option("--install", is_flag=True, help="Install daemon for (permanent) automatic CPU optimizations") @click.option("--remove", is_flag=True, help="Remove daemon for (permanent) automatic CPU optimizations") @@ -36,7 +37,7 @@ from auto_cpufreq.power_helper import * @click.option("--donate", is_flag=True, help="Support the project") @click.option("--log", is_flag=True, hidden=True) @click.option("--daemon", is_flag=True, hidden=True) -def main(config, daemon, debug, update, install, remove, live, log, monitor, stats, version, donate, force, get_state): +def main(config, daemon, debug, update, dir, install, remove, live, log, monitor, stats, version, donate, force, get_state): # display info if config file is used def config_info_dialog(): @@ -89,7 +90,7 @@ def main(config, daemon, debug, update, install, remove, live, log, monitor, sta else: pass #"daemon_not_found" is not defined - daemon_not_found() + #daemon_not_found() elif monitor: config_info_dialog() root_check() @@ -226,9 +227,12 @@ def main(config, daemon, debug, update, install, remove, live, log, monitor, sta remove_complete_msg() elif update: root_check() + custom_dir = "/opt/auto-cpufreq/source" # Initial custom directory + if os.getenv("PKG_MARKER") == "SNAP": print("Detected auto-cpufreq was installed using snap") # refresh snap directly using this command + # --dir wont work in this case print("Please update using snap package manager, i.e: `sudo snap refresh auto-cpufreq`.") #check for AUR @@ -238,18 +242,36 @@ def main(config, daemon, debug, update, install, remove, live, log, monitor, sta verify_update() ans = input ("Do you want to update auto-cpufreq to the latest release? [y/n]: ") valid_options = ['y', 'Y', 'yes', 'YES', 'Yes'] + if dir: + if not os.path.exists(dir): + input("Directory does not exist, press Enter to create and proceed or ctrl+c to exit") + os.makedirs(dir) + else: + input("Directory already exists, press Enter to overwrite or ctrl+c to exit") + os.rmdir(dir) + os.makedirs(dir) + custom_dir = dir + else: + if os.path.exists(custom_dir): + os.rmdir(custom_dir) + os.makedirs(custom_dir) + else: + os.makedirs(custom_dir) if ans.lower() in valid_options: remove_daemon() remove_complete_msg() - new_update() + new_update(custom_dir) + print("enabling daemon") + run(["auto-cpufreq", "--install"]) + print("auto-cpufreq is installed with the latest version") + app_version() else: print("incorrect input\n") print("Aborted") - print("enabling daemon") - run(["auto-cpufreq", "--install"]) - print("auto-cpufreq is installed with the latest version") - app_version() - + elif dir != None and not update: + raise UsageError("--dir requires --update flag") + + if __name__ == "__main__": From bb1e14889864a9fe618aed520db6ed06687f30ed Mon Sep 17 00:00:00 2001 From: cosmos <91248142+cosmos1721@users.noreply.github.com> Date: Sun, 23 Jul 2023 00:56:52 +0530 Subject: [PATCH 2/6] add to path option to --update --- bin/auto-cpufreq | 31 ++++++++++++++----------------- 1 file changed, 14 insertions(+), 17 deletions(-) diff --git a/bin/auto-cpufreq b/bin/auto-cpufreq index 40f977f7..1c6674e6 100755 --- a/bin/auto-cpufreq +++ b/bin/auto-cpufreq @@ -18,9 +18,8 @@ from auto_cpufreq.power_helper import * @click.command() @click.option("--monitor", is_flag=True, help="Monitor and see suggestions for CPU optimizations") @click.option("--live", is_flag=True, help="Monitor and make (temp.) suggested CPU optimizations") -@click.option("--update", is_flag=True, help="Update daemon and package for (permanent) automatic CPU optimizations") -@click.option("--dir", is_flag=False, default=None, type=str, help="Specify the directory path for update") @click.option("--install", is_flag=True, help="Install daemon for (permanent) automatic CPU optimizations") +@click.option("--update", is_flag=False, help="Update daemon and package for (permanent) automatic CPU optimizations", flag_value="--update") @click.option("--remove", is_flag=True, help="Remove daemon for (permanent) automatic CPU optimizations") @click.option("--stats", is_flag=True, help="View live stats of CPU optimizations made by daemon") @@ -37,7 +36,7 @@ from auto_cpufreq.power_helper import * @click.option("--donate", is_flag=True, help="Support the project") @click.option("--log", is_flag=True, hidden=True) @click.option("--daemon", is_flag=True, hidden=True) -def main(config, daemon, debug, update, dir, install, remove, live, log, monitor, stats, version, donate, force, get_state): +def main(config, daemon, debug, update, install, remove, live, log, monitor, stats, version, donate, force, get_state): # display info if config file is used def config_info_dialog(): @@ -227,12 +226,16 @@ def main(config, daemon, debug, update, dir, install, remove, live, log, monitor remove_complete_msg() elif update: root_check() - custom_dir = "/opt/auto-cpufreq/source" # Initial custom directory - + custom_dir = "/opt/auto-cpufreq/source" + if "--update" in sys.argv: + update = True + sys.argv.remove("--update") + if len(sys.argv) == 2: + custom_dir = sys.argv[1] if os.getenv("PKG_MARKER") == "SNAP": print("Detected auto-cpufreq was installed using snap") # refresh snap directly using this command - # --dir wont work in this case + # path wont work in this case print("Please update using snap package manager, i.e: `sudo snap refresh auto-cpufreq`.") #check for AUR @@ -242,15 +245,14 @@ def main(config, daemon, debug, update, dir, install, remove, live, log, monitor verify_update() ans = input ("Do you want to update auto-cpufreq to the latest release? [y/n]: ") valid_options = ['y', 'Y', 'yes', 'YES', 'Yes'] - if dir: - if not os.path.exists(dir): + if custom_dir != "/opt/auto-cpufreq/source": + if not os.path.exists(custom_dir): input("Directory does not exist, press Enter to create and proceed or ctrl+c to exit") - os.makedirs(dir) + os.makedirs(custom_dir) else: input("Directory already exists, press Enter to overwrite or ctrl+c to exit") - os.rmdir(dir) - os.makedirs(dir) - custom_dir = dir + os.rmdir(custom_dir) + os.makedirs(custom_dir) else: if os.path.exists(custom_dir): os.rmdir(custom_dir) @@ -268,11 +270,6 @@ def main(config, daemon, debug, update, dir, install, remove, live, log, monitor else: print("incorrect input\n") print("Aborted") - elif dir != None and not update: - raise UsageError("--dir requires --update flag") - - - if __name__ == "__main__": main() From d47bb2044dea85db5f9fd73c99887c4682a42752 Mon Sep 17 00:00:00 2001 From: cosmos <91248142+cosmos1721@users.noreply.github.com> Date: Sun, 23 Jul 2023 12:05:54 +0530 Subject: [PATCH 3/6] optional add to path in --update --- bin/auto-cpufreq | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/bin/auto-cpufreq b/bin/auto-cpufreq index 1c6674e6..db99443b 100755 --- a/bin/auto-cpufreq +++ b/bin/auto-cpufreq @@ -227,11 +227,17 @@ def main(config, daemon, debug, update, install, remove, live, log, monitor, sta elif update: root_check() custom_dir = "/opt/auto-cpufreq/source" + for arg in sys.argv: + if arg.startswith("--update="): + custom_dir = arg.split("=")[1] + sys.argv.remove(arg) + if "--update" in sys.argv: update = True sys.argv.remove("--update") if len(sys.argv) == 2: - custom_dir = sys.argv[1] + custom_dir = sys.argv[1] + if os.getenv("PKG_MARKER") == "SNAP": print("Detected auto-cpufreq was installed using snap") # refresh snap directly using this command @@ -249,10 +255,6 @@ def main(config, daemon, debug, update, install, remove, live, log, monitor, sta if not os.path.exists(custom_dir): input("Directory does not exist, press Enter to create and proceed or ctrl+c to exit") os.makedirs(custom_dir) - else: - input("Directory already exists, press Enter to overwrite or ctrl+c to exit") - os.rmdir(custom_dir) - os.makedirs(custom_dir) else: if os.path.exists(custom_dir): os.rmdir(custom_dir) From a58a9cac10a5fd7dcb0e0e80bad7c7c34421ad74 Mon Sep 17 00:00:00 2001 From: cosmos <91248142+cosmos1721@users.noreply.github.com> Date: Sun, 23 Jul 2023 12:09:59 +0530 Subject: [PATCH 4/6] update --- auto-cpufreq-installer | 1 + 1 file changed, 1 insertion(+) diff --git a/auto-cpufreq-installer b/auto-cpufreq-installer index 2bc2b5cf..394343b1 100755 --- a/auto-cpufreq-installer +++ b/auto-cpufreq-installer @@ -192,6 +192,7 @@ elif [ -f /etc/os-release ];then else # In case /etc/os-release doesn't exist manual_install fi +# to clone the repo mkdir /opt/auto-cpufreq/source } From 774a2caf40521401cf7714403f8c10e0ca225498 Mon Sep 17 00:00:00 2001 From: cosmos <91248142+cosmos1721@users.noreply.github.com> Date: Sun, 23 Jul 2023 12:13:22 +0530 Subject: [PATCH 5/6] update README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index ce19f44d..9d473d7b 100644 --- a/README.md +++ b/README.md @@ -292,7 +292,7 @@ Update functionality works by cloning auto-cpufreq repo, installing it using [au Update auto-cpufreq by running: `sudo auto-cpufreq --update`. Latest revision is cloned to default location `/opt/auto-cpufreq/source`, thus maintaining existing dir structure. -Update and clone to custom directory by running: `sudo auto-cpufreq --update --dir /path/to/directory`. +Update and clone to custom directory by running: `sudo auto-cpufreq --update=/path/to/directory`. ### Remove - auto-cpufreq daemon From fd52e12f825889cfdeb3151c86d4f82d26385fb5 Mon Sep 17 00:00:00 2001 From: cosmos <91248142+cosmos1721@users.noreply.github.com> Date: Mon, 18 Sep 2023 15:14:15 +0530 Subject: [PATCH 6/6] resolve bugs --- auto-cpufreq-installer | 2 -- bin/auto-cpufreq | 16 +++++----------- 2 files changed, 5 insertions(+), 13 deletions(-) diff --git a/auto-cpufreq-installer b/auto-cpufreq-installer index 2620515c..cd66c705 100755 --- a/auto-cpufreq-installer +++ b/auto-cpufreq-installer @@ -200,8 +200,6 @@ elif [ -f /etc/os-release ];then else # In case /etc/os-release doesn't exist manual_install fi -# to clone the repo -mkdir /opt/auto-cpufreq/source } function tool_remove { diff --git a/bin/auto-cpufreq b/bin/auto-cpufreq index db99443b..434ffed8 100755 --- a/bin/auto-cpufreq +++ b/bin/auto-cpufreq @@ -251,16 +251,10 @@ def main(config, daemon, debug, update, install, remove, live, log, monitor, sta verify_update() ans = input ("Do you want to update auto-cpufreq to the latest release? [y/n]: ") valid_options = ['y', 'Y', 'yes', 'YES', 'Yes'] - if custom_dir != "/opt/auto-cpufreq/source": - if not os.path.exists(custom_dir): - input("Directory does not exist, press Enter to create and proceed or ctrl+c to exit") - os.makedirs(custom_dir) - else: - if os.path.exists(custom_dir): - os.rmdir(custom_dir) - os.makedirs(custom_dir) - else: - os.makedirs(custom_dir) + if not os.path.exists(custom_dir): + os.makedirs(custom_dir) + if os.path.exists(os.path.join(custom_dir, "auto-cpufreq")): + shutil.rmtree(os.path.join(custom_dir, "auto-cpufreq")) if ans.lower() in valid_options: remove_daemon() remove_complete_msg() @@ -268,7 +262,7 @@ def main(config, daemon, debug, update, install, remove, live, log, monitor, sta print("enabling daemon") run(["auto-cpufreq", "--install"]) print("auto-cpufreq is installed with the latest version") - app_version() + run(["auto-cpufreq", "--version"]) else: print("incorrect input\n") print("Aborted")