Add syncing with extra groups
This commit is contained in:
		
							parent
							
								
									f48b7c8690
								
							
						
					
					
						commit
						ab7c74f888
					
				
					 7 changed files with 23 additions and 18 deletions
				
			
		
							
								
								
									
										2
									
								
								Makefile
									
										
									
									
									
								
							
							
						
						
									
										2
									
								
								Makefile
									
										
									
									
									
								
							|  | @ -17,6 +17,6 @@ generate: get-target output-dir completions | |||
| docs: generate | ||||
| 	BASHLY_SOURCE_DIR=$(TARGET) bashly render :mandoc ./output/man1 | ||||
| 
 | ||||
| deploy: generate docs | ||||
| install: generate docs | ||||
| 	cp -f ./output/$(TARGET) ~/.local/bin/ | ||||
| 	cp -f ./output/man1/$(TARGET)*.1 ~/.local/share/man/man1/ | ||||
|  |  | |||
|  | @ -19,6 +19,10 @@ commands: | |||
|     help: Get the current status of all programs | ||||
|   - name: sync | ||||
|     help: Remove all programs from autostart and the re-enable all | ||||
|     args: | ||||
|       - name: groups | ||||
|         required: false | ||||
|         help: Extra groups to sync | ||||
|   - name: enable | ||||
|     help: Add a single program to autostart | ||||
|     args: | ||||
|  |  | |||
|  | @ -2,6 +2,5 @@ | |||
| 
 | ||||
| program=${args[program]:?} | ||||
| 
 | ||||
| cmd=$(_get_autostart_cmd "$program") | ||||
| sleep "$(_get_autostart_delay "$program")" | ||||
| bash -c "$cmd" | ||||
| bash -c "$(_get_autostart_cmd "$program")" | ||||
|  |  | |||
|  | @ -4,6 +4,6 @@ autostart_units=() | |||
| while IFS='' read -r line | ||||
| do | ||||
| 	autostart_units+=("$line") | ||||
| done < <(_list) | ||||
| done < <(_list "*") | ||||
| 
 | ||||
| _echo_table "${autostart_units[@]}" | column -t -s$'\t' --table-columns 'Unit,Enabled?,Active?,Command' | ||||
|  |  | |||
|  | @ -5,16 +5,21 @@ _systemctl () { | |||
| } | ||||
| 
 | ||||
| _query_autostart_toml() { | ||||
| 	tomlq -r --arg host "$HOSTNAME" \ | ||||
| 	groups_json=$(echo -n "$2" | tr "," "\n" | jq -R . | jq -s .) | ||||
| 	tomlq -r \ | ||||
| 		--arg host "$HOSTNAME" \ | ||||
| 		--argjson extra_groups "$groups_json" \ | ||||
|     '.hosts[$host].groups as $groups | .apps | to_entries[] | select( | ||||
|         (.value.hosts | contains([$host])) or | ||||
|         ([.value.group] | inside($groups)) | ||||
|         ([.value.group] | inside($groups)) or | ||||
|         ([.value.group] | inside($extra_groups)) or | ||||
|         $extra_groups == ["*"] | ||||
|     ) | '"$1" \ | ||||
|     "$XDG_CONFIG_HOME/autostart.toml" | ||||
| } | ||||
| 
 | ||||
| _list () { | ||||
| 	_query_autostart_toml '.value.alias // .key' | ||||
| 	_query_autostart_toml '.value.alias // .key' "$1" | ||||
| } | ||||
| 
 | ||||
| _autostart_run_graphical () { | ||||
|  | @ -41,7 +46,7 @@ _autostart_run_graphical () { | |||
| _echo_table () { | ||||
| 	for unit in "$@" | ||||
| 	do | ||||
| 		if _systemctl "$unit" is-enabled --quiet | ||||
| 		if [ "$(_systemctl "$unit" is-enabled)" = "enabled" ] | ||||
| 		then | ||||
| 			_enabled=$(green "enabled") | ||||
| 		else | ||||
|  | @ -64,9 +69,9 @@ _echo_table () { | |||
| } | ||||
| 
 | ||||
| _get_autostart_cmd () { | ||||
| 	_query_autostart_toml 'select((.key == "'"$1"'") or (.value.alias == "'"$1"'")) | .value.command' | ||||
| 	_query_autostart_toml 'select((.key == "'"$1"'") or (.value.alias == "'"$1"'")) | .value.command' "*" | ||||
| } | ||||
| 
 | ||||
| _get_autostart_delay () { | ||||
| 	_query_autostart_toml 'select((.key == "'"$1"'") or (.value.alias == "'"$1"'")) | .value.delay // 0' | ||||
| 	_query_autostart_toml 'select((.key == "'"$1"'") or (.value.alias == "'"$1"'")) | .value.delay // 0' "*" | ||||
| } | ||||
|  |  | |||
|  | @ -1,3 +1,3 @@ | |||
| #!/usr/bin/env bash | ||||
| 
 | ||||
| _list | ||||
| _list "*" | ||||
|  |  | |||
|  | @ -1,14 +1,11 @@ | |||
| #!/usr/bin/env bash | ||||
| 
 | ||||
| rm "$HOME/.config/systemd/user/autostart.target.wants/"* | ||||
| rm -f "$HOME/.config/systemd/user/autostart.target.wants/"* | ||||
| 
 | ||||
| autostart_units=() | ||||
| while IFS='' read -r line | ||||
| do | ||||
| 	autostart_units+=("$line") | ||||
| done < <(_list) | ||||
| 	autostart_units+=("autostart@$line.service") | ||||
| done < <(_list "${args[groups]:-}") | ||||
| 
 | ||||
| for unit in "${autostart_units[@]}" | ||||
| do | ||||
| 	_systemctl "$unit" add-wants autostart.target | ||||
| done | ||||
| systemctl --user add-wants autostart.target "${autostart_units[@]}" | ||||
|  |  | |||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue