-
Notifications
You must be signed in to change notification settings - Fork 37
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Command argument refactoring proposition #31
Comments
Hmmm I'm not convinced this would be a positive change. Basically, I think we should respect these rules:
Other typical arguments against change applies too:
Also, adding these would increase the line count. I feel like it's a nice feature that the script is small, so people can have a look before giving it sudo rights. Anything increasing the size of the script must have serious arguments going for it. |
Yes, I understand The current command line arguments have some problems too, eg. we can ask to reload, change strategy, query current strategy and print the strategy list at the same time. Refactoring them using subcommands allows us to restrict the user to one and only one command at a time. With this in mind, we could continue to support the old arguments (without generating help for them, forcing new users to use new ones) and add the new format.
|
argument | description |
---|---|
strategy |
name of the strategy to use e.g: "lazy". (use print strategies to list available strategies). (optional) |
--config , -c |
config file path. (default: /etc/fw-fanctrl/config.json ) |
--silent , -s |
disable printing speed/temp status to stdout |
reload
: indirect : reload configuration
reset
: indirect : reset the current strategy to the default one
pause
: direct : pause the service
resume
: resume : pause the service
print
: direct : print desired information
argument (OR) | description |
---|---|
current-strategy |
print the current strategy |
strategy-details strategy |
print the details of the specified strategy |
strategies |
list the available strategies |
as for the line count, I plan to separate the script into several well named files/modules to improve readability.
I see. It's a bit of a dilemma for me, on one hand I like that this project fits in a single script. On the other hand, you're there, willing to increase the feature set and to commit some good work, at the price of adding complexity and breaking a few things. I invited you on this repo btw, so as to give you collaborator permissions (let me know if you don't want them) |
I will think a bit more about the file splitting but I keep thinking that separating them would make the project easier to maintain, we will see. I will also do my best not to break current systems and keep previous arguments as a backup for a while when adding the new ones. Thank you for your trust in me, feel free to revoke these permissions if you ever need/want to. |
the old argument format is deprecated but still usable. improved feedback when executing commands. TamtamHero#31
* forcing utf-8 encoding for socket messages and usage of stopServerSocket method instead of manual closing, as well as updating error detection pattern * README.md documentation update * change log format on fatal crash * fix badges links * adding windows platform badge and issue template * fix `:` instead of `=` * first part of the command argument refactoring. the old argument format is deprecated but still usable. improved feedback when executing commands. #31 * trim blank lines in README.md
* Adding @Svenum as an assignee to nix-related issues (#43) * Fixing adding @Svenum as an assignee to nix-related issues (#44) (non contributors cannot be assigned to issues) * Reload will report if config couldn't be parsed and the service keeps running. (#46) Authored-by: Nina Alexandra Klama <[email protected]> * Removing binary blobs from the project (#51) * removing binary blobs from the project. we now fetch the ectool from the gitlab artifacts and confirm the checksum. * remove bin references from README.md * extracting $TEMP_FOLDER from installEctool * Fix README spelling/grammer, fix "FrameWork" capitalization in service description (#52) * Review README spelling/grammar * Fix "FrameWork" capitalization in service * Clarify behaviour on service stop or pause (#53) (#55) * Separating FanController into different subclasses to allow HardwareController and SocketController diversity. 2 (Repost of #50) (#58) * separating `FanController` into different subclasses to allow `HardwareController` and `SocketController` diversity * adding the new arguments into the README.md * fixing an indentation error causing `--strategy <strategy>` not to work (the simple `<strategy>` still worked) * fixing missing print for command execution (#63) * forcing utf-8 encoding for socket messages and usage of stopServerSocket method instead of manual closing, as well as updating error detection pattern (#64) * README.md documentation update (#65) * forcing utf-8 encoding for socket messages and usage of stopServerSocket method instead of manual closing, as well as updating error detection pattern * README.md documentation update * change log format on fatal crash * fix badges links * adding windows platform badge and issue template * fix `:` instead of `=` * disabling part of the README.md while waiting for merge * Command arguments refactoring Pt.1 (#66) * forcing utf-8 encoding for socket messages and usage of stopServerSocket method instead of manual closing, as well as updating error detection pattern * README.md documentation update * change log format on fatal crash * fix badges links * adding windows platform badge and issue template * fix `:` instead of `=` * first part of the command argument refactoring. the old argument format is deprecated but still usable. improved feedback when executing commands. #31 * trim blank lines in README.md * finishing touches (#67) * add no battery mode for mainboards without battery (#69) * add configuration for no battery mode in hardware controller * fix wrong line getting noBatteryMode * dynamically fetching battery sensor on init/reload * add --no-battery flag for install * update readme with --no-battery flag * rework no battery config to come from service args * change sensors to be ectool specific - reword the argument to be more clear about battery sensors - move `noBatteryMode` and `nonBatterySensors` to EctoolHardwareController - update `getNonBatterySensors` to be able to handle more than one sensor - update installer and readme accordingly * update grep command for checking existing `--no-battery-sensors` * combine getTemperature functions to one * add documentation for run option `--no-battery-sensors` * rename variable `NO_BATTERY` to `NO_BATTERY_SENSOR` * update the installer to use existing placeholder format * rename noBatterySensorMode variables and functions for clarity * rename placeholder to `NO_BATTERY_SENSOR_OPTION` for clarity * update comments in installer to reflect new argument name * adding ectool sub-dependency to documentation (#70) * typo "tempurature" => "temperature" (#71) typo "tempurature" => "temperature" * typo "tempurature" => "temperature" (#72) typo "tempurature" => "temperature" * Add ToC + link to NixOS Documentation (#75) * add doc folder * update nix link * add toc * add link * add missin # * add doc * fix link * add new line under titles * add --no-sudo option (#76) * Add choice to print fan speed percentage (#78) * Add option to print current speed percentage * Update README.md * Update commands.md * Add print choice descriptions to help text * add missing no_sudo check (#79) * Add NixOS Flake (#26) * initial * update gitignore * update inputs * add fw-ectool dependencie * add module * fix tabs * fix package * fix typo * fix service * fix type * add options * fix service * fix build inputs * add Readme + add suspend script * remove unneeded }; * fix pkgs.writeShellScript * remvoe \ * try * add self * fix module * update package * fix package * use sleep script * add config options * fix typo * fix typo * add defaults * fix type * add prettyier * remove beautifyer * udpate readme * update installer script * add missing path * Update README.md Co-authored-by: Thomas Eizinger <[email protected]> * Update flake.nix Co-authored-by: Thomas Eizinger <[email protected]> * Update nix/module.nix Co-authored-by: Thomas Eizinger <[email protected]> * add descriptions * fix uninstall * update readme * add description * remove requiremetns.txt + add github actions * update action * rename workflow test * fix service * try * try * Update README.md * Update README.md * chagne flake description * fix suspend script * fix script * fix path * fix install.sh * fix --no-sudo * add --no-sudo to other scripts * fix check * add option check * add missing " * Rename nix action --------- Co-authored-by: Thomas Eizinger <[email protected]> * Update branch to main branch (#54) * Adding @Svenum as an assignee to nix-related issues (#43) * Fixing adding @Svenum as an assignee to nix-related issues (#44) (non contributors cannot be assigned to issues) * Reload will report if config couldn't be parsed and the service keeps running. (#46) Authored-by: Nina Alexandra Klama <[email protected]> * Removing binary blobs from the project (#51) * removing binary blobs from the project. we now fetch the ectool from the gitlab artifacts and confirm the checksum. * remove bin references from README.md * extracting $TEMP_FOLDER from installEctool * Fix README spelling/grammer, fix "FrameWork" capitalization in service description (#52) * Review README spelling/grammar * Fix "FrameWork" capitalization in service * use ectool form nixpkgs * update flake * remove old deps * remove duplicated pkgs --------- Co-authored-by: Léopold Hubert <[email protected]> Co-authored-by: Nina Alexandra Klama <[email protected]> Co-authored-by: DeflateAwning <[email protected]> * Update to main branch + switch to fw-ectool (#61) * Adding @Svenum as an assignee to nix-related issues (#43) * Fixing adding @Svenum as an assignee to nix-related issues (#44) (non contributors cannot be assigned to issues) * Reload will report if config couldn't be parsed and the service keeps running. (#46) Authored-by: Nina Alexandra Klama <[email protected]> * Removing binary blobs from the project (#51) * removing binary blobs from the project. we now fetch the ectool from the gitlab artifacts and confirm the checksum. * remove bin references from README.md * extracting $TEMP_FOLDER from installEctool * Fix README spelling/grammer, fix "FrameWork" capitalization in service description (#52) * Review README spelling/grammar * Fix "FrameWork" capitalization in service * Clarify behaviour on service stop or pause (#53) (#55) * Separating FanController into different subclasses to allow HardwareController and SocketController diversity. 2 (Repost of #50) (#58) * separating `FanController` into different subclasses to allow `HardwareController` and `SocketController` diversity * adding the new arguments into the README.md * fixing an indentation error causing `--strategy <strategy>` not to work (the simple `<strategy>` still worked) * add fw-ectool in module * fixing missing print for command execution (#63) --------- Co-authored-by: Léopold Hubert <[email protected]> Co-authored-by: Nina Alexandra Klama <[email protected]> Co-authored-by: DeflateAwning <[email protected]> * add doc + .gitignore * Add NixOS Flake (#26) * initial * update gitignore * update inputs * add fw-ectool dependencie * add module * fix tabs * fix package * fix typo * fix service * fix type * add options * fix service * fix build inputs * add Readme + add suspend script * remove unneeded }; * fix pkgs.writeShellScript * remvoe \ * try * add self * fix module * update package * fix package * use sleep script * add config options * fix typo * fix typo * add defaults * fix type * add prettyier * remove beautifyer * udpate readme * update installer script * add missing path * Update README.md Co-authored-by: Thomas Eizinger <[email protected]> * Update flake.nix Co-authored-by: Thomas Eizinger <[email protected]> * Update nix/module.nix Co-authored-by: Thomas Eizinger <[email protected]> * add descriptions * fix uninstall * update readme * add description * remove requiremetns.txt + add github actions * update action * rename workflow test * fix service * try * try * Update README.md * Update README.md * chagne flake description * fix suspend script * fix script * fix path * fix install.sh * fix --no-sudo * add --no-sudo to other scripts * fix check * add option check * add missing " * Rename nix action --------- Co-authored-by: Thomas Eizinger <[email protected]> * Update branch to main branch (#54) * Adding @Svenum as an assignee to nix-related issues (#43) * Fixing adding @Svenum as an assignee to nix-related issues (#44) (non contributors cannot be assigned to issues) * Reload will report if config couldn't be parsed and the service keeps running. (#46) Authored-by: Nina Alexandra Klama <[email protected]> * Removing binary blobs from the project (#51) * removing binary blobs from the project. we now fetch the ectool from the gitlab artifacts and confirm the checksum. * remove bin references from README.md * extracting $TEMP_FOLDER from installEctool * Fix README spelling/grammer, fix "FrameWork" capitalization in service description (#52) * Review README spelling/grammar * Fix "FrameWork" capitalization in service * use ectool form nixpkgs * update flake * remove old deps * remove duplicated pkgs --------- Co-authored-by: Léopold Hubert <[email protected]> Co-authored-by: Nina Alexandra Klama <[email protected]> Co-authored-by: DeflateAwning <[email protected]> * Update to main branch + switch to fw-ectool (#61) * Adding @Svenum as an assignee to nix-related issues (#43) * Fixing adding @Svenum as an assignee to nix-related issues (#44) (non contributors cannot be assigned to issues) * Reload will report if config couldn't be parsed and the service keeps running. (#46) Authored-by: Nina Alexandra Klama <[email protected]> * Removing binary blobs from the project (#51) * removing binary blobs from the project. we now fetch the ectool from the gitlab artifacts and confirm the checksum. * remove bin references from README.md * extracting $TEMP_FOLDER from installEctool * Fix README spelling/grammer, fix "FrameWork" capitalization in service description (#52) * Review README spelling/grammar * Fix "FrameWork" capitalization in service * Clarify behaviour on service stop or pause (#53) (#55) * Separating FanController into different subclasses to allow HardwareController and SocketController diversity. 2 (Repost of #50) (#58) * separating `FanController` into different subclasses to allow `HardwareController` and `SocketController` diversity * adding the new arguments into the README.md * fixing an indentation error causing `--strategy <strategy>` not to work (the simple `<strategy>` still worked) * add fw-ectool in module * fixing missing print for command execution (#63) --------- Co-authored-by: Léopold Hubert <[email protected]> Co-authored-by: Nina Alexandra Klama <[email protected]> Co-authored-by: DeflateAwning <[email protected]> --------- Co-authored-by: Léopold Hubert <[email protected]> Co-authored-by: Nina Alexandra Klama <[email protected]> Co-authored-by: DeflateAwning <[email protected]> Co-authored-by: Oli Thornton <[email protected]> Co-authored-by: Ryan <[email protected]> Co-authored-by: Thomas Eizinger <[email protected]>
Hi @TamtamHero ,
I would like to refactor the existing command line arguments, complete them with missing essential ones and would appreciate your feedback.
Here are the current arguments (including those in PR #29):
contexts:
And here are the new ones:
| option | group | context | description ||---------------------------------------------------------------|-----------------|----------|------------------------------------------|
| --run (?<strategy>) | run | direct | run the service |
| --config | run | direct | specify the configuration path |
| --silent | run | direct | disable state logging |
| --use <strategy> | | indirect | run the service |
| --actual-strategy,-a | | indirect | print the current strategy name |
| --strategy-detail,-d (?<strategy>) | | indirect | list a strategy configuration |
| --list-strategies,--ls,-l | | indirect | print the available strategies |
| --reload-config,--reload, -r | | indirect | reload the configuration file |
| --add-strategy,-A <strategy-name> | add | indirect | add a new strategy to the config |
| --configure-strategy,-C <strategy-name> | configure | indirect | configure a strategy |
| --update-frequency,--uf,-u <update-freq> | add & configure | indirect | set the strategy update frequency |
| --moving-average-interval,--mai,-m <moving-average-interval> | add & configure | indirect | set the strategy moving average interval |
| --curve-point,--cp,-c <temp>:<fan-duty> | add & configure | indirect | set a point in the curve |
| --delete-strategy,-D <strategy-name> | | indirect | delete a strategy |
| --pause | | indirect | temporarily disable the service |
| --resume | | indirect | resume the service |
Edit: After much thoughts, I think we should use subcommands when possible, as they are more intuitive.
run
: direct : run the service. (usereset
to reset to the default strategy)strategy
print strategies
to list available strategies). (optional)--config
,-c
/etc/fw-fanctrl/config.json
)--silent
,-s
reload
: indirect : reload configurationreset
: indirect : reset the current strategy to the default oneset-default
: indirect : set the default strategystrategy
print strategies
to list available strategies)--discharge
,--d
remove-default
: indirect : remove the default strategy--discharge
,--d
add
: indirect : add a new strategystrategy
print strategies
to list available strategies)curve_point
...temp:speed
--update-frequency
,--uf
,-u
--average-interval
,--ai
,-a
configure
: indirect : configure an existing strategystrategy
print strategies
to list available strategies)curve_point
...temp:speed
. (optional)--update-frequency
,--uf
,-u
--average-interval
,--ai
,-a
delete
: direct : delete an existing strategystrategy
print strategies
to list available strategies)pause
: direct : pause the serviceresume
: resume : pause the serviceprint
: direct : print desired informationcurrent-strategy
strategy-details strategy
strategies
The aim is to make them more intuitive and organised, and to achieve this many of them will have to be renamed/removed and users will have to change the way they use the actual commands.
What are your thoughts on this?
Should we go for it or add a deprecation warning for now?
The text was updated successfully, but these errors were encountered: