51 Commits
Author SHA1 Message Date
bruno d2baa1005d kymsu.sh
-change preference file name: kymsu.pref to kymsu.cfg
-display next update date
2026-09-04 16:47:40 +02:00
bruno 92d07bb589 pipx.sh
Add description et link to package
2026-09-04 16:45:03 +02:00
bruno a03c25ebf9 Add kymsu.cfg to nodejs.sh 2026-09-04 16:43:46 +02:00
bruno 909a1fb52d cfg file
variable cask_to_not_update is now in kymsu.cfg file
2026-08-02 18:55:23 +02:00
bruno 1682d0bd18 install.sh
-clear quarantine flag in plugins install
2026-07-23 18:37:36 +02:00
bruno ada7ab40cd rustup update 2026-07-23 13:36:29 +02:00
bruno cf8f7f391c all_global_pkgs
-new variable all_global_pkgs
2026-07-10 14:29:26 +02:00
bruno d3afa4788b 20-04-2026 2026-04-20 13:28:59 +02:00
bruno 2bb6671836 installed.sh
-les fichiers Brewfile_* vieux de plus de 10 jours sont supprimés
-la section paquets Atom est désormais optionnelle
2025-04-17 09:31:08 +02:00
bruno ea87685dde venv.sh
soco-cli est désormais installé avec pipx
2025-04-17 09:26:37 +02:00
bruno ce8d9b799e Update Python for PEP668 2024-08-05 23:18:29 +02:00
bruno 2124781520 nodejs.sh
-update for latest npm / node compatibility
2024-05-14 07:05:53 +02:00
bruno dc4764c832 Test connection
-replace google.com by apple.com
2024-05-14 07:04:20 +02:00
bruno 40040c264b pipx.sh
bug in pipx -> pips list —quiet
2024-01-09 18:05:36 +01:00
bruno b76e72a1ef Test internet connection
-run scripts only if internet is ok
2023-11-16 15:00:35 +01:00
bruno c8ced14004 venv.sh
-add streamrip to apps list
2023-11-14 20:27:59 +01:00
bruno 6ee801d946 Bugfix
-json casks list
2023-08-01 13:53:54 +02:00
bruno feab0bb267 nodejs
-add a do_not_update option
2023-01-05 16:55:18 +01:00
bruno 02ed39943b Rust plugin
1st version
2022-11-25 10:26:39 +01:00
bruno bcd4ca41c6 homebrew.sh
-add a test to not proceed any bash upgrade.
2022-11-08 22:03:33 +01:00
bruno d13e3277b1 minor bugfix 2022-08-03 15:39:57 +02:00
bruno de82e3f6a3 kymsu.sh
-bugfix
2022-07-17 16:57:17 +02:00
bruno db3ef113ad Auto-update
-add a preference file $HOME/.kymsu/plugins.d/kymsu.pref
-add a preference for setting auto-update from github repo
2022-07-17 16:56:38 +02:00
bruno cefbd6d1e9 global option
change -g by —location=global
2022-07-15 13:02:38 +02:00
bruno bebcacecc3 nodejs.sh
-g deprecated. Use --location=global instead
2022-05-29 17:23:07 +02:00
bruno ace96fcd46 Fix The unauthenticated git protocol on port 9418 is no longer supported
change git://github.com by https://github.com
2022-03-17 15:46:31 +01:00
bruno b744cd6624 Option -s
-option --nodistract (ou -n) pour exécuter les scripts sans interaction.
-option -s 'script' pour exécuter 1 seul script (i.e -s homebrew, -s node, -s pip...)
2021-12-20 16:00:30 +01:00
bruno 97a1005d12 pipx.sh
-test si pipx n'est pas installé
2021-12-14 11:44:47 +01:00
bruno afa77f865c kymsu2.sh
-option --all to run all scripts
2021-12-14 11:43:12 +01:00
bruno a4e9ed9053 Update pipx script 2021-11-11 08:22:43 +01:00
bruno e8fc598082 11-10-2021 2021-10-11 06:32:21 +02:00
bruno 61cdb0e44b Bugfix
find -maxdeph
2021-08-09 08:03:03 +02:00
bruno f99b2c3107 06-08-2021
update to M1
2021-08-06 12:45:12 +02:00
bruno c2e950d819 28-07-2021 2021-07-28 14:30:23 +02:00
bruno 21501ed2ce pip.sh
-change do_not_update array
2021-06-26 08:11:06 +02:00
bruno 36d7f88ffc node.sh
-add a pref to update or not node
2021-06-26 07:55:45 +02:00
bruno 9fc8f9668f Update may 2021
-node.sh: info about local pacakges
-mas.sh: mas v1.8.2
-homebrew.sh: minor bugfixes
-pecl.sh: add update-channels command
2021-05-17 16:03:20 +02:00
bruno 6d98e2043e node.sh
Bugfix if github.com don’t respond.
2021-03-15 07:34:27 +01:00
bruno 9177cea743 node.sh
-bugfix: update node
2021-03-09 06:29:30 +01:00
bruno 3595de3c64 node.sh
Bugfix:
-correct nb of global package update

Feature:
-advise for node and npm update
2021-02-28 08:50:52 +01:00
bruno 24f829d102 pip.sh
+more efficience dependencies detect
2021-02-12 08:33:52 +01:00
bruno f1412739df node.sh
+ add number of package update
2021-02-12 08:32:48 +01:00
bruno d2f5735073 pip.sh node.sh
pip.sh: minor bugfix
node.sh: update node
2021-02-11 08:11:23 +01:00
bruno 555c362e30 Minors bugfixs 2021-02-06 08:13:46 +01:00
bruno 32b861a8f1 node.sh
Bugfix:
+npm outdated for local packages
2021-01-19 19:46:52 +01:00
bruno a8ec0b2e37 pip.sh
Bugfix:
+display color dpendancies
2021-01-15 19:20:12 +01:00
bruno 4a1ea52926 pecl.sh
Feature:
- open PHP info page only if available update
2021-01-15 06:52:28 +01:00
bruno f1a1a94886 pip.sh
Features:
-check dependances
2021-01-13 19:32:46 +01:00
bruno 7b78bbd1ca homebrew.sh
Bugfix:
- n° de version des paquets (info)
2021-01-13 14:49:41 +01:00
bruno e6c7db1711 homebrew.sh
Feature:
-mask ‘Updating pkg/cask’ if no update awailable

Bugfix:
-display multiples versions (i e python@3.9)
2021-01-11 09:34:16 +01:00
bruno 9a9bf77fb7 pecl.sh
Features:
+display info about php config
+open php info in Safari
+support PHP 8.0
2021-01-10 18:42:18 +01:00
24 changed files with 1625 additions and 461 deletions
+20 -11
View File
@@ -10,15 +10,20 @@ homebrew and pecl plugins notifie you if apache/php configuration files have bee
## Plug-ins: ## Plug-ins:
- **atom** (plug-ins) - **atom** ([plug-ins](https://atom.io/packages/list))
- **antibody** (zsh plug-ins) - **antibody** ([zsh plug-ins](https://getantibody.github.io))
- **homebrew** (brew and cask) - **gem** ([Ruby](https://rubygems.org))
- **homebrew** ([brew and cask](https://formulae.brew.sh))
- **installed** (create a list of all your brew, pip, npm... stuffs and a Brewfile). - **installed** (create a list of all your brew, pip, npm... stuffs and a Brewfile).
- **npm** (javascript package) (local or global packages) (can update nvm script) - **nodejs** ([npm package](https://www.npmjs.com)) (local or global packages) (can update [nvm](https://github.com/nvm-sh/nvm) script)
- **mas** (Mac Appstore) - **mas** (Mac Appstore)
- **pip** (Python Package index) (pip or pip3) - **pecl** ([PHP modules](https://pecl.php.net)) (<u>for testing only</u>)
- **PECL** (PHP modules) - **perl** (Perl modules ([cpan](https://metacpan.org)))
- **Wordpress** (wp-cli) <u>(for testing only)</u> - **pip** ([Python Package index](https://pypi.org)) (pip or pip3)
- **pipx** ([Python Apps in Isolated Environments](https://pypa.github.io/pipx/))
- **rust** ([Rust](https://www.rust-lang.org))
- **venv** ([Environnement virtuel Python](https://docs.python.org/3/library/venv.html))
- **wp** (WordPress [wp-cli](https://wp-cli.org/fr/)) <u>(for testing only)</u>
@@ -49,9 +54,13 @@ Plug-ins are placed in `~/.kymsu/`
Only update all the things: `$ kymsu2` Only update all the things: `$ kymsu2`
Run only 1 script: `$ kymsu2 -s homebrew` (option -s and name of script without extension)
With cleanup after updates: `$ kymsu2 --cleanup` With cleanup after updates: `$ kymsu2 --cleanup`
No distract mode (no user interaction):`$ kymsu2 --nodistract` No distract mode (no user interaction):`$ kymsu2 --nodistract` `$ kymsu2 -n` (update without confirmation)
Help: `$ kymsu2 --help` `$ kymsu2 -h`
Prefix plugin with a _ to ignore it: Prefix plugin with a _ to ignore it:
@@ -69,7 +78,7 @@ Prefix plugin with a _ to ignore it:
There is a <u>settings section</u> on top of each plug-in: There is a <u>settings section</u> on top of each plug-in:
- *[homebrew-pip]* don't update a module, package...: add it to the `do_not_update` array on the top. - *[homebrew-pip-nodejs]* don't update a module, package...: add it to the `do_not_update` array on the top.
```bash ```bash
$ nano homebrew.sh $ nano homebrew.sh
@@ -77,9 +86,9 @@ declare -a do_not_update=('virtualbox,virtualbox-extension-pack')
``` ```
- *[homebrew]* display info on updated pakages: `display_info=true` - *[homebrew]* display info on updated pakages: `display_info=true`
- *[homebrew-npm-pecl-pip]* no distract mode (no user interaction): `no_distract=false` - *[homebrew-nodejs-pecl-pip]* no distract mode (no user interaction): `no_distract=false`
*If running Homebrew plug-in in no_distract mode, Casks with 'latest' version number won't be updated.* *If running Homebrew plug-in in no_distract mode, Casks with 'latest' version number won't be updated.*
- *[npm]* run npm maintenance tools: `doctor=true` - *[nodejs]* run npm maintenance tools: `doctor=true`
- *[pip]* `version=pip or pip3` `user="" or "--user"` - *[pip]* `version=pip or pip3` `user="" or "--user"`
+13 -2
View File
@@ -3,13 +3,14 @@
italic="\033[3m" italic="\033[3m"
underline="\033[4m" underline="\033[4m"
bold="\033[1m" bold="\033[1m"
yellow="\033[0;33m"
reset="\033[0m" reset="\033[0m"
KYMSU_PATH=`pwd` KYMSU_PATH=`pwd`
# Make Kymsu accessible in PATH # Make Kymsu accessible in PATH
echo -e "\nInstalling ${bold}kymsu2${reset} in ${bold}/usr/local/bin${reset} ..." echo -e "\nInstalling ${bold}kymsu2${reset} in ${bold}/usr/local/bin${reset} ..."
ln -fs "${KYMSU_PATH}"/kymsu2.sh /usr/local/bin/kymsu2 sudo ln -fs "${KYMSU_PATH}"/kymsu2.sh /usr/local/bin/kymsu2
# Store Kymsu stuff in home directory # Store Kymsu stuff in home directory
mkdir -p $HOME/.kymsu && echo "${KYMSU_PATH}" > $HOME/.kymsu/path mkdir -p $HOME/.kymsu && echo "${KYMSU_PATH}" > $HOME/.kymsu/path
@@ -28,6 +29,16 @@ rm -rf $pluginpath
echo -e "Copying plugins in ${bold}$pluginpath${reset} ..." echo -e "Copying plugins in ${bold}$pluginpath${reset} ..."
cp -R "${KYMSU_PATH}/plugins.d" $HOME/.kymsu cp -R "${KYMSU_PATH}/plugins.d" $HOME/.kymsu
for F in $HOME/.kymsu/plugins.d/*.sh
do
q=$(xattr -l "$F" | grep "com.apple.quarantine")
if [ "$q" != "" ]; then
echo -e "${yellow}Clear quarantine flag...${reset}"
xattr -d com.apple.quarantine "$F"
fi
done
if [ -n "$disabled" ]; then if [ -n "$disabled" ]; then
echo -e "Disabling previous disabled plugins ..." echo -e "Disabling previous disabled plugins ..."
@@ -67,4 +78,4 @@ if [ "$new_install" = true ]; then
done done
fi fi
fi fi
+87 -21
View File
@@ -1,6 +1,16 @@
#!/usr/bin/env bash #!/usr/bin/env bash
if [[ "$1" == "-h" || "$1" == "--help" ]]; then italic="\033[3m"
underline="\033[4m"
ita_under="\033[3;4m"
bgd="\033[1;4;31m"
red="\033[1;31m"
bold="\033[1m"
bold_ita="\033[1;3m"
box="\033[1;41m"
reset="\033[0m"
function showHelp() {
echo -e "\033[93m\033[1maltKymsu\033[0m" echo -e "\033[93m\033[1maltKymsu\033[0m"
echo "" echo ""
echo "alt Keep Your macOs Stuff Updated" echo "alt Keep Your macOs Stuff Updated"
@@ -9,33 +19,89 @@ if [[ "$1" == "-h" || "$1" == "--help" ]]; then
echo "USAGE: kymsu2" echo "USAGE: kymsu2"
echo echo
echo "Commandes: " echo "Commandes: "
echo " -h, --help display this help" echo " -h, --help display this help"
echo " --nodistract no distract mode (no user interaction)" echo " -n, --nodistract no distract mode (no user interaction)"
echo " --cleanup removing any older versions of installed formulae and clearing old downloads from the Homebrew download-cache" echo " -c, --cleanup removing any older versions of installed formulae and clearing old downloads from the Homebrew download-cache"
echo " --npm_cleanup cleaning npm cache" #echo " --npm_cleanup cleaning npm cache"
echo " -s $script run only the script given in argument"
echo " -a, --all run all scripts (by default, all except those start by _)"
echo echo
echo "Tips:" echo "Tips:"
echo " -prefix the plugin with _ to ignore it" echo " -prefix the plugin with _ to ignore it"
echo " -see Settings section on top of each plug-in" echo " -see Settings section on top of each plug-in"
echo echo
exit 0 # exit 0
}
all_plugins=false
no_distract=false
brew_cleanup=false
SCRIPTS_DIR=$HOME/.kymsu/plugins.d
while getopts "hncs: a-:" opt
do
case $opt in
-) case "${OPTARG}" in
help) showHelp; exit;;
nodistract) no_distract=true;;
cleanup) brew_cleanup=true;;
all) all_plugins=true;;
*)
echo "Unknow option '--${OPTARG}'" >&2
exit -1;;
esac;;
h) showHelp; exit;;
n) no_distract=true;;
c) brew_cleanup=true;;
s) one_script="${OPTARG}";;
a) all_plugins=true;;
*)
echo "Unknow option '-$opt'" >&2
exit -1;;
esac
done
#shift "$((OPTIND-1))"
# -n : non vide
if [ -n "$one_script" ]; then
# Un seul script
#list_plugins=$(find $SCRIPTS_DIR -maxdepth 1 -type f -name "*$one_script" -a -perm +111)
list_plugins=$(find $SCRIPTS_DIR -maxdepth 1 -type f -name "$one_script" -o -name "_$one_script" -a -perm +111)
[ -z "$list_plugins" ] && echo -e "❗️ No named plugin ${italic}$one_script${reset}" && exit -1
# [[ $@ =~ "--all" ]] && all_plugins=true || all_plugins=false
elif [ "$all_plugins" = false ]; then
# Tous sauf commençant par _ (les fichiers commençant par '_' ne sont pas pris en compte) "_*.sh"
list_plugins=$(find $SCRIPTS_DIR -maxdepth 1 -type f ! -name "_*" -a -name "*.sh" -a -perm +111 | sort)
[ -z "$list_plugins" ] && echo -e "❗️ No plugin in ${italic}$SCRIPTS_DIR${reset}" && exit -1
else
# Tous (-a = ET; -perm +111 = exec)
list_plugins=$(find $SCRIPTS_DIR -maxdepth 1 -type f -name "*.sh" -a -perm +111 | sort)
[ -z "$list_plugins" ] && echo -e "❗️ No plugin in ${italic}$SCRIPTS_DIR${reset}" && exit -1
fi fi
echo "Please, grab a ☕️, KYMSU keep your working environment up to date!"
SCRIPTS_DIR=$HOME/.kymsu/plugins.d
#SCRIPTS_DIR=$(cat ~/.kymsu/path)/plugins.d
cd "$SCRIPTS_DIR" cd "$SCRIPTS_DIR"
# On boucle sur tous les fichiers du répertoire <<COMMENT
# (seuls les fichiers commençant par '_' ou '0' sont pris en compte) echo "$list_plugins"
#for script in $(find . -name '[_0]*' -maxdepth 1 | sort); do
for script in $(find . ! -name _\*.sh -maxdepth 1 | sort); do echo "all args: $@"
# si le fichier est exécutable et n'est pas un dossier echo ""
if [ -x "$SCRIPTS_DIR/$script" ] && [ -f "$SCRIPTS_DIR/$script" ]; then echo "script: $one_script"
# on l’exécute ; le $@ permet de passer à chaque echo ""
# script les arguments passés à *ce* script COMMENT
$SCRIPTS_DIR/$script $@
fi
done echo "Please, grab a ☕️, KYMSU keep your working environment up to date!"
echo ""
for script in $list_plugins; do
# le $@ permet de passer à chaque script les arguments passés à *ce* script
$script $@
#echo "$script"
done
shift "$((OPTIND-1))"
+65 -5
View File
@@ -1,6 +1,66 @@
#!/usr/bin/env bash #!/usr/bin/env bash
echo "🦄 KYMSU self update"
pushd "$(cat ~/.kymsu/path)" > /dev/null SCRIPT_DIR=$( cd -- "$( dirname -- "${BASH_SOURCE[0]}" )" &> /dev/null && pwd )
git pull PREF_FILE="$HOME/.kymsu/plugins.d/kymsu.cfg"
popd > /dev/null TEMP_FILE="$HOME/.kymsu/plugins.d/kymsu.cfg.tmp"
echo ""
# 5m 5 minutes
# 2h 2 hours
# 4d 4 days
# 3w 3 weeks
# 1M 1 month
# 1Y 1 year
update_interval="1w"
x=${update_interval: -1}
case $x in
m) unite=60;;
h) unite=3600;;
d) unite=$(( 3600*24 ));;
w) unite=$(( 3600*24*7 ));;
M) unite=$(( 3600*24*30 ));;
Y) unite=$(( 3600*24*30*12 ));;
*) echo "Bad update_interval pref" >&2
#exit -1;;
esac
y=$(( ${#update_interval}-1 ))
nb=${update_interval:0:$y}
w=$(( unite*nb ))
if [ -f $PREF_FILE ]; then
last_update=$(cat $PREF_FILE | grep "last.update" | awk -F"=" '{print $2}' )
else
last_update=0
fi
current_timestamp=$(date +"%s")
temps=$(( current_timestamp-last_update ))
last_upd=$(date +'%d-%m-%Y %H:%M:%S' -d @$last_update)
echo "Last update: $last_upd"
current=$(date +'%d-%m-%Y %H:%M:%S' -d @$current_timestamp)
echo "Current: $current"
next_update=$(( last_update+w ))
next_upd=$(date +'%d-%m-%Y %H:%M:%S' -d @$next_update)
echo -e "Next update: $next_upd\n"
if [ $(( temps-w )) -gt 0 ]; then # more than $update_interval
echo "🦄 KYMSU self update"
pushd "$(cat ~/.kymsu/path)" > /dev/null
#git pull
git pull https://Bruno21@github.com/Bruno21/kymsu.git
popd > /dev/null
echo ""
if [ $last_update -eq 0 ]; then
echo "last.update=$current_timestamp" > $PREF_FILE
else
awk -F'=' -v OFS='=' -v newval="$current_timestamp" '/^last.update/{$2=newval;print;next}1' $PREF_FILE > $TEMP_FILE
mv $TEMP_FILE $PREF_FILE
fi
fi
+1 -1
View File
@@ -16,7 +16,7 @@ display_info=true
declare -a do_not_update=('') declare -a do_not_update=('')
# No distract mode (no user interaction) # No distract mode (no user interaction)
[[ $@ =~ "--nodistract" ]] && no_distract=true || no_distract=false [[ $@ =~ "-nodistract" || $@ =~ "-n" ]] && no_distract=true || no_distract=false
# #
############################################################################################### ###############################################################################################
+2
View File
@@ -2,6 +2,8 @@
echo -e "\033[1m⚛️ Atom editor will be shiny when you'll be back from your coffee/tea break! \033[0m" echo -e "\033[1m⚛️ Atom editor will be shiny when you'll be back from your coffee/tea break! \033[0m"
command -v apm >/dev/null 2>&1 || { echo -e "\n${bold}Atom editor${reset} is not installed.\n\nRun ${italic}'brew install atom'${reset} for install." && exit 1; }
if hash apm-beta 2>/dev/null; then if hash apm-beta 2>/dev/null; then
apm-beta upgrade -c false apm-beta upgrade -c false
fi fi
+11
View File
@@ -0,0 +1,11 @@
config_read_file() {
(grep -E "^${2}=" -m 1 "${1}" 2>/dev/null || echo "VAR=__UNDEFINED__") | head -n 1 | cut -d '=' -f 2-;
}
config_get() {
val="$(config_read_file kymsu.cfg "${1}")";
if [ "${val}" = "__UNDEFINED__" ]; then
val="$(config_read_file config.cfg.defaults "${1}")";
fi
printf -- "%s" "${val}";
}
+1 -1
View File
@@ -5,7 +5,7 @@
# https://guides.rubygems.org/what-is-a-gem/ # https://guides.rubygems.org/what-is-a-gem/
# No distract mode # No distract mode
[[ $@ =~ "--nodistract" ]] && no_distract=true || no_distract=false [[ $@ =~ "-nodistract" || $@ =~ "-n" ]] && no_distract=true || no_distract=false
italic="\033[3m" italic="\033[3m"
underline="\033[4m" underline="\033[4m"
+121 -46
View File
@@ -3,6 +3,8 @@
# Homebrew plugin for KYMSU # Homebrew plugin for KYMSU
# https://github.com/welcoMattic/kymsu # https://github.com/welcoMattic/kymsu
source config.shlib; # load the config library functions
############################################################################################### ###############################################################################################
# #
# Settings: # Settings:
@@ -12,10 +14,14 @@ display_info=true
# Casks don't have pinned cask. So add Cask to the do_not_update array for prevent to update. # Casks don't have pinned cask. So add Cask to the do_not_update array for prevent to update.
# declare -a do_not_update=("xnconvert" "yate") # declare -a do_not_update=("xnconvert" "yate")
declare -a cask_to_not_update=() #declare -a cask_to_not_update=(ff-works)
pinned_cask="$(config_get pinned_cask)"
declare -a cask_to_not_update=($pinned_cask)
# No distract mode (no user interaction)(Casks with 'latest' version number won't be updated) # No distract mode (no user interaction)(Casks with 'latest' version number won't be updated)
[[ $@ =~ "--nodistract" ]] && no_distract=true || no_distract=false #[[ $@ =~ "--nodistract" ]] && no_distract=true || no_distract=false
[[ $@ =~ "-nodistract" || $@ =~ "-n" ]] && no_distract=true || no_distract=false
# Some Casks have auto_updates true or version :latest. Homebrew Cask cannot track versions of those apps. # Some Casks have auto_updates true or version :latest. Homebrew Cask cannot track versions of those apps.
# 'latest=true' force Homebrew to update those apps. # 'latest=true' force Homebrew to update those apps.
@@ -33,7 +39,6 @@ latest=false
: <<'END_COMMENT' : <<'END_COMMENT'
blabla blabla
END_COMMENT
italic="\033[3m" italic="\033[3m"
underline="\033[4m" underline="\033[4m"
@@ -43,6 +48,17 @@ red="\033[1;31m"
bold="\033[1m" bold="\033[1m"
box="\033[1;41m" box="\033[1;41m"
reset="\033[0m" reset="\033[0m"
END_COMMENT
italic="$(config_get italic)"
underline="$(config_get underline)"
ita_under="$(config_get ita_under)"
bgd="$(config_get bgd)"
red="$(config_get red)"
bold="$(config_get bold)"
box="$(config_get box)"
reset="$(config_get reset)"
command -v terminal-notifier >/dev/null 2>&1 || { echo -e "You shoud intall ${bold}terminal-notifier${reset} for notification ${italic}(brew install terminal-notifier)${reset}.\n"; } command -v terminal-notifier >/dev/null 2>&1 || { echo -e "You shoud intall ${bold}terminal-notifier${reset} for notification ${italic}(brew install terminal-notifier)${reset}.\n"; }
command -v jq >/dev/null 2>&1 || { echo -e "${bold}kymsu2${reset} require ${bold}jq${reset} but it's not installed.\nRun ${italic}(brew install jq)${reset}\nAborting..." >&2; exit 1; } command -v jq >/dev/null 2>&1 || { echo -e "${bold}kymsu2${reset} require ${bold}jq${reset} but it's not installed.\nRun ${italic}(brew install jq)${reset}\nAborting..." >&2; exit 1; }
@@ -73,7 +89,7 @@ get_info_cask() {
#auto_updates=$(echo "$info" | jq -r '.[] | select(.token == "'${app}'") | (.auto_updates)') #auto_updates=$(echo "$info" | jq -r '.[] | select(.token == "'${app}'") | (.auto_updates)')
#caveats=$(echo "$info" | jq -r '.[] | select(.token == "'${app}'") | (.caveats)') #caveats=$(echo "$info" | jq -r '.[] | select(.token == "'${app}'") | (.caveats)')
installed_versions=$(echo "$upd_cask" | jq -r '.[] | select(.name == "'${app}'") | (.installed_versions)') installed_versions=$(echo "$upd_cask" | jq -r '.[] | select(.name == "'${app}'") | (.installed_versions)' | jq -r '.[]')
current_version=$(echo "$upd_cask" | jq -r '.[] | select(.name == "'${app}'") | (.current_version)') current_version=$(echo "$upd_cask" | jq -r '.[] | select(.name == "'${app}'") | (.current_version)')
[[ "$desc" = "null" ]] && desc="${italic}No description${reset}" [[ "$desc" = "null" ]] && desc="${italic}No description${reset}"
@@ -92,9 +108,17 @@ get_info_cask() {
get_info_pkg() { get_info_pkg() {
info="$1" info="$1"
pkg="$2" pkg="$2"
pkg2="$2"
l1="" l1=""
#echo "pkg: $pkg"
if [[ " ${pkg} " =~ "/" ]]; then
pkg=$(echo "$pkg" | awk -F"/" '{print $NF}')
fi
#echo "pkg: $pkg"
name=$(echo "$info" | jq -r '.[] | select(.name == "'${pkg}'") | (.name)') name=$(echo "$info" | jq -r '.[] | select(.name == "'${pkg}'") | (.name)')
#name=$(echo "$info" | jq -r '.[] | select(.name == "'${pkg}'")')
full_name=$(echo "$info" | jq -r '.[] | select(.name == "'${pkg}'") | (.full_name)') full_name=$(echo "$info" | jq -r '.[] | select(.name == "'${pkg}'") | (.full_name)')
desc=$(echo "$info" | jq -r '.[] | select(.name == "'${pkg}'") | (.desc)') desc=$(echo "$info" | jq -r '.[] | select(.name == "'${pkg}'") | (.desc)')
homepage=$(echo "$info" | jq -r '.[] | select(.name == "'${pkg}'") | (.homepage)') homepage=$(echo "$info" | jq -r '.[] | select(.name == "'${pkg}'") | (.homepage)')
@@ -102,18 +126,36 @@ get_info_pkg() {
#urls=$(echo "$info" | jq -r '.[] | select(.name == "'${pkg}'") | (.urls)' | jq -r '.stable | .url') #urls=$(echo "$info" | jq -r '.[] | select(.name == "'${pkg}'") | (.urls)' | jq -r '.stable | .url')
keg_only=$(echo "$info" | jq -r '.[] | select(.name == "'${pkg}'") | (.keg_only)') keg_only=$(echo "$info" | jq -r '.[] | select(.name == "'${pkg}'") | (.keg_only)')
caveats=$(echo "$info" | jq -r '.[] | select(.name == "'${pkg}'") | (.caveats)') caveats=$(echo "$info" | jq -r '.[] | select(.name == "'${pkg}'") | (.caveats)')
stable=$(echo "$info" | jq -r '.[] | select(.name == "'${pkg}'") | (.versions)' | jq -r '.stable') #stable=$(echo "$info" | jq -r '.[] | select(.name == "'${pkg}'") | (.versions)' | jq -r '.stable')
installed=$(echo "$info" | jq -r '.[] | select(.name == "'${pkg}'") | (.installed)' | jq -r '.[].version') #installed=$(echo "$info" | jq -r '.[] | select(.name == "'${pkg}'") | (.installed)' | jq -r '.[].version')
pinned=$(echo "$info" | jq -r '.[] | select(.name == "'${pkg}'") | (.pinned)') pinned=$(echo "$info" | jq -r '.[] | select(.name == "'${pkg}'") | (.pinned)')
#echo -e "installed: $installed\n"
installed_versions=$(echo "$upd_package" | jq -r '.[] | select(.name == "'${pkg2}'") | (.installed_versions)' | jq -r '.[]')
current_version=$(echo "$upd_package" | jq -r '.[] | select(.name == "'${pkg2}'") | (.current_version)')
#echo -e "installed_versions: $installed_versions\n"
#echo "stable: $current_version"
#echo "name: $name"
#echo "desc: $desc"
# Python@3.9 : multiples versions
ins=""
for i in $installed_versions
do
ins=$i
done
installed=$ins
if [ "$pinned" = "true" ]; then if [ "$pinned" = "true" ]; then
pinned_v=$(echo "$upd_package" | jq -r '.[] | select(.name == "'${pkg}'") | (.pinned_version)') pinned_v=$(echo "$upd_package" | jq -r '.[] | select(.name == "'${pkg}'") | (.pinned_version)')
l1+="${red}$name: installed: $installed stable: $stable [pinned at $pinned_v]" l1+="${red}$name: installed: $installed stable: $current_version [pinned at $pinned_v]"
[ "$keg_only" = true ] && l1+=" [keg-only]" [ "$keg_only" = true ] && l1+=" [keg-only]"
l1+="${reset}\n" l1+="${reset}\n"
else else
l1+="${bold}$name: installed: $installed stable: $stable" l1+="${bold}$name: installed: $installed stable: $current_version"
[ "$keg_only" = true ] && l1+=" [keg-only]" [ "$keg_only" = true ] && l1+=" [keg-only]"
l1+="${reset}\n" l1+="${reset}\n"
fi fi
@@ -125,6 +167,13 @@ get_info_pkg() {
echo -e "${bold}🍺 Homebrew ${reset}" echo -e "${bold}🍺 Homebrew ${reset}"
curl -Is https://www.apple.com | head -1 | grep 200 1>/dev/null
if [[ $? -eq 1 ]]; then
echo -e "\n${red}No Internet connection !${reset}"
echo -e "Exit !"
exit 1
fi
echo -e "\n🍺 ${underline}Updating brew...${reset}\n" echo -e "\n🍺 ${underline}Updating brew...${reset}\n"
brew update brew update
@@ -157,7 +206,10 @@ do
upd_pkg_notpinned+="$name " upd_pkg_notpinned+="$name "
fi fi
done done
#echo "$upd_pkgs"
upd_pkgs=$(echo "$upd_pkgs" | sed 's/.$//') upd_pkgs=$(echo "$upd_pkgs" | sed 's/.$//')
#echo "$upd_pkgs"
upd_pkg_pinned=$(echo "$upd_pkg_pinned" | sed 's/.$//') upd_pkg_pinned=$(echo "$upd_pkg_pinned" | sed 's/.$//')
upd_pkg_notpinned=$(echo "$upd_pkg_notpinned" | sed 's/.$//') upd_pkg_notpinned=$(echo "$upd_pkg_notpinned" | sed 's/.$//')
@@ -169,8 +221,10 @@ if [ "$nb_pkg_upd" -gt 0 ]; then
if [ "$display_info" = true ]; then if [ "$display_info" = true ]; then
[ "$nb_pkg_upd" -gt 1 ] && echo -e "${box} $nb_pkg_upd ${reset} ${array[@]/%/s}:\n" || echo -e "${box} $nb_pkg_upd ${reset} ${array[@]}:\n" [ "$nb_pkg_upd" -gt 1 ] && echo -e "${box} $nb_pkg_upd ${reset} ${array[@]/%/s}:\n" || echo -e "${box} $nb_pkg_upd ${reset} ${array[@]}:\n"
upd_pkgs_info=$(brew info --json=v2 $upd_pkgs | jq '{formulae} | .[]') upd_pkgs_info=$(brew info --json=v2 $upd_pkgs | jq '{formulae} | .[]')
#echo "$upd_pkgs_info"
for row in $upd_pkgs; for row in $upd_pkgs;
do do
#echo "$row"
get_info_pkg "$upd_pkgs_info" "$row" get_info_pkg "$upd_pkgs_info" "$row"
done done
else else
@@ -195,11 +249,12 @@ fi
touch /tmp/checkpoint touch /tmp/checkpoint
# Updating packages # Updating packages
echo -e "\n🍺 ${underline}Updating packages...${reset}\n"
[ -n "$upd_pkg_notpinned" ] && echo -e "${red}Pinned: $upd_pkg_pinned . It won't be updated!'${reset}\n"
if [ -n "$upd_pkg_notpinned" ]; then if [ -n "$upd_pkg_notpinned" ]; then
echo -e "\n🍺 ${underline}Updating packages...${reset}\n"
[ -n "$pkg_pinned" ] && echo -e "${red}Pinned: $upd_pkg_pinned . It won't be updated!'${reset}\n"
if [ "$no_distract" = false ]; then if [ "$no_distract" = false ]; then
a=$(echo -e "Do you wanna run ${bold}brew upgrade "$upd_pkg_notpinned"${reset} ? (y/n/a) ") a=$(echo -e "Do you wanna run ${bold}brew upgrade "$upd_pkg_notpinned"${reset} ? (y/n/a) ")
# yes/no/all # yes/no/all
@@ -208,6 +263,11 @@ if [ -n "$upd_pkg_notpinned" ]; then
if [ "$choice" == "y" ] || [ "$choice" == "Y" ] || [ "$choice" == "a" ] || [ "$choice" == "A" ]; then if [ "$choice" == "y" ] || [ "$choice" == "Y" ] || [ "$choice" == "a" ] || [ "$choice" == "A" ]; then
for i in $upd_pkg_notpinned; for i in $upd_pkg_notpinned;
do do
if [ "$i" == "bash" ]; then
echo -e "\nBash update available !"
echo -e "You should run ${bold}brew upgrade bash${reset} in another terminal !\n"
continue
fi
if [ "$choice" == "y" ] || [ "$choice" == "Y" ]; then if [ "$choice" == "y" ] || [ "$choice" == "Y" ]; then
echo "$i" | xargs -p -n 1 brew upgrade echo "$i" | xargs -p -n 1 brew upgrade
elif [ "$choice" == "a" ] || [ "$choice" == "A" ]; then elif [ "$choice" == "a" ] || [ "$choice" == "A" ]; then
@@ -236,11 +296,16 @@ echo ""
#Casks update #Casks update
echo -e "\n🍺 ${underline}Casks...${reset}\n" echo -e "\n🍺 ${underline}Casks...${reset}\n"
upd_cask=$(echo "$brew_outdated" | jq '{casks} | .[]') upd_cask=$(echo "$brew_outdated" | jq '{casks} | .[]')
# erreur avec PureVPN et plusieurs versions installées.
# parse error: Unfinished string at EOF at line 2, column 0
# parse error: Invalid numeric literal at line 1, column 7
#echo "$upd_cask"
for row in $(jq -c '.[]' <<< "$upd_cask"); for row in $(jq -c '.[]' <<< "$upd_cask");
do do
name=$(echo "$row" | jq -j '.name') name=$(echo "$row" | jq -j '.name')
installed_versions=$(echo "$row" | jq -j '.installed_versions') installed_versions=$(echo "$row" | jq -j '.installed_versions | .[]')
current_version=$(echo "$row" | jq -j '.current_version') current_version=$(echo "$row" | jq -j '.current_version')
if [ "$current_version" != "latest" ]; then if [ "$current_version" != "latest" ]; then
@@ -261,7 +326,7 @@ if (( ${#cask_to_not_update[@]} )); then
echo -e "${underline}List of${reset} ${box} $nbp ${reset} ${underline}'do not update' casks:${reset}" echo -e "${underline}List of${reset} ${box} $nbp ${reset} ${underline}'do not update' casks:${reset}"
echo -e "${red}${cask_to_not_update[*]}${reset}" echo -e "${red}${cask_to_not_update[*]}${reset}"
echo -e "To remove an app from this list, you need to edit the ${italic}do_not_update${reset} array." echo -e "To add/remove an app from this list, you need to edit the ${italic}pinned_cask${reset} variable in kymsu.cfg file."
echo "" echo ""
casks_not_pinned="" casks_not_pinned=""
@@ -290,6 +355,9 @@ fi
#Casks update #Casks update
echo -e "🍺 ${underline}Search for casks update...${reset}\n" echo -e "🍺 ${underline}Search for casks update...${reset}\n"
[ -n "$casks_latest_not_pinned" ] && echo -e "Some Casks have ${italic}auto_updates true${reset} or ${italic}version :latest${reset}. Homebrew Cask cannot track versions of those apps."
[ -n "$casks_latest_not_pinned" ] && echo -e "Edit this script and change the setting ${italic}latest=false${reset} to ${italic}true${reset}\n"
# Find infos about updated casks # Find infos about updated casks
nb_casks_upd=$(echo "$upd_casks" | wc -w | xargs) nb_casks_upd=$(echo "$upd_casks" | wc -w | xargs)
if [ "$nb_casks_upd" -gt 0 ]; then if [ "$nb_casks_upd" -gt 0 ]; then
@@ -305,41 +373,40 @@ if [ "$nb_casks_upd" -gt 0 ]; then
else else
[ "$nb_casks_upd" -gt 1 ] && echo -e "${box} $nb_casks_upd ${reset} ${array[@]/%/s}: ${bold}$upd_casks${reset}" || echo -e "${box} $nb_casks_upd ${reset} ${array[@]}: ${bold}$upd_casks${reset}" [ "$nb_casks_upd" -gt 1 ] && echo -e "${box} $nb_casks_upd ${reset} ${array[@]/%/s}: ${bold}$upd_casks${reset}" || echo -e "${box} $nb_casks_upd ${reset} ${array[@]}: ${bold}$upd_casks${reset}"
fi fi
fi
# Updating casks
echo -e "\n🍺 ${underline}Updating casks...${reset}\n"
[ "${#cask_to_not_update[@]}" -gt 0 ] && echo -e "${red}Do not update: ${cask_to_not_update[@]} . It won't be updated!'${reset}\n"
[ -n "$casks_latest_not_pinned" ] && echo -e "Some Casks have ${italic}auto_updates true${reset} or ${italic}version :latest${reset}. Homebrew Cask cannot track versions of those apps."
[ -n "$casks_latest_not_pinned" ] && echo -e "Edit this script and change the setting ${italic}latest=false${reset} to ${italic}true${reset}\n"
if [ -n "$casks_not_pinned" ]; then # Updating casks
echo -e "\n🍺 ${underline}Updating casks...${reset}\n"
if [ "$no_distract" = false ]; then [ "${#cask_to_not_update[@]}" -gt 0 ] && echo -e "${red}Do not update: ${cask_to_not_update[@]} . It won't be updated!'${reset}\n"
a=$(echo -e "Do you wanna run ${bold}brew upgrade $casks_not_pinned${reset} ? (y/n/a) ")
# yes/no/all
read -p "$a" choice
if [ "$choice" == "y" ] || [ "$choice" == "Y" ] || [ "$choice" == "a" ] || [ "$choice" == "A" ]; then
echo "" if [ -n "$casks_not_pinned" ]; then
for i in $casks_not_pinned;
do if [ "$no_distract" = false ]; then
if [ "$choice" == "y" ] || [ "$choice" == "Y" ]; then a=$(echo -e "Do you wanna run ${bold}brew upgrade $casks_not_pinned${reset} ? (y/n/a) ")
# --cask required for Cask like 'docker'. It can be a formula or a cask. # yes/no/all
echo "$i" | xargs -p -n 1 brew upgrade --cask read -p "$a" choice
echo ""
elif [ "$choice" == "a" ] || [ "$choice" == "A" ]; then if [ "$choice" == "y" ] || [ "$choice" == "Y" ] || [ "$choice" == "a" ] || [ "$choice" == "A" ]; then
echo "$i" | xargs -n 1 brew upgrade --cask echo ""
echo "" for i in $casks_not_pinned;
fi do
done if [ "$choice" == "y" ] || [ "$choice" == "Y" ]; then
# --cask required for Cask like 'docker'. It can be a formula or a cask.
echo "$i" | xargs -p -n 1 brew upgrade --cask
echo ""
elif [ "$choice" == "a" ] || [ "$choice" == "A" ]; then
echo "$i" | xargs -n 1 brew upgrade --cask
echo ""
fi
done
else
echo -e "OK, let's continue..."
fi
else else
echo -e "OK, let's continue..." echo "$casks_not_pinned" | xargs -n 1 brew upgrade --cask
fi fi
else
echo "$casks_not_pinned" | xargs -n 1 brew upgrade --cask
fi fi
else else
@@ -412,7 +479,7 @@ dir=$(dirname $conf_apa)
name=$(basename $conf_apa) name=$(basename $conf_apa)
notif1="$dir has been modified in the last 5 minutes" notif1="$dir has been modified in the last 5 minutes"
test=$(find $dir -name "$name" -mmin -5 -maxdepth 1) test=$(find $dir -maxdepth 1 -name "$name" -mmin -5)
echo "$test" echo "$test"
@@ -421,14 +488,17 @@ echo "$test"
# Test if PHP.ini file has been modified by Homebrew (PECL) # Test if PHP.ini file has been modified by Homebrew (PECL)
php_versions=$(ls /usr/local/etc/php/) # Fichier php.ini courant
# php -i | grep 'Loaded Configuration File' | awk '{print $NF}'
php_versions=$(ls $(brew --prefix)/etc/php/ 2>/dev/null)
for php in $php_versions for php in $php_versions
do do
if [ -n "$upd_pkg" ]; then if [ -n "$upd_pkg" ]; then
# file modified since it was last read # file modified since it was last read
php_modified=$(find /usr/local/etc/php/$php/ -name php.ini -newer /tmp/checkpoint) php_modified=$(find $(brew --prefix)/etc/php/$php/ -name php.ini -newer /tmp/checkpoint)
php_ini=/usr/local/etc/php/$php/php.ini php_ini=$(brew --prefix)/etc/php/$php/php.ini
notif2="$php_ini has been modified" notif2="$php_ini has been modified"
echo "$php_modified" echo "$php_modified"
@@ -449,6 +519,11 @@ echo -e "\n🍺 ${underline}The Doc is checking that everything is ok...${reset}
brew doctor brew doctor
echo "python-cryptography required by certbot"
echo "python-certifi required by certbot and yt-dlp"
echo "numpy required ffmpeg and openvin"
# suprimer: python-packaging python-argcomplete
brew missing brew missing
status=$? status=$?
if [ $status -ne 0 ]; then brew missing --verbose; fi if [ $status -ne 0 ]; then brew missing --verbose; fi
+29 -21
View File
@@ -7,19 +7,21 @@
# Settings: # Settings:
# npm local install # npm local install
local_path=/Users/bruno/Sites/node_modules/ local_path=$HOME/Sites/node_modules/
# folder contains Brewfile and Installer.md # folder contains Brewfile and Installer.md
#chemin=$(pwd) #chemin=$(pwd)
chemin=$HOME/Documents/kymsu chemin=$HOME/Documents/kymsu
#version: pip ou pip3 #version: pip ou pip3
pip_version=pip3 pip_version=pip3
# #
# https://github.com/atom/apm/tags
apm=false
######################################### #########################################
#if [ ! -d chemin ]; then mkdir $chemin; fi #if [ ! -d chemin ]; then mkdir $chemin; fi
mkdir -p $chemin mkdir -p $chemin
now=$(date +"%d-%m-%Y_%T") now=$(date +"%d-%m-%Y_%T" | sed 's/://g')
mac=$(hostname -s) mac=$(hostname -s)
file=$mac"@"$now file=$mac"@"$now
filename="Installed_$file" filename="Installed_$file"
@@ -152,24 +154,25 @@ echo ''
# atom # atom
echo -e "⚛️ Get \033[3m\033[93mAtom editor packages\033[0m installed list" if [ "$apm" = "true" ]; then
atom=$(apm list | grep 'Community Packages' -A 100 | sed '1,1d') echo -e "⚛️ Get \033[3m\033[93mAtom editor packages\033[0m installed list"
{ atom=$(apm list | grep 'Community Packages' -A 100 | sed '1,1d')
echo '## ⚛️ Atom packages' {
echo '' echo '## ⚛️ Atom packages'
echo "\`\`\`bash" echo ''
echo "\`\`\`bash"
while read -r line; do while read -r line; do
a=$(echo "$line" | awk -F "@" '{print $1}' | awk '{print $2}' ) a=$(echo "$line" | awk -F "@" '{print $1}' | awk '{print $2}' )
#atom_pkg=${a:4} #atom_pkg=${a:4}
echo "$a" echo "$a"
done <<< "$atom" done <<< "$atom"
echo "\`\`\`"
echo ""
echo ''
} >> $chemin/Installed.md
echo "\`\`\`"
echo ""
echo ''
} >> $chemin/Installed.md
fi
# Node.js packages (npm) # Node.js packages (npm)
echo -e "🌿 Get npm \033[3m\033[93m node global packages\033[0m installed scripts" echo -e "🌿 Get npm \033[3m\033[93m node global packages\033[0m installed scripts"
@@ -235,11 +238,16 @@ echo ''
echo -e "🍺 Create a \033[3m\033[93mBrewfile\033[0m:" echo -e "🍺 Create a \033[3m\033[93mBrewfile\033[0m:"
echo "list all of the installed brew packages, cask applications, and Mac App Store applications currently on the machine..." echo "list all of the installed brew packages, cask applications, and Mac App Store applications currently on the machine..."
brew bundle dump brew bundle dump
echo '' echo -e "To restore everything listed in that file, run \033[3m\033[93m'brew bundle'\033[0m in folder that contains the Brewfile."
echo -e "To restore everything listed in that file, run \033[3m\033[93m'$ brew bundle'\033[0m in folder that contains the Brewfile."
echo '' echo ''
mv Brewfile "$chemin/Brewfile" mv $chemin/Brewfile "$chemin/Brewfile_$file".md
y=$(find . -type f -name 'Brewfile*' -mtime +10 -maxdepth 1)
if [ -n "$y" ]; then
nb=$(echo "$y" | wc -l)
echo "$y" | xargs rm
[ $? ] && echo -e "\033[93m$nb Brewfile_*\033[0m files removed !\n\n"
fi
#iconv -f macroman -t utf-8 Installed.md > Installed-utf8.md #iconv -f macroman -t utf-8 Installed.md > Installed-utf8.md
#mv Installed-utf8.md "$filename".md #mv Installed-utf8.md "$filename".md
+22
View File
@@ -0,0 +1,22 @@
# General
italic=\033[3m
underline=\033[4m
ita_under=\033[3;4m
bgd=\033[1;4;31m
red=\033[1;31m
bold=\033[1m
box=\033[1;41m
green=\033[1;32m
bold_ita=\033[1;3m
redbold=\033[1;31m
redbox=\033[1;41m
reset=\033[0m
last.update=1658067929
# Homebrew
pinned_cask=ff-works mole
# Node
pinned_npm=@squoosh/cli
npm_local_path=$HOME/Sites # $HOME not evaluated
+1
View File
@@ -0,0 +1 @@
last.update=1658067929
+84 -15
View File
@@ -4,7 +4,9 @@
# https://github.com/welcoMattic/kymsu # https://github.com/welcoMattic/kymsu
# No distract mode (no user interaction) # No distract mode (no user interaction)
[[ $@ =~ "--nodistract" ]] && no_distract=true || no_distract=false [[ $@ =~ "-nodistract" || $@ =~ "-n" ]] && no_distract=true || no_distract=false
testing=1
italic="\033[3m" italic="\033[3m"
underline="\033[4m" underline="\033[4m"
@@ -20,37 +22,104 @@ reset="\033[0m"
echo -e "${bold}🍏 Mac App Store updates come fast as lightning ${reset}" echo -e "${bold}🍏 Mac App Store updates come fast as lightning ${reset}"
echo -e "https://github.com/mas-cli/mas" echo ""
echo -e "mas : https://github.com/mas-cli/mas"
command -v mas >/dev/null 2>&1 || { echo -e "\n${bold}mas${reset} is not installed.\n\nRun ${italic}'brew install mas'${reset} for install." && exit 1; }
latest_v=$(curl -s https://api.github.com/repos/mas-cli/mas/releases/latest | jq -j '.tag_name')
current_v=$(mas version)
echo -e "Current version: $current_v"
echo -e "Latest version: $latest_v"
# On teste si mas est installé # On teste si mas est installé
if hash mas 2>/dev/null; then if hash mas 2>/dev/null; then
massy=$(mas outdated) massy=$(mas outdated)
echo "" echo ""
echo "$massy" #echo "$massy"
nomoreatstore=$(echo "$massy" | grep "not found in store")
outdated=$(echo "$massy" | grep -v "not found in store")
if [ -n "$(mas outdated)" ]; then if [ -n "$outdated" ]; then
echo -e "${underline}Availables updates:${reset}" echo -e "${underline}Availables updates:${reset}"
echo "$massy" | cut -d " " -f2-5 echo "$outdated" | awk '{ $1=""; print}'
echo "--"
#echo "$outdated" | awk '{ $1=""; $3=""; print}'
echo "" echo ""
if [ "$no_distract" = false ]; then #if [ "$no_distract" = false ]
if [[ $testing -ne 1 ]]; then
#if (( $testing == 1 )); then
a=$(echo -e "Do you wanna run \033[1mmas upgrade${reset} ? (y/n)") #a=$(echo -e "Do you wanna run \033[1mmas upgrade${reset} ? (y/n)")
read -pr "$a" choice #read -pr "$a" choice
case "$choice" in a=$(echo -e "Do you wanna run \033[1mmas upgrade${reset} ? (y/n) ")
y|Y|o ) mas upgrade;; read -p "$a" choice
n|N ) echo "Ok, let's continue";;
* ) echo "invalid";; if [ "$choice" == "y" ] || [ "$choice" == "Y" ] || [ "$choice" == "a" ] || [ "$choice" == "A" ]; then
esac
#case "$choice" in
# y|Y|o ) mas upgrade;;
# n|N ) echo "Ok, let's continue";;
# * ) echo "invalid";;
#esac
while IFS=\n read -r line
#for line in "$outdated"
do
echo "$line"
idendifiant=$(echo "$line" | awk '{print $1}')
nom=$(echo "$line" | awk -F "(" '{print $1}' | awk '{ $1=""; print}' | xargs)
nom_version=$(echo "$line" | awk '{ $1=""; print}')
version=$(echo "$line" | awk -F "(" '{print $2}' | sed 's/.$//')
echo "$idendifiant - $nom - $version"
#echo "$version"
#b=$(echo -e "Do you wanna run ${bold}mas upgrade $nom ${reset} ${italic}$version${reset} ? (y/n) ")
#read -p "$b" upg
#echo "-- $upg --"
#if [ "$upg" == "y" ] || [ "$upg" == "Y" ]; then
# mas upgrade "$idendifiant"
#fi
echo "-- fin --"
#echo "$line" | awk '{print $1}' | xargs -p -n 1 mas upgrade
done <<< "$outdated"
#done
else
echo -e "OK, let's continue..."
fi
else #else
mas upgrade # mas upgrade
fi fi
else else
echo -e "${italic}No availables mas updates.${reset}" echo -e "${italic}No availables mas updates.${reset}"
fi fi
if [ -n "$nomoreatstore" ]; then
echo -e "\n${underline}Apps no more in App Store:${reset}"
while IFS= read -r line
do
id=$(echo "$line" | awk '{print $3}')
#name=$(echo "$line" | awk '{print $12}' | sed 's/.$//')
name=$(echo "$line" | awk -F "identify" '{print $2}' | sed 's/.$//' | xargs)
echo -e "$name ($id)"
done <<< "$nomoreatstore"
fi
else else
echo -e "Please install mas: ${italic}brew install mas${reset}" echo -e "Please install mas: ${italic}brew install mas${reset}"
fi fi
-251
View File
@@ -1,251 +0,0 @@
#!/usr/bin/env bash
# npm plugin for KYMSU (install local package)
# https://github.com/welcoMattic/kymsu
#########################################
#
# Settings:
# Display info on updated pakages / casks
display_info=true
# No distract mode (no user interaction)
[[ $@ =~ "--nodistract" ]] && no_distract=true || no_distract=false
# Set ls_color to '' for output nvm list in default colors, else '--no-colors'
# ls_color='--no-colors'
# ls_color='BrGcm' for custom colors
# export NVM_COLORS='BrGcm' in .zshrc for persistant custom colors
# Set doctor=true to run 'npm doctor' and 'npm cache verify' each time
doctor=true
# Local install
local_path=$HOME/Sites/node_modules/
#########################################
: <<'END_COMMENT'
blabla
END_COMMENT
italic="\033[3m"
underline="\033[4m"
ita_under="\033[3;4m"
bgd="\033[1;4;31m"
red="\033[1;31m"
bold="\033[1m"
bold_ita="\033[1;3m"
box="\033[1;41m"
reset="\033[0m"
upd_nvm() {(
cd "$NVM_DIR"
git fetch --tags origin
git checkout `git describe --abbrev=0 --tags --match "v[0-9]*" $(git rev-list --tags --max-count=1)`
) && \. "$NVM_DIR/nvm.sh"
}
echo -e "${bold}🌿 npm ${reset}"
echo ""
# version courante de node.js
node_v=$(node -v)
node_ins=$(which node)
echo -e "${underline}🌿 node.js:${reset}"
echo -e " - current version: ${italic}$node_v${reset}"
echo -e " - install path: ${italic}$node_ins${reset}"
# version courante de npm
npm_v=$(npm -v)
npm_ins=$(which npm)
echo -e "\n${underline}🌿 npm:${reset}"
echo -e " - current version: ${italic}$npm_v${reset}"
echo -e " - install path: ${italic}$npm_ins${reset}"
# version installée de nvm par Homebrew
# nvm_installed=$(brew info nvm | grep Cellar)
# version actuelle de nvm sur GitHub
version_nvm=$(git ls-remote --tags --refs --sort="v:refname" git://github.com/nvm-sh/nvm.git | tail -n1 | sed 's/.*\///' | sed 's/v//')
# nvm from github
if [ -f "$NVM_DIR/nvm.sh" ]; then
source $NVM_DIR/nvm.sh
# version courante de nvm
nvm_v=$(nvm --version)
echo -e "\n${underline}🌿 nvm install is:${reset} $NVM_DIR/nvm.sh"
echo " - nvm $nvm_v is installed from https://github.com/nvm-sh/nvm"
if [ "$nvm_v" != "$version_nvm" ]; then
echo "Current nvm version on GitHub: $version_nvm"
echo "Current nvm installed version: $nvm_v"
read -p "Do you want to update nvm from GitHub repo? (y/n)" choice
if [ "$choice" == "y" ]; then
echo "Updating nvm from GitHub..."
#curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v"$version_nvm"/install.sh | bash
upd_nvm
#curl: native on Catalina, wget installed by homebrew
#wget -qO- https://raw.githubusercontent.com/nvm-sh/nvm/v0.35.2/install.sh | bash
#curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.35.2/install.sh | bash
fi
fi
node_install=$(nvm list "$ls_color")
echo -e "\n${underline}🌿 node.js${reset} (installed versions): \n$node_install"
# nvm from homebrew
elif [ -f "/usr/local/opt/nvm/nvm.sh" ]; then
source $(brew --prefix nvm)/nvm.sh
# version courante de nvm
nvm_v=$(nvm --version)
echo -e "\n${underline}🌿 nvm install is:${reset} /usr/local/opt/nvm/nvm.sh"
echo "nvm $nvm_v is installed from homebrew"
if [ "$nvm_v" != "$version_nvm" ]; then
echo "Current nvm version on GitHub: $version_nvm"
echo "Current nvm installed version: $nvm_v"
echo -e "nvm is outdated ! You should run \033[1;3mbrew update && brew upgrade nvm\033[0m"
echo -e "or run \033[1;3mKymsu's homebrew.sh script.${reset}"
fi
node_install=$(nvm list "$ls_color")
echo -e "\n${underline}🌿 node.js${reset} (installed versions): \n$node_install"
fi
echo -e "${italic}Note:"
echo -e "N/A: version \"10.18.0 -> N/A\" is not yet installed."
echo -e "You need to run \"nvm install 10.18.0\" to install it before using it.${reset}"
echo ""
##################
# Local packages #
##################
if [ -d "$local_path" ]; then
cd "$local_path" || return
echo -e "${underline}🌿 Local installed scripts:${reset}"
if [ "$display_info" = true ]; then
ll=$(npm ls --long | grep -v 'git$')
while IFS= read -r line
do
if [[ "${line}" =~ "──" ]] || [[ "${line}" =~ "─┬" ]]; then
echo -e "${bold}${line}${reset}"
else
echo -e "${line}"
fi
done <<< "$ll"
else
npm ls
fi
echo -e "\n${underline}🌿 Search for local packages update...${reset}\n"
outdated=$(npm outdated)
if [ -n "$outdated" ]; then
echo -e "\n${underline}🌿 Updating local packages...${reset}\n"
if [ "$no_distract" = false ]; then
#echo "$outdated"
echo "$outdated" | awk '{print $1}' | xargs -p -n 1 npm update
else
#echo "$outdated"
echo "$outdated" | awk '{print $1}' | xargs -n 1 npm update
fi
else
echo -e "${italic}No local packages updates.${reset}"
fi
fi
echo ""
###################
# Global packages #
###################
echo -e "${underline}🌿 Global installed scripts:${reset}"
if [ "$display_info" = true ]; then
lg=$(npm list -g --depth=0 --long | grep -v 'git$')
while IFS= read -r line
do
if [[ "${line}" =~ "──" ]]; then
echo -e "${bold}${line}${reset}"
else
echo -e "${line}"
fi
done <<< "$lg"
else
npm list -g --depth=0
fi
#Packages update
echo -e "\n${underline}🌿 Search for global packages update...${reset}\n"
glong_outdated=$(npm outdated -g --long | sed '1d')
if [ -n "$glong_outdated" ]; then
echo -e "$glong_outdated\n"
echo -e "\n${underline}🌿 Updating global packages...${reset}\n"
while IFS= read -r line
do
pkg=$(echo "$line" | awk '{print $1}')
vers=$(echo "$line" | awk '{print $4}')
outdated="$pkg@$vers"
# TEST
version=$(echo "$line" | awk '{print $1 "@" $4}')
echo "$version"
# /test
if [ "$no_distract" = false ]; then
echo "$outdated" | xargs -p -n 1 npm -g install
echo ""
else
echo "$outdated" | xargs -n 1 npm -g install
echo ""
fi
done <<< "$glong_outdated"
else
echo -e "${italic}No global packages updates.${reset}"
fi
echo ""
###############
# Maintenance #
###############
if [ "$doctor" = true ]; then
echo -e "${underline}🌿 The Doc is checking that everything is ok.${reset}\n"
npm doctor
echo ""
echo -e "🔍 Verifying npm cache\n"
npm cache verify
echo ""
fi
echo ""
+500
View File
@@ -0,0 +1,500 @@
#!/usr/bin/env bash
# npm plugin for KYMSU (install local package)
# https://github.com/welcoMattic/kymsu
#
source config.shlib; # load the config library functions
#########################################
#
# Settings:
# Display info on updated pakages / casks
display_info=true
# No distract mode (no user interaction)
[[ $@ =~ "-nodistract" || $@ =~ "-n" ]] && no_distract=true || no_distract=false
# Set ls_color to '' for output nvm list in default colors, else '--no-colors'
# ls_color='--no-colors'
# ls_color='BrGcm' for custom colors
# export NVM_COLORS='BrGcm' in .zshrc for persistant custom colors
# Set doctor=true to run 'npm doctor' and 'npm cache verify' each time
doctor=true
# Set update_node to true to update node.
update_node=true
# Local install:
# run 'npm init' in local_path to create package.json
local_path=$HOME/Sites
#local_path=$(config_get npm_local_path) # $HOME not evaluated
# Add module to the do_not_update array for prevent to update.
#declare -a do_not_update=()
#declare -a do_not_update=("parso" "asgiref")
#declare -a do_not_update=("@squoosh/cli")
pinned_npm="$(config_get pinned_npm)"
declare -a npm_do_not_update=($pinned_npm)
#########################################
: <<'END_COMMENT'
blabla
italic="\033[3m"
underline="\033[4m"
ita_under="\033[3;4m"
bgd="\033[1;4;31m"
red="\033[1;31m"
green="\033[1;32m"
bold="\033[1m"
bold_ita="\033[1;3m"
box="\033[1;41m"
redbold="\033[1;31m"
redbox="\033[1;41m"
reset="\033[0m"
END_COMMENT
italic="$(config_get italic)"
underline="$(config_get underline)"
ita_under="$(config_get ita_under)"
bgd="$(config_get bgd)"
red="$(config_get red)"
bold="$(config_get bold)"
box="$(config_get box)"
green="$(config_get green)"
bold_ita="$(config_get bold_ita)"
redbold="$(config_get redbold)"
redbox="$(config_get redbox)"
reset="$(config_get reset)"
upd_nvm() {(
cd "$NVM_DIR"
git fetch --tags origin
git checkout `git describe --abbrev=0 --tags --match "v[0-9]*" $(git rev-list --tags --max-count=1)`
) && \. "$NVM_DIR/nvm.sh"
}
export NVM_DIR="$HOME/.nvm"
[ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh" # This loads nvm
[ -s "$NVM_DIR/bash_completion" ] && \. "$NVM_DIR/bash_completion" # This loads nvm bash_completion
echo -e "${bold}🌿 npm ${reset}"
echo ""
# version courante de node.js
node_v=$(node -v)
node_ins=$(which node)
echo -e "${underline}🌿 node.js:${reset}"
echo -e " - current version: ${italic}$node_v${reset}"
echo -e " - install path: ${italic}$node_ins${reset}"
# version courante de npm
npm_v=$(npm -v)
npm_ins=$(which npm)
old_npm="$npm_v"
echo -e "\n${underline}🌿 npm:${reset}"
echo -e " - current version: ${italic}$npm_v${reset}"
echo -e " - install path: ${italic}$npm_ins${reset}"
curl -Is https://www.apple.com | head -1 | grep 200 1>/dev/null
if [[ $? -eq 1 ]]; then
echo -e "\n${red}No Internet connection !${reset}"
echo -e "Exit !"
exit 1
fi
# version installée de nvm par Homebrew
# nvm_installed=$(brew info nvm | grep Cellar)
# version actuelle de nvm sur GitHub
version_nvm=$(git ls-remote --tags --refs --sort="v:refname" https://github.com/nvm-sh/nvm.git | tail -n1 | sed 's/.*\///' | sed 's/v//')
# nvm from github
if [ -f "$NVM_DIR/nvm.sh" ]; then
source $NVM_DIR/nvm.sh
# version courante de nvm
nvm_v=$(nvm --version)
echo -e "\n${underline}🌿 nvm install is:${reset} $NVM_DIR/nvm.sh"
echo " - nvm $nvm_v is installed from https://github.com/nvm-sh/nvm"
if [ -n "$version_nvm" ]; then
if [ "$nvm_v" != "$version_nvm" ]; then
echo "Current nvm version on GitHub: $version_nvm"
echo "Current nvm installed version: $nvm_v"
read -p "Do you want to update nvm from GitHub repo? (y/n)" choice
if [ "$choice" == "y" ]; then
echo "Updating nvm from GitHub..."
#curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v"$version_nvm"/install.sh | bash
upd_nvm
#curl: native on Catalina, wget installed by homebrew
#wget -qO- https://raw.githubusercontent.com/nvm-sh/nvm/v0.35.2/install.sh | bash
#curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.35.2/install.sh | bash
fi
fi
fi
node_install=$(nvm list "$ls_color")
echo -e "\n${underline}🌿 node.js${reset} (installed versions): \n$node_install"
# nvm from homebrew
elif [ -f "/usr/local/opt/nvm/nvm.sh" ]; then
source $(brew --prefix nvm)/nvm.sh
# version courante de nvm
nvm_v=$(nvm --version)
echo -e "\n${underline}🌿 nvm install is:${reset} /usr/local/opt/nvm/nvm.sh"
echo "nvm $nvm_v is installed from homebrew"
if [ "$nvm_v" != "$version_nvm" ]; then
echo "Current nvm version on GitHub: $version_nvm"
echo "Current nvm installed version: $nvm_v"
echo -e "nvm is outdated ! You should run \033[1;3mbrew update && brew upgrade nvm\033[0m"
echo -e "or run \033[1;3mKymsu's homebrew.sh script.${reset}"
fi
node_install=$(nvm list "$ls_color")
echo -e "\n${underline}🌿 node.js${reset} (installed versions): \n$node_install"
fi
echo -e "${italic}Note:"
echo -e "N/A: version \"10.18.0 -> N/A\" is not yet installed."
echo -e "You need to run \"nvm install 10.18.0\" to install it before using it.${reset}"
echo ""
# Do not update packages
if [ ${#npm_do_not_update[@]} -gt 0 ]; then
nbp="${#npm_do_not_update[@]}"
echo -e "${underline}🌿 List of${reset} ${redbox} $nbp ${reset} ${underline}'do not update' packages:${reset}"
echo -e "${redbold}${npm_do_not_update[@]}${reset}"
echo -e "To remove package from this list, you need to edit the ${italic}pinned_npm${reset} variable in ${italic}kymsu.cfg${reset} file."
echo ""
fi
##################
# Local packages #
##################
# 1. Create package.json file with 'npm init'
# or copy packagejson in $local_path
# 2. Install node modules with 'npm install' in $local_path\node_modules
# Local folder exist and not empty (modules installed)
#if [ -d "$local_path/node_modules" ] && [ -n "$(ls -A "$local_path/node_modules")" ]; then
if find "$local_path/node_modules" -mindepth 1 -maxdepth 1 | read; then
echo -e "${underline}🌿 Local installed scripts:${reset}"
cd "$local_path" || return
if [ "$display_info" = true ]; then
ll=$(npm ls --long | grep -v 'git$')
x=
while IFS= read -r line
do
if [[ "${line}" =~ "──" ]] || [[ "${line}" =~ "─┬" ]]; then
local_pkg=$(echo "${line}" | awk '{print $2}' | awk -F"@" '{print $1}')
#echo -e "${bold}${line}${reset}"
info_pkg=$(npm view "$local_pkg" | sed -n '3,4p')
q=$(echo "$info_pkg" | sed "s/^/| /")
#echo -e "$q"
x+="${bold}${line}${reset}\n"
x+="$q\n"
else
#echo -e "${line}"
x+="${line}\n"
fi
done <<< "$ll"
else
npm ls
fi
echo -e "$x"
echo -e "\n${underline}🌿 Search for local packages update...${reset}\n"
outdated=$(npm outdated --long | sed '1d')
if [ -n "$outdated" ]; then
nb_update=$(echo "outdated" | wc -l | xargs)
a="available package update"
array=($a)
[ "$nb_update" -gt 1 ] && echo -e "${box} $nb_update ${reset} ${array[@]/%/s}:\n" || echo -e "${box} $nb_update ${reset} ${array[@]}:\n"
echo -e "\n${underline}🌿 Updating local packages...${reset}\n"
while IFS= read -r i
do
package=$(echo "$i" | awk '{print $1}')
current=$(echo "$i" | awk '{print $2}') # 2.8.3
wanted=$(echo "$i" | awk '{print $3}') # 2.8.3
latest=$(echo "$i" | awk '{print $4}') # 2.9.0-beta.1
j=$(echo "$current" | awk -F "." '{print $1}')
k=$(echo "$latest" | awk -F "." '{print $1}')
if [[ ! " ${npm_do_not_update[@]} " =~ " ${package} " ]]; then
# Update major version 1.x.y to 2.x.y
if [ $current = $wanted ] && [ "$j" -lt "$k" ]; then
if [ "$no_distract" = false ]; then
echo "$package@latest" | xargs -p npm install
else
echo "$package@latest" | xargs npm install
#npm install "$package@latest"
fi
# Update minor or patch version
else
if [ "$no_distract" = false ]; then
echo "$package" | xargs -p npm update
else
echo "$package" | xargs npm update
fi
fi
else
echo -e "${redbold}$package is pinned to version $current !${reset} Don't update !"
fi
done <<< "$outdated"
else
echo -e "${italic}No local packages updates.${reset}"
fi
else
echo -e "${italic}No local folder !${reset}"
fi
echo ""
###################
# Global packages #
###################
echo -e "${underline}🌿 Global installed scripts:${reset}"
if [ "$display_info" = true ]; then
lg=$(npm list --location=global --depth=0 --long | grep -v 'git$')
x=""
q=""
all_global_pkgs=""
while IFS= read -r line
do
if [[ "${line}" =~ "──" ]]; then
#echo -e "${bold}${line}${reset}"
global_pkg=$(echo "${line}" | awk '{print $2}' | awk -F"@" '{print $1}')
#echo -e "${bold}${line}${reset}"
info_pkg=$(npm view "$global_pkg" | sed -n '4p')
q=$(echo "$info_pkg" | sed "s/^/| /")
#echo "$q"
x+="${bold}${line}${reset}\n"
all_global_pkgs="$all_global_pkgs $global_pkg"
elif [[ ${#line} > 2 ]]; then
#echo -e "${line}"
x+="${line}\n"
x+="$q\n"
fi
done <<< "$lg"
else
npm list --location=global --depth=0
fi
echo -e "$x"
#echo "$all_global_pkgs"
#Packages update
echo -e "\n${underline}🌿 Search for global packages update...${reset}\n"
glong_outdated=$(npm outdated --location=global --long | sed '1d')
if [ -n "$glong_outdated" ]; then
nb_update_global=$(echo "$glong_outdated" | wc -l | xargs)
a="available package update"
array=($a)
[ "$nb_update_global" -gt 1 ] && echo -e "${box} $nb_update_global ${reset} ${array[@]/%/s}:\n" || echo -e "${box} $nb_update_global ${reset} ${array[@]}:\n"
echo -e "$glong_outdated\n"
echo -e "\n${underline}🌿 Updating global packages...${reset}\n"
# Disable: Would you like to share anonymous usage data with the Angular Team at Google ?
if [[ " $glong_outdated " =~ "angular" ]]; then
export NG_CLI_ANALYTICS="false"
fi
# 15 packages are looking for funding
while IFS= read -r line
do
pkg=$(echo "$line" | awk '{print $1}')
curr=$(echo "$line" | awk '{print $2}')
vers=$(echo "$line" | awk '{print $4}')
outdated="$pkg@$vers"
if [[ ! " ${npm_do_not_update[@]} " =~ " ${pkg} " ]]; then
# TEST
#version=$(echo "$line" | awk '{print $1 "@" $4}')
#echo "$version"
# /test
if [ "$no_distract" = false ]; then
echo "$outdated" | xargs -p -n 1 npm --location=global install
echo ""
else
echo "$outdated" | xargs -n 1 npm --location=global install
echo ""
fi
else
echo -e "${redbold}$pkg is pinned to version $curr !${reset} Don't update !"
fi
done <<< "$glong_outdated"
else
echo -e "${italic}No global packages updates.${reset}"
fi
echo ""
###############
# Maintenance #
###############
if [ "$doctor" = true ]; then
echo -e "${underline}🌿 The Doc is checking that everything is ok.${reset}\n"
#npm doctor
doc=$(cd "$local_path" && npm doctor)
while IFS= read -r line
do
if [[ "${line}" =~ "Not ok" ]]; then
echo -e "${red}${line}${reset}"
elif [[ "${line}" =~ "Ok" ]]; then
echo -e "${green}${line}${reset}"
else
echo -e "${line}"
fi
done <<< "$doc"
#echo -e "$doc\n"
# search not ok => red
#npm_v=$(echo "$doc" | grep 'npm -v')
#node_v=$(echo "$doc" | grep 'node -v')
npm_v=$(echo "$doc" | grep -A2 'Checking npm version')
node_v=$(echo "$doc" | grep -A2 'Checking node version')
if [[ " $node_v " =~ "Not ok" ]]; then
no=$(echo "$node_v" | sed -n '$p')
new_node=$(echo "$no" | awk '{print $3}' | sed 's/^.//')
old_node=$(echo "$no" | awk '{print $5}' | sed 's/.//;s/.$//')
if [ "$new_node" != "$old_node" ] && [ "$update_node" = true ]; then
: <<'END_COMMENT'
b=$(echo -e "\nCurrent node: v$old_node. Update ${bold}node${reset} to ${bold}v$new_node${reset} [y/n] ? ")
read -e -p "$b" rep2
if [ "$rep2" == "y" ] || [ "$rep2" == "Y" ]; then
. $HOME/.nvm/nvm.sh
echo -e "\n${bold}Updating node to v$new_node...${reset}"
nvm install "$new_node"
echo -e "\n${bold}Updating npm...${reset}"
npm --location=global install npm
#
nvm use $new_node
echo -e "\n${bold}Reinstall packages from v$old_node...${reset}"
nvm reinstall-packages "$old_node"
fi
END_COMMENT
echo -e "\nCurrent node: v$old_node. Press \"u\" to update ${bold}node${reset} to ${bold}v$new_node${reset}"
#read -sn1 c && printf "You Pressed: %s\n" "$c"
read -sn1 c
if [ "$c" == "u" ] || [ "$c" == "U" ]; then
sleep 3
. $HOME/.nvm/nvm.sh
echo -e "\n${bold}Updating node to v$new_node...${reset}"
nvm install "$new_node"
echo -e "\n${bold}Updating npm...${reset}"
npm --location=global install npm
#
nvm use $new_node
echo -e "\n${bold}Reinstall packages from v$old_node...${reset}"
echo "$all_global_pkgs"
# nvm reinstall-packages bloque sur thumbsup (better-sql)
#nvm reinstall-packages "$old_node"
for i in "$all_global_pkgs"
do
echo "--$i--"
done
#npm install -g "$all_global_pkgs"
fi
fi
fi
if [[ " $npm_v " =~ "Not ok" ]]; then
np=$(grep -o -E "v([0-9]{1,2}\.){2}[0-9]{1,2}" <<< "$npm_v")
new_npm=$(echo "${np:1}") # 10.7.0
if [ "$new_npm" != "$old_npm" ]; then
echo -e "${underline}\nUdpate available for npm.${reset}"
echo -e " - Current: ${red}v$old_npm${reset}"
echo -e " - Update: ${green}v$new_npm${reset}"
echo -e "You should run:"
echo -e " - ${bold}npm --location=global install npm${reset}"
fi
fi
echo ""
echo "Troubleshooting:"
echo "https://github.com/nvm-sh/nvm#macos-troubleshooting"
echo ""
echo -e "🔍 Verifying npm cache\n"
npm cache verify
echo ""
fi
echo ""
+113 -26
View File
@@ -12,6 +12,11 @@
# No distract mode (no user interaction) # No distract mode (no user interaction)
[[ $@ =~ "--nodistract" ]] && no_distract=true || no_distract=false [[ $@ =~ "--nodistract" ]] && no_distract=true || no_distract=false
# #
# Display PHP informations
display_info=true
# Open PHP info in Safari
php_info=false
#
######################################### #########################################
italic="\033[3m" italic="\033[3m"
@@ -19,6 +24,7 @@ underline="\033[4m"
ita_under="\033[3;4m" ita_under="\033[3;4m"
bgd="\033[1;4;31m" bgd="\033[1;4;31m"
red="\033[1;31m" red="\033[1;31m"
blue="\033[34m"
bold="\033[1m" bold="\033[1m"
box="\033[1;41m" box="\033[1;41m"
reset="\033[0m" reset="\033[0m"
@@ -43,65 +49,128 @@ echo ""
echo -e "${bold}❗️ plugin en test (beta) ${reset}" echo -e "${bold}❗️ plugin en test (beta) ${reset}"
echo "" echo ""
# /usr/local/Cellar/php/7.4.11/bin/pecl
# /usr/local/Cellar/php@7.3/7.3.23/bin/pecl
# /usr/local/Cellar/php@7.2/7.2.33/bin/pecl
#pecl_upgrade=$(pecl list-upgrades) # Airbook
#❯ echo $(brew --prefix)
#/opt/homebrew
#❯ which -a php
#/opt/homebrew/bin/php
#/usr/bin/php
#/opt/homebrew/opt/php
#❯ php --info | grep 'PHP Version'
#PHP Version => 7.3.24-(to be removed in future macOS)
#PHP Version => 7.3.24-(to be removed in future macOS)
# Silberbook
#❯ echo $(brew --prefix)
#/usr/local
#❯ which -a php
#/usr/local/bin/php
#/usr/bin/php
#/usr/local/opt/php
version=$(php --info | grep 'PHP Version' | sed -n '1p' | awk -F" " '{print $NF}') version=$(php --info | grep 'PHP Version' | sed -n '1p' | awk -F" " '{print $NF}')
v=${version:0:3} v=${version:0:3}
echo -e "${ita_under}${blue}Current PHP version:${reset} ${bold}$version${reset}\n"
if [ "$v" = "7.3" ]; then latest="8.2"
php_path=$(brew --prefix)/opt/php@7.3/bin versions=("7.4" "8.0" "8.1" "8.3" "$latest")
elif [ "$v" = "7.2" ]; then php_installed=$(ls -1 $(brew --prefix)/opt/ | grep php@)
php_path=$(brew --prefix)/opt/php@7.2/bin echo -e "${ita_under}${blue}Installed PHP versions:${reset}"
elif [ "$v" = "7.4" ]; then echo -e "$php_installed\n"
if [ "$v" == "$latest" ] ; then
php_path=$(brew --prefix)/opt/php/bin php_path=$(brew --prefix)/opt/php/bin
else
php_path=$(brew --prefix)/opt/php@$v/bin
fi
#echo "$php_path"
pecl version
curl -Is https://www.apple.com | head -1 | grep 200
if [[ $? -eq 1 ]]; then
echo -e "\n${red}No Internet connection !${reset}"
echo -e "Exit !"
exit 1
fi fi
pecl_upgrade=$($php_path/pecl list-upgrades) # Note that all public channels can be synced using "update-channels"
echo -e "\n${ita_under}${blue}Updating all channels...${reset}"
pecl update-channels
#pecl channel-update pecl.php.net
#pecl channel-update pear.php.net
# List Installed Packages In The Default Channel
#pecl_list=$($php_path/pecl list)
# List installed packages from all channels
pecl_list=$(pecl list -a)
echo -e "\n$pecl_list\n"
# Installation imagick:
# https://github.com/Imagick/imagick
#git clone https://github.com/Imagick/imagick
#cd imagick
#phpize && ./configure
#make
#make install
pecl_upgrade=$(pecl list-upgrades)
if [ -n "$pecl_upgrade" ]; then if [ -n "$pecl_upgrade" ]; then
echo -e "${underline}Extensions update:${reset}" echo -e "${ita_under}${blue}Extensions update:${reset}"
echo "" echo ""
echo "$pecl_upgrade" echo "$pecl_upgrade"
echo "" echo ""
available=$(echo "$pecl_upgrade" | grep -v 'No upgrades available' | grep 'kB') available=$(echo "$pecl_upgrade" | grep -v 'No upgrades available' | grep 'kB')
#echo "available: $available"
if [ -n "$available" ]; then if [ -n "$available" ]; then
while read ligne while read ligne
do do
echo "$ligne" #echo "$ligne"
# Channel pear.php.net # Channel pear.php.net
a=$(echo "$ligne" | grep "pear") a=$(echo "$ligne" | grep "pear")
#echo "a: $a"
if [ -n "$a" ]; then if [ -n "$a" ]; then
#pecl channel-update pear.php.net #pecl channel-update pear.php.net
$php_path/pecl channel-update pear.php.net pecl channel-update pear.php.net
fi fi
# Channel pecl.php.net # Channel pecl.php.net
b=$(echo "$ligne" | grep "pecl") b=$(echo "$ligne" | grep "pecl")
#echo "b: $b"
if [ -n "$b" ]; then if [ -n "$b" ]; then
#pecl channel-update pecl.php.net #pecl channel-update pecl.php.net
$php_path/pecl channel-update pecl.php.net pecl channel-update pecl.php.net
#(pecl or doc) update available #(pecl or doc) update available
b=$(echo "$ligne" | awk '{print $2}') b=$(echo "$ligne" | awk '{print $2}')
#pecl info "$b" #pecl info "$b"
$php_path/pecl info "$b" pecl info "$b"
echo "" echo ""
if [ "$no_distract" = false ]; then if [ "$no_distract" = false ]; then
#echo "$b" | xargs -p -n 1 pecl upgrade #echo "$b" | xargs -p -n 1 pecl upgrade
echo "$b" | xargs -p -n 1 $php_path/pecl upgrade echo "$b" | xargs -p -n 1 pecl upgrade
php_info=true
else else
#echo "$b" | xargs -n 1 pecl upgrade #echo "$b" | xargs -n 1 pecl upgrade
echo "$b" | xargs -n 1 $php_path/pecl upgrade echo "$b" | xargs -n 1 pecl upgrade
php_info=true
fi fi
fi fi
echo "" echo ""
@@ -110,31 +179,49 @@ if [ -n "$pecl_upgrade" ]; then
fi fi
fi fi
# si modif des extensions, les .ini dans conf.d/ ne sont pas modifiés, juste le php.ini # si modif des extensions, les .ini dans conf.d/ ne sont pas modifiés, juste le php.ini
# php.ini a été modifié il y a moins de 5mn # php.ini a été modifié il y a moins de 5mn
v_php=$(php --info | grep -E 'usr.*ini') #v_php=$(php --info | grep -E 'usr.*ini')
v_php=$(php --ini)
conf_php=$(echo "$v_php" | grep 'Loaded Configuration File' | awk '{print $NF}') conf_php=$(echo "$v_php" | grep 'Loaded Configuration File' | awk '{print $NF}')
dir=$(dirname "$conf_php") dir=$(dirname "$conf_php")
name=$(basename "$conf_php") name=$(basename "$conf_php")
notif2="$conf_php was modified in the last 5 minutes" notif2="$conf_php was modified in the last 5 minutes"
test=$(find "$dir" -name "$name" -mmin -5 -maxdepth 1) if [ "$display_info" = true ]; then
echo -e "${ita_under}${blue}PHP ini files:${reset}"
echo -e "php.ini path: ${bold}$conf_php${reset}"
echo -e "Additionnals ini files:\n$(ls $dir/conf.d/*.ini)"
echo -e "\n${ita_under}${blue}To change php version:${reset} ${italic}$ sphp 7.4${reset}"
echo -e " ${italic}•mod-php: https://gist.github.com/rhukster/f4c04f1bf59e0b74e335ee5d186a98e2${reset}"
echo -e " ${italic}•php-fpm: https://gist.github.com/rozsival/10289d1e2006c68009ace0478306ecd2${reset}\n"
#[ "$php_info" = true ] && echo -e "Opening PHP info in Safari..." && open "https://$host.local/info.php"
if [ "$php_info" = true ]; then
#host=$(hostname)
echo -e "Some extensions have been updated. Let's opening PHP info in Safari..."
open "https://$(hostname).local/info.php"
fi
fi
test=$(find "$dir" -maxdepth 1 -name "$name" -mmin -5)
if [ -n "$test" ]; then if [ -n "$test" ]; then
echo -e "${red}❗️ ️$notif2${reset}" echo -e "${red}❗️ ️$notif2${reset}"
notification "$notif2" notification "$notif2"
echo "" echo ""
a=$(echo -e "Do you want to edit ${bold}$conf_php${reset} file ? (y/n)") if [ -n "$available" ]; then
read -p "$a" choice a=$(echo -e "Do you want to edit ${bold}$conf_php${reset} file ? (y/n)")
if [ "$choice" == "y" ]; then read -p "$a" choice
$EDITOR "$conf_php" if [ "$choice" == "y" ]; then
$EDITOR "$conf_php"
fi
fi fi
fi fi
echo "" echo ""
echo "" echo ""
# WARNING: channel "pear.php.net" has updated its protocols,
# use "pecl channel-update pear.php.net" to update
+42 -8
View File
@@ -1,11 +1,35 @@
#!/usr/bin/env bash #!/usr/bin/env bash
# Perl plugin for KYMSU
# https://github.com/welcoMattic/kymsu
###############################################################################################
#
# Settings:
# Display info on updated pakages # Display info on updated pakages
display_info=true display_info=true
# No distract mode (no user interaction)
[[ $@ =~ "-nodistract" || $@ =~ "-n" ]] && no_distract=true || no_distract=false
# Also add module for prevent to update it. # Also add module for prevent to update it.
declare -a do_not_update=('') declare -a do_not_update=('')
italic="\033[3m"
underline="\033[4m"
ita_under="\033[3;4m"
bgd="\033[1;4;31m"
red="\033[1;31m"
bold="\033[1m"
bold_ita="\033[1;3m"
box="\033[1;41m"
redbold="\033[1;31m"
redbox="\033[1;41m"
reset="\033[0m"
echo -e "${bold}🐪 Perl ${reset}"
echo
perl_app=$(which perl) perl_app=$(which perl)
perl_v=$(perl -v | sed -n '2p') perl_v=$(perl -v | sed -n '2p')
@@ -14,14 +38,14 @@ echo -e "\033[4mPerl:\033[0m $perl_app"
echo -e "\033[4mVersion:\033[0m $perl_v" echo -e "\033[4mVersion:\033[0m $perl_v"
echo "" echo ""
module="App::cpanoutdate" module="App::cpanoutdated"
if ! perl -M$module -e 1 2>/dev/null; then if ! perl -M$module -e 1 2>/dev/null; then
echo -e "\033[4mRequierement:\033[0m module $module is not installed" echo -e "\033[4mRequierement:\033[0m module $module is not installed"
a=$(echo -e "Do you wanna run \033[1mcpan -i "$module"\033[0m ? (y/n)") a=$(echo -e "Do you wanna run \033[1mcpan -i "$module"\033[0m ? (y/n)")
read -p "$a" choice read -p "$a" choice
if [ "$choice" == "y" ]; then if [ "$choice" == "y" ]; then
#cpan -i $module cpan -i $module
install_ok=true install_ok=true
else else
echo "Bye" echo "Bye"
@@ -29,14 +53,20 @@ if ! perl -M$module -e 1 2>/dev/null; then
fi fi
else else
echo "$module installed"
install_ok=true install_ok=true
fi fi
curl -Is https://www.apple.com | head -1 | grep 200 1>/dev/null
if [[ $? -eq 1 ]]; then
echo -e "\n${red}No Internet connection !${reset}"
echo -e "Exit !"
exit 1
fi
if [ "$install_ok" == "true" ]; then if [ "$install_ok" == "true" ]; then
echo "$module installed"
# install with cpan # install with cpan
# % cpan-outdated | xargs cpan -i # % cpan-outdated | xargs cpan -i
# install with cpanm # install with cpanm
@@ -46,10 +76,10 @@ if [ "$install_ok" == "true" ]; then
outdated=$(cpan-outdated -p) outdated=$(cpan-outdated -p)
nb=$(echo $outdated | wc -w) nb=$(echo $outdated | wc -w)
a=$(echo -e "Do you wanna update\033[1m "$nb" outdated\033[0m modules ? (y/n)") a=$(echo -e "Do you wanna update\033[1m "$nb" outdated\033[0m modules ? (y/n/a)")
read -p "$a" choice read -p "$a" choice
if [ "$choice" == "y" ]; then if [ "$choice" == "y" ] || [ "$choice" == "Y" ] || [ "$choice" == "a" ] || [ "$choice" == "A" ]; then
for i in $outdated for i in $outdated
do do
@@ -60,7 +90,11 @@ if [ "$install_ok" == "true" ]; then
cpan -D "$i" cpan -D "$i"
fi fi
echo -e "\033[1m" echo -e "\033[1m"
echo "$i" | awk '{print $1}' | xargs -p -n 1 cpan -i if [ "$choice" == "y" ] || [ "$choice" == "Y" ]; then
echo "$i" | awk '{print $1}' | xargs -p -n 1 cpan -i
elif [ "$choice" == "a" ] || [ "$choice" == "A" ]; then
echo "$i" | awk '{print $1}' | xargs -n 1 cpan -i
fi
echo -e "\033[0m" echo -e "\033[0m"
#echo "" #echo ""
fi fi
+44 -13
View File
@@ -18,7 +18,7 @@
display_info=true display_info=true
# No distract mode (no user interaction) # No distract mode (no user interaction)
[[ $@ =~ "--nodistract" ]] && no_distract=true || no_distract=false [[ $@ =~ "-nodistract" || $@ =~ "-n" ]] && no_distract=true || no_distract=false
# Display dependancies on updated pakages / casks # Display dependancies on updated pakages / casks
#[[ $@ =~ "--depend" ]] && display_depend=false || display_depend=true #[[ $@ =~ "--depend" ]] && display_depend=false || display_depend=true
@@ -33,7 +33,7 @@ user=""
# Add module to the do_not_update array for prevent to update. # Add module to the do_not_update array for prevent to update.
#declare -a do_not_update=() #declare -a do_not_update=()
#declare -a do_not_update=("parso" "asgiref") #declare -a do_not_update=("parso" "asgiref")
declare -a do_not_update=("asgiref") declare -a do_not_update=("pyee")
# #
######################################### #########################################
@@ -65,7 +65,7 @@ echo -e "Current ${underline}pip3${reset} version: $(pip3 -V)"
#$pip_version install --upgrade pip > /dev/null #$pip_version install --upgrade pip > /dev/null
echo "" echo ""
# Do not update casks # Do not update packages
if (( ${#do_not_update[@]} )); then if (( ${#do_not_update[@]} )); then
nbp=${#do_not_update[*]} nbp=${#do_not_update[*]}
@@ -78,19 +78,25 @@ if (( ${#do_not_update[@]} )); then
fi fi
curl -Is https://www.apple.com | head -1 | grep 200 1>/dev/null
if [[ $? -eq 1 ]]; then
echo -e "\n${red}No Internet connection !${reset}"
echo -e "Exit !"
exit 1
fi
#Packages update #Packages update
echo -e "🐍 ${underline}Search for packages update...${reset}\n" echo -e "🐍 ${underline}Search for packages update...${reset}\n"
pip_outdated=$($pip_version list --outdated --format columns) pip_outdated=$($pip_version list --outdated --format columns)
upd=$(echo "$pip_outdated" | sed '1,2d' | awk '{print $1}') upd=$(echo "$pip_outdated" | sed '1,2d' | awk '{print $1}')
#upd="asgiref CairoSVG setuptools"
# Find infos about updated packages # Find infos about updated packages
if [ -n "$upd" ]; then if [ -n "$upd" ]; then
nb=$(echo "$upd" | wc -w | xargs) nb=$(echo "$upd" | wc -w | xargs)
echo -e "${redbox} $nb ${reset} ${underline}availables updates:${reset}" echo -e "${redbox} $nb ${reset} availables updates:"
echo -e "\n$pip_outdated" echo -e "\n$pip_outdated"
echo "" echo ""
@@ -99,30 +105,55 @@ if [ -n "$upd" ]; then
info=$($pip_version show "$i") info=$($pip_version show "$i")
l=$(echo "$info" | sed -n '1p') l=$(echo "$info" | sed -n '1p')
m=$(sed "1s/.*/\\${bold}$l\\${reset}/" <<< "$info")
if [[ ! " ${do_not_update[@]} " =~ " ${i} " ]]; then
m=$(sed "1s/.*/\\${bold}$l\\${reset}/" <<< "$info")
else
m=$(sed "1s/.*/\\${redbold}$l\\${reset}/" <<< "$info")
fi
echo -e "$m" | head -4 echo -e "$m" | head -4
echo "" echo ""
z+="$i " z+="$i "
done done
# z = asgiref setuptools lunr
# Check dependancies # Check dependancies
if [ -x "$(command -v pipdeptree)" ] && [ "$display_depend" == true ]; then if [ -x "$(command -v pipdeptree)" ] && [ "$display_depend" == true ]; then
echo -e "🐍 ${underline}Check dependancies:${reset}\n" echo -e "🐍 ${underline}Check dependancies:${reset}\n"
echo -e "Be carefull!! This updates can be a dependancie for some modules. Check for any incompatible version.\n" echo -e "Be carefull!! This updates can be a dependancie for some modules. Check for any incompatible version.\n"
z=$(echo "$z" | sed 's/.$//' | sed 's/ /,/g') # packages dont on recherche les dépendances (x = asgiref,setuptools,lunr)
dependencies=$(echo "$z" | xargs pipdeptree -r -p ) x=$(echo "$z" | sed 's/.$//' | sed 's/ /,/g')
# on filtre les lignes (y = asgiref|setuptools|lunr)
y=$(echo "$z" | sed 's/.$//' | sed 's/ /|/g')
dependencies=$(echo "$x" | xargs pipdeptree -r --python /opt/homebrew/opt/python@3.11/bin/python3.11 -p | grep -E $y)
echo -e ""
while IFS= read -r line; do while IFS= read -r line; do
z=$(echo "${line}" | grep -i ^[a-z]) z=$(echo "${line}" | grep -i ^[a-z])
k=$(echo "${line}" | awk -F'==' '{print $1}')
l=$(echo "${line}" | awk -F':' '{print $2}')
# Si la ligne commence par une lettre (aka. paquet à mettre à jour)
if [ -n "$z" ] ; then if [ -n "$z" ] ; then
echo -e "\n${bold}${line}${reset}"
elif [[ "${line}" = *"<"* ]]; then # Met en redbold le paquet si il est 'do_not_update'
if [[ ! " ${do_not_update[@]} " =~ " ${k} " ]]; then
echo -e "\n${bold}${line}${reset}"
else
echo -e "\n${redbold}${line}${reset}"
fi
# sinon dépendance
elif [[ "${l}" = *"<"* ]] || [[ "${l}" = *"=="* ]]; then
echo -e "${red}${line}${reset}" echo -e "${red}${line}${reset}"
elif [[ "${line}" = *"~="* ]]; then elif [[ "${l}" = *"~="* ]]; then
echo -e "${yellow}${line}${reset}" echo -e "${yellow}${line}${reset}"
else else
echo "${line}" echo "${line}"
@@ -158,7 +189,7 @@ if [ -n "$upd" ]; then
done done
else else
echo -e "${underline}No availables updates.${reset}" echo -e "No availables updates."
fi fi
+136
View File
@@ -0,0 +1,136 @@
#!/usr/bin/env bash
# pipx plugin for KYMSU
# https://github.com/welcoMattic/kymsu
# No distract mode (no user interaction)
[[ $@ =~ "-nodistract" || $@ =~ "-n" ]] && no_distract=true || no_distract=false
# Upgrade --include-injected
injected=true
# Add module to the do_not_update array for prevent to update.
#declare -a do_not_update=()
italic="\033[3m"
underline="\033[4m"
ita_under="\033[3;4m"
bgd="\033[1;4;31m"
red="\033[1;31m"
bold="\033[1m"
box="\033[1;41m"
reset="\033[0m"
echo -e "${bold}🛠 pipx (Python 3) ${reset}"
if ! command -v pipx &> /dev/null
then
echo -e "${bold}pipx${reset} could not be found !\n"
echo -e "You should install ${bold}pipx${reset}:\n"
echo -e " - brew install pipx"
echo -e " - pipx ensurepath"
echo -e "or"
echo -e " - python3 -m pip install --user pipx"
echo -e " - python3 -m pipx ensurepath"
exit
fi
curl -Is https://www.apple.com | head -1 | grep 200 1>/dev/null
if [[ $? -eq 1 ]]; then
echo -e "\n${red}No Internet connection !${reset}"
echo -e "Exit !"
exit 1
fi
list=$(pipx list --include-injected) # pipx list --quiet
echo -e "\n${underline}List installed packages:${reset}"
#echo "$list"
while IFS= read -r line; do
if grep -q 'package.*,' <<< "${line}"
then
pyPkgName=$(echo "${line}" | awk -F" " '{print $2}' )
infoPkg=$(curl -s https://pypi.org/pypi/${pyPkgName}/json | jq -r '.info')
summaryPkg=$(echo "$infoPkg" | jq -r '.summary')
srcUrl=$(echo "$infoPkg" | jq -r '.project_urls' | jq -r '.Homepage')
inf="$summaryPkg\n"" ${italic}$srcUrl${reset}"
echo -e "\n${bold}${line}${reset}\n ${inf}"
else
echo -e "${line}"
fi
done <<< "$list"
pinned=$(pipx list --pinned)
echo -e "\n${underline}Pinned packages:${reset}"
echo "$pinned"
echo -e "To unpin, please enter ${italic}pipx unpin <package>${reset}"
# curl -s https://pypi.org/pypi/mkdocs/json | jq -r '.info.summary'
# curl -s https://pypi.org/pypi/mkdocs/json | jq -r '.info.version'
# curl -s https://pypi.org/pypi/mkdocs/json | jq -r '.info.project_url'
pipx-outdated() {
echo -e "\n${underline}Outdated Packages:${reset}"
while read -sr pyPkgName pyPkyVersion; do
local pypi_latest="$(curl -sS https://pypi.org/simple/${pyPkgName}/ | grep -o '>.*</' | tail -n 1 | grep -o -E '[0-9]([0-9]|[-._])*[0-9]')"
#[ "$pyPkyVersion" != "$pypi_latest" ] && printf "%s\tCurrent: %s\tLatest: %s\n" "$pyPkgName" "$pyPkyVersion" "$pypi_latest"
if [ "$pyPkyVersion" != "$pypi_latest" ]; then
if [[ "$pinned" == *"$pyPkgName"* ]]; then
printf "${red}%s\tCurrent: %s\tLatest: %s (pinned)${reset}\n" "$pyPkgName" "$pyPkyVersion" "$pypi_latest"
else
printf "%s\tCurrent: %s\tLatest: %s\n" "$pyPkgName" "$pyPkyVersion" "$pypi_latest"
outdated+="$pyPkgName "
fi
fi
done < <( pipx list | grep -o 'package.*,' | tr -d ',' | cut -d ' ' -f 2- )
}
pipx-outdated
outdated=$(echo "$outdated" | sed 's/.$//')
if [ -n "$outdated" ]; then
nb=$(echo "$outdated" | wc -w | xargs)
echo -e "${redbox} $nb ${reset} availables updates:"
a=$(echo -e "\nDo you wanna run ${bold}pipx upgrade "$outdated"${reset} ? (y/n/a) ")
# yes/no/all
read -p "$a" choice
if [ "$choice" == "y" ] || [ "$choice" == "Y" ] || [ "$choice" == "a" ] || [ "$choice" == "A" ]; then
for i in $outdated;
do
if [ "$choice" == "y" ] || [ "$choice" == "Y" ]; then
if [ "$injected" = true ]; then
echo "$i" | xargs -p -n 1 pipx upgrade --include-injected
else
echo "$i" | xargs -p -n 1 pipx upgrade
fi
elif [ "$choice" == "a" ] || [ "$choice" == "A" ]; then
if [ "$injected" = true ]; then
pipx upgrade-all --include-injected
else
pipx upgrade-all
fi
fi
done
else
echo -e "OK, let's continue..."
fi
else
echo "No update available !"
fi
echo ""
echo ""
+92
View File
@@ -0,0 +1,92 @@
#!/usr/bin/env bash
# pip plugin for KYMSU
# https://github.com/welcoMattic/kymsu
# upgrade pip:
# python -m pip install --upgrade pip
# Configurer pip3:
# pip config edit
#########################################
#
# Settings:
# Display info on updated pakages / casks
#[[ $@ =~ "--info" ]] && display_info=false || display_info=true
display_info=true
# No distract mode (no user interaction)
[[ $@ =~ "-nodistract" || $@ =~ "-n" ]] && no_distract=true || no_distract=false
# Display dependancies on updated pakages / casks
#[[ $@ =~ "--depend" ]] && display_depend=false || display_depend=true
display_depend=true
#version: pip ou pip3
# pip: python3.8 - pip3: python3.9
pip_version=pip3
#user: "" or "--user"
user=""
# Add module to the do_not_update array for prevent to update.
#declare -a do_not_update=()
#declare -a do_not_update=("parso" "asgiref")
declare -a do_not_update=("pyee")
#
#########################################
: <<'END_COMMENT'
blabla
END_COMMENT
italic="\033[3m"
underline="\033[4m"
ita_under="\033[3;4m"
bold="\033[1m"
bold_under="\033[1;4m"
redbox="\033[1;41m"
redbold="\033[1;31m"
red="\033[31m"
yellow="\033[33m"
reset="\033[0m"
command -v pipdeptree >/dev/null 2>&1 || { echo -e "You shoud intall ${bold}pipdeptree${reset} for checking packages dependancies ${italic}($pip_version install pipdeptree)${reset}.\n"; }
command -v $pip_version >/dev/null 2>&1 || { echo -e "${bold}$pip_version${reset} is not installed." && exit 1; }
echo -e "${bold}🐍 $pip_version (Python 3) ${reset}"
echo ""
echo -e "Current ${underline}Python3${reset} version: $(python3 -V | awk '{print $2}')"
echo -e "Current ${underline}pip3${reset} version: $(pip3 -V)"
#$pip_version install --upgrade pip > /dev/null
echo ""
# Do not update packages
if (( ${#do_not_update[@]} )); then
nbp=${#do_not_update[*]}
echo -e "${underline}List of${reset} ${redbox} $nbp ${reset} ${underline}'do not update' packages:${reset}"
echo -e "${redbold}${do_not_update[*]}${reset}"
echo -e "To remove package from this list, you need to edit the ${italic}do_not_update${reset} array."
echo ""
fi
curl -Is https://www.apple.com | head -1 | grep 200 1>/dev/null
if [[ $? -eq 1 ]]; then
echo -e "\n${red}No Internet connection !${reset}"
echo -e "Exit !"
exit 1
fi
#Packages update
echo -e "🐍 ${underline}Search for packages update...${reset}\n"
pip_outdated=$($pip_version list --outdated --format columns)
upd=$(echo "$pip_outdated" | sed '1,2d' | awk '{print $1}')
+70
View File
@@ -0,0 +1,70 @@
#!/usr/bin/env bash
italic="\033[3m"
underline="\033[4m"
ita_under="\033[3;4m"
bgd="\033[1;4;31m"
red="\033[1;31m"
greenbold="\033[1;32m"
bold="\033[1m"
box="\033[1;41m"
reset="\033[0m"
echo -e "\n${bold}🦀 Rust${reset}\n"
curl -Is https://www.apple.com | head -1 | grep 200 1>/dev/null
if [[ $? -eq 1 ]]; then
echo -e "\n${red}No Internet connection !${reset}"
echo -e "Exit !"
exit 1
fi
if hash rustup 2>/dev/null; then
echo -e "🦀 ${underline}rustup check${reset}\n"
#rustup check
check=$(rustup check)
#check=$(echo "$check" | sed 's/Up\ to\ date/${bold}Up\ to\ dateee${reset}/g')
#echo ${check/Up to date/\{greenbold\}Up to dateee\{reset\}\}
#Update available
echo -e "$check\n"
if [[ "$check" =~ "update\ available" ]]; then
echo -e "🦀 ${underline}rustup update${reset}\n"
rustup update
fi
#if [[ ! $(which rustup-init) =~ "homebrew" ]]; then
# echo -e "\n🦀 ${underline}Upgrading rustup itself !${reset}\n"
# rustup self update
#fi
echo -e "\n🦀 ${underline}Upgrading rust toolchains !${reset}\n"
check_rust=$(echo "$check" | awk 'NR==1' | awk -F" - " '{print $2}')
if [[ $check_rust =~ "Update available" ]]; then
echo "$check_rust"
rustup update
elif [[ $check_rust =~ "Up to date" ]]; then
rust_version=$(echo "$check_rust" | awk -F" : " '{print $2}')
echo -e "${greenbold}Rust is up to date!${reset}"" ($rust_version)"
fi
# si erreur rustup update => rustup toolchain uninstall stable && rustup toolchain install stable
echo ""
fi
if hash cargo 2>/dev/null; then
echo -e "\n🦀 ${underline}Update cargo packages !${reset}\n"
if hash ggrep 2>/dev/null; then
cargo install $(cargo install --list | ggrep -E '^[a-z0-9_-]+ v[0-9.]+:$' | cut -f1 -d' ')
else
cargo install $(cargo install --list | egrep '^[a-z0-9_-]+ v[0-9.]+:$' | cut -f1 -d' ')
fi
echo ""
fi
echo ""
+101
View File
@@ -0,0 +1,101 @@
#!/usr/bin/env bash
# Venv plugin for KYMSU
# https://github.com/welcoMattic/kymsu
italic="\033[3m"
underline="\033[4m"
ita_under="\033[3;4m"
bgd="\033[1;4;31m"
red="\033[1;31m"
bold="\033[1m"
box="\033[1;41m"
reset="\033[0m"
###############################################################################################
#
# Settings:
# Liste des apps:
# - le venv doit avoir le même nom que l'app
declare -a apps=("mkdocs")
# Liste des extensions pour Mkdocs
mkdocs_ext=("mkdocs-material" "mkdocs-material-extensions" "mkdocs-git-revision-date-localized-plugin" "mkdocs-minify-plugin" "fontawesome_markdown" "mkdocs-pdf-export-plugin")
echo -e "${bold}🐍 Update apps in Python virtuals environments ${reset}\n"
# Où sont stockés les environnements virtuels:
# macos: silverbook / airbook
if [[ "$OSTYPE" == "darwin"* ]]; then
v=$HOME/Documents/venv
# rpi4: linux_gnueabihf
# rpi3:
# solus: linux-gnu
elif [[ "$OSTYPE" == "linux_gnu" ]]; then
v=$HOME/Applications
elif [[ "$OSTYPE" == "linux_gnueabihf" ]]; then
v=$HOME/venv
fi
curl -Is https://www.google.com | head -1 | grep 200 1>/dev/null
if [[ $? -eq 1 ]]; then
echo -e "\n${red}No Internet connection !${reset}"
echo -e "Exit !"
exit 1
fi
echo -e "Venv directory: $v\n"
################################################################################################
for app in ${apps[*]}
do
echo -e "${bold}Update $app${reset}";
cd "$v/$app"
source bin/activate
python3 -V
pip3 install -U pip setuptools
pip3 install -U "$app"
ret=$?
# pas d'update: ret=0
#[ $ret -eq 0 ] && echo -e "${underline}\nNo update available !\n${reset}"
if [ $ret -eq 0 ]; then
echo -e "${underline}\nNo update available !\n${reset}"
fi
info=$(pip3 show "$app")
l1=$(echo "$info" | sed -n '1p')
l1="\\\033[4m$l1\\\033[0m"
info=$(echo "$info" | sed "1s/.*/$l1/")
echo -e "$info"
<<COMMENT
# Update all modules:
pip_outdated=$(pip3 list --outdated --format columns)
upd=$(echo "$pip_outdated" | sed '1,2d' | awk '{print $1}')
outdated=""
for i in $upd
do
outdated+="$i "
done
outdated=$(echo "$outdated" | sed 's/.$//')
COMMENT
# Update mkdocs plugins & themes:
if [ $app == "mkdocs" ]; then
for i in ${mkdocs_ext[*]}
do
echo -e "\n${bold}Update $i:${reset}" && pip3 install -U $i
done
fi
deactivate
echo ""
done
+65 -40
View File
@@ -25,15 +25,30 @@ emptytrash=true
# Sauvegarde de la base # Sauvegarde de la base
backup=true backup=true
# Maintenance de la base (optimize & repair) # Maintenance de la base (optimize & repair)
database=false database=true
# Effacer les transients expirés # Effacer les transients expirés
transient=true transient=true
# Ouvrir la page d'aministration # Ouvrir la page d'aministration
admin=false admin=false
: <<'END_COMMENT'
blabla
END_COMMENT
italic="\033[3m"
underline="\033[4m"
ita_under="\033[3;4m"
bgd="\033[1;4;31m"
redbold="\033[1;31m"
bold="\033[1m"
box="\033[1;41m"
reset="\033[0m"
#add module to do_not_update array #add module to do_not_update array
declare -a do_not_update=() declare -a do_not_update=()
#[[ $@ =~ "-nodistract" || $@ =~ "-n" ]] && no_distract=true || no_distract=false
if [[ $1 == "--nodistract" ]] || [[ $no_distract == true ]]; then if [[ $1 == "--nodistract" ]] || [[ $no_distract == true ]]; then
no_distract=true no_distract=true
prompt= prompt=
@@ -47,20 +62,23 @@ if ! [ -x "$(command -v wp)" ]; then
exit 1 exit 1
fi fi
echo -e "\033[1mWP wp-cli \033[0m" echo -e "${redbold}Updates${reset}"
echo "" echo ""
cd $rep_wordpress cd $rep_wordpress || exit
#echo $(pwd) #echo $(pwd)
# *** plugins *** # *** plugins ***
if [ "$test" = true ]; then #if [ "$test" = true ]; then
#: <<'END_COMMENT2'
# *** core update *** # *** core update ***
echo "Search for core update..." echo -e "${bold}Search for core update...${reset}"
core_cu=$(wp core check-update) core_cu=$(wp core check-update)
if ! [[ $core_cu = *"latest version"* ]]; then if ! [[ $core_cu = *"latest version"* ]]; then
echo "New version available!" echo "New version available!"
@@ -78,10 +96,11 @@ if [ "$test" = true ]; then
echo "" echo ""
# *** plugins *** # *** plugins ***
echo "Search for all plugins update..." echo -e "${bold}Search for all plugins update...${reset}"
plugin_cu_all=$(wp plugin update --all --dry-run) wp plugin list --format=table # --update=available
plugin_update=$(wp plugin list --format=table --update=available)
plugins_outdated=$(echo "$plugin_cu_all" | sed '1,2d' | awk '{print $1}') echo
plugins_outdated=$(echo "$plugin_update" | sed '/^+/d' | sed '1d' | awk '{print $1}')
if [ -z "$plugins_outdated" ]; then if [ -z "$plugins_outdated" ]; then
echo "No plugins update available !" echo "No plugins update available !"
else else
@@ -93,10 +112,11 @@ if [ "$test" = true ]; then
echo "" echo ""
# *** themes *** # *** themes ***
echo "Search for all themes update..." echo -e "${bold}Search for all themes update...${reset}"
theme_cu_all=$(wp theme update --all --dry-run) wp theme list --format=table #--update=available
theme_update=$(wp theme list --format=table --update=available)
themes_outdated=$(echo "$theme_cu_all" | sed '1,2d' | awk '{print $1}') echo
themes_outdated=$(echo "$theme_update" | sed '/^+/d' | sed '1d' | awk '{print $1}')
if [ -z "$themes_outdated" ]; then if [ -z "$themes_outdated" ]; then
echo "No themes update available !" echo "No themes update available !"
else else
@@ -108,10 +128,11 @@ if [ "$test" = true ]; then
echo "" echo ""
# *** languages core *** # *** languages core ***
echo "Search for languages core update..." echo -e "${bold}Search for languages core update...${reset}"
list_lang_core_upd=$(wp language core list --update=available --all --format=csv) wp language core list --update=available --all --format=table
list_lang_core_upd=$(wp language core list --update=available --all --format=table)
lang_core_outdated=$(echo "$list_lang_core_upd" | sed '1d' | awk '{print $1}') lang_core_outdated=$(echo "$list_lang_core_upd" | sed '/^+/d' | sed '1d' | awk '{print $1}')
if [ -z "$lang_core_outdated" ]; then if [ -z "$lang_core_outdated" ]; then
echo "No languages core update available !" echo "No languages core update available !"
else else
@@ -121,12 +142,13 @@ if [ "$test" = true ]; then
done done
fi fi
echo "" echo ""
# *** languages plugin *** # *** languages plugin ***
echo "Search for languages plugins update..." echo -e "${bold}Search for languages plugins update...${reset}"
list_lang_plugin_upd=$(wp language plugin list --update=available --all --format=csv) wp language plugin list --update=available --all --format=table
list_lang_plugin_upd=$(wp language plugin list --update=available --all --format=table)
lang_plugin_outdated=$(echo "$list_lang_plugin_upd" | sed '1d' | awk '{print $1}') lang_plugin_outdated=$(echo "$list_lang_plugin_upd" | sed '/^+/d' | sed '1d' | awk '{print $1}')
if [ -z "$lang_plugin_outdated" ]; then if [ -z "$lang_plugin_outdated" ]; then
echo "No languages plugins update available !" echo "No languages plugins update available !"
else else
@@ -138,10 +160,11 @@ if [ "$test" = true ]; then
echo "" echo ""
# *** languages theme *** # *** languages theme ***
echo "Search for languages themes update..." echo -e "${bold}Search for languages themes update...${reset}"
list_lang_theme_upd=$(wp language theme list --update=available --all --format=csv) wp language theme list --update=available --all --format=table
list_lang_theme_upd=$(wp language theme list --update=available --all --format=table)
lang_theme_outdated=$(echo "$list_lang_theme_upd" | sed '1d' | awk '{print $1}') lang_theme_outdated=$(echo "$list_lang_theme_upd" | sed '/^+/d' | sed '1d' | awk '{print $1}')
if [ -z "$lang_theme_outdated" ]; then if [ -z "$lang_theme_outdated" ]; then
echo "No languages themes update available !" echo "No languages themes update available !"
else else
@@ -151,9 +174,10 @@ if [ "$test" = true ]; then
done done
fi fi
fi #fi
echo "" echo ""
#END_COMMENT2
# *** Maintenance *** # *** Maintenance ***
@@ -162,19 +186,20 @@ if [ "$maint" = true ]; then
echo -e "\n\033[1;31mMaintenance...\033[0m" echo -e "\n\033[1;31mMaintenance...\033[0m"
#On récupère la liste des packages installés #On récupère la liste des packages installés
echo -e "\n\033[1mInstalled package list...\033[0m"
packages_list=$(wp package list | sed -n '1!p' | awk '{print $1'}) packages_list=$(wp package list | sed -n '1!p' | awk '{print $1'})
echo "$packages_list" echo "$packages_list"
if [ "$transient" = true ]; then if [ "$transient" = true ]; then
echo -e "\n\033[1mRemove expired transients...\033[0m" echo -e "\n\033[1mRemove expired transients...\033[0m"
wp transient delete --expired --path=$path wp transient delete --expired --path=$rep_wordpress
fi fi
if [ "$database" = true ]; then if [ "$database" = true ]; then
echo -e "\n\033[1mDatabase maintenance...\033[0m" echo -e "\n\033[1mDatabase maintenance...\033[0m"
wp db optimize --quiet --path=$path wp db optimize --quiet --path=$rep_wordpress
#wp db repair --quiet --path=$path #wp db repair --quiet --path=$path
fi fi
@@ -185,19 +210,19 @@ echo "$packages_list"
DATE=`date +%Y-%m-%d_%H:%M:%S` DATE=`date +%Y-%m-%d_%H:%M:%S`
file="wp-$blogname-$DATE.sql" file="wp-$blogname-$DATE.sql"
wp db export "$file" --add-drop-table --path=$path wp db export "$file" --add-drop-table --path=$rep_wordpress
mv "$file" "../$file" mv "$file" "../$file"
fi fi
if [ "$removespam" = true ]; then if [ "$removespam" = true ]; then
echo -e "\n\033[1mRemove spam comments...\033[0m" echo -e "\n\033[1mRemove spam comments...\033[0m"
#spam=$($wp_exec comment list --status=spam --format=ids --path=$path) spam=$(wp comment list --status=spam --format=ids --path=$rep_wordpress)
echo "$spam" echo "$spam"
if [ -n "$spam" ]; then if [ -n "$spam" ]; then
echo "$spam" echo "$spam"
#wp comment delete "$spam" --path=$path #wp comment delete "$spam" --path=$path
wp comment delete $($wp_exec comment list --status=spam --format=ids --path=$path) --path=$path --dry-run wp comment delete $(wp comment list --status=spam --format=ids --path=$rep_wordpress) --path=$rep_wordpress --dry-run
else else
echo "No SPAM" echo "No SPAM"
fi fi
@@ -206,9 +231,9 @@ echo "$packages_list"
if [ "$emptytrash" = true ]; then if [ "$emptytrash" = true ]; then
echo -e "\n\033[1mRemove comments in trash and comment from deleted posts...\033[0m" echo -e "\n\033[1mRemove comments in trash and comment from deleted posts...\033[0m"
trashed=$(wp comment list --status=trash,post-trashed --format=ids --path=$path) trashed=$(wp comment list --status=trash,post-trashed --format=ids --path=$rep_wordpress)
if [ -n "$trashed" ]; then if [ -n "$trashed" ]; then
wp comment delete "$trashed" --path=$path wp comment delete "$trashed" --path=$rep_wordpress
echo $? echo $?
else else
@@ -219,7 +244,7 @@ echo "$packages_list"
#if [[ "$($wp_exec cli has-command 'revisions' --path=$path && echo $?)" -eq 0 ]] && [[ "$rev" = true ]]; then #if [[ "$($wp_exec cli has-command 'revisions' --path=$path && echo $?)" -eq 0 ]] && [[ "$rev" = true ]]; then
if [[ -n "$(echo "$packages_list" | awk '$1 ~ /trepmal\/wp-revisions-cli/')" ]] && [[ "$rev" = true ]]; then if [[ -n "$(echo "$packages_list" | awk '$1 ~ /trepmal\/wp-revisions-cli/')" ]] && [[ "$rev" = true ]]; then
echo -e "\n\033[1mKeep only $revisions revisions...\033[0m" echo -e "\n\033[1mKeep only $revisions revisions...\033[0m"
wp revisions clean $revisions --path=$path --dry-run wp revisions clean $revisions --path=$rep_wordpress --dry-run
elif [ "$rev" = true ]; then elif [ "$rev" = true ]; then
printf "Voulez-vous installer wp-revisions-cli ? (y/n)" printf "Voulez-vous installer wp-revisions-cli ? (y/n)"
@@ -237,18 +262,18 @@ echo "$packages_list"
if [ "$back" = true ]; then if [ "$back" = true ]; then
echo -e "\n\033[1mTrackback list...\033[0m" echo -e "\n\033[1mTrackback list...\033[0m"
trackback=$(wp comment list --type=trackback --format=ids --path=$path) trackback=$(wp comment list --type=trackback --format=ids --path=$rep_wordpress)
if [ -n "$trackback" ]; then if [ -n "$trackback" ]; then
wp comment delete "$trackback" --path=$path --dry-run wp comment delete "$trackback" --path=$rep_wordpress --dry-run
else else
echo "No trackback post" echo "No trackback post"
fi fi
echo -e "\n\033[1mPingback list...\033[0m" echo -e "\n\033[1mPingback list...\033[0m"
pingback=$(wp comment list --type=pingback --format=ids --path=$path) pingback=$(wp comment list --type=pingback --format=ids --path=$rep_wordpress)
if [ -n "$pingback" ]; then if [ -n "$pingback" ]; then
wp comment delete "$pingback" --path=$path --dry-run wp comment delete "$pingback" --path=$rep_wordpress --dry-run
else else
echo "No pingback post" echo "No pingback post"
fi fi
@@ -260,12 +285,12 @@ echo "$packages_list"
if [[ -n "$(echo "$packages_list" | awk '$1 ~ /wp-cli\/admin-command/')" ]] && [[ "$admin" = true ]]; then if [[ -n "$(echo "$packages_list" | awk '$1 ~ /wp-cli\/admin-command/')" ]] && [[ "$admin" = true ]]; then
echo -e "\n\033[1mOpen wp-admin/ page in browser...\033[0m" echo -e "\n\033[1mOpen wp-admin/ page in browser...\033[0m"
wp admin --path=$path wp admin --path=$rep_wordpress
elif [ "$admin" = true ]; then elif [ "$admin" = true ]; then
wp package install wp-cli/admin-command wp package install wp-cli/admin-command
echo "" echo ""
echo -e "\n\033[1mOpen wp-admin/ page in browser...\033[0m" echo -e "\n\033[1mOpen wp-admin/ page in browser...\033[0m"
wp admin --path=$path wp admin --path=$rep_wordpress
fi fi
Executable
+5
View File
@@ -0,0 +1,5 @@
#!/usr/bin/env bash
source plugins.d/pip.sh
echo ${#do_not_update[*]}