#!/bin/sh
# Flags functions


export infoFlags='
	help
	h
'

export globalFlags='
	v
	add-dir-header
	log-file
	log-file-max-size
	one-output
	rootfs
	skip-headers
	skip-log-headers
'

export initJoinFlags='
	apiserver-advertise-address
	apiserver-bind-port
	certificate-key
	config
	cri-socket
	dry-run
	ignore-preflight-errors
	node-name
	patches
	skip-phases
	token
'

export initFlags='
	cert-dir
	control-plane-endpoint
	feature-gates
	image-repository
	kubernetes-version
	pod-network-cidr
	service-cidr
	service-dns-domain
	skip-certificate-key-print
	skip-token-print
	token-ttl
	upload-certs
'

export joinFlags='
	control-plane
	discovery-file
	discovery-token
	discovery-token-ca-cert-hash
	discovery-token-unsafe-skip-ca-verification
	tls-bootstrap-token
'

export upgradeFlags='
	allow-experimental-upgrades
	allow-release-candidate-upgrades
	api-server-manifest
	certificate-renewal
	context-lines
	c
	controller-manager-manifest
	etcd-upgrade
	output
	o
	print-config
	show-managed-fields
	scheduler-manifest
'

export resetFlags='
	cleanup-tmp-dir
'
declare -A KFLAGS=(
	[help]='FLAG_help=1;'
	[h]='FLAG_h=1;'
	[v]='FLAG_v=${2:1:-1};'
	[add-dir-header]='FLAG_add_dir_header=${2:1:-1};'
	[log-file]='FLAG_log_file=${2:1:-1};'
	[log-file-max-size]='FLAG_log_file_max_size=${2:1:-1};'
	[one-output]='FLAG_one_output=${2:1:-1};'
	[rootfs]='FLAG_rootfs=${2:1:-1};'
	[skip-headers]='FLAG_skip_headers=1;'
	[skip-log-headers]='FLAG_skip_log_headers=1;'
	[apiserver-advertise-address]='FLAG_apiserver_advertise_address=${2:1:-1};'
	[apiserver-bind-port]='FLAG_apiserver_bind_port=${2:1:-1};'
	[certificate-key]='FLAG_certificate_key=${2:1:-1};'
	[config]='FLAG_config=${2:1:-1};'
	[cri-socket]='FLAG_cri_socket=${2:1:-1};'
	[dry-run]='FLAG_dry_run=1;'
	[ignore-preflight-errors]='FLAG_ignore_preflight_errors=${2:1:-1};'
	[node-name]='FLAG_node_name=${2:1:-1};'
	[patches]='FLAG_patches=${2:1:-1};'
	[skip-phases]='FLAG_skip_phases=${2:1:-1};'
	[token]='FLAG_token=${2:1:-1};'
	[cert-dir]='FLAG_cert_dir=${2:1:-1};'
	[control-plane-endpoint]='FLAG_control_plane_endpoint=${2:1:-1};'
	[feature-gates]='FLAG_feature_gates=${2:1:-1};'
	[image-repository]='FLAG_image_repository=${2:1:-1};'
	[kubernetes-version]='FLAG_kubernetes_version=${2:1:-1};'
	[pod-network-cidr]='FLAG_pod_network_cidr=${2:1:-1};'
	[service-cidr]='FLAG_service_cidr=${2:1:-1};'
	[service-dns-domain]='FLAG_service_dns_domain=${2:1:-1};'
	[skip-certificate-key-print]='FLAG_skip_certificate_key_print=1;'
	[skip-token-print]='FLAG_skip_token_print=1;'
	[token-ttl]='FLAG_token_ttl=${2:1:-1};'
	[upload-certs]='FLAG_upload_certs=1;'
	[control-plane]='FLAG_control_plane=1;'
	[discovery-file]='FLAG_discovery_file=${2:1:-1};'
	[discovery-token]='FLAG_discovery_token=${2:1:-1};'
	[discovery-token-ca-cert-hash]='FLAG_discovery_token_ca_cert_hash=${2:1:-1};'
	[discovery-token-unsafe-skip-ca-verification]='FLAG_discovery_token_unsafe_skip_ca_verification=1;'
	[tls-bootstrap-token]='FLAG_tls_bootstrap_token=${2:1:-1};'
	[allow-experimental-upgrades]='FLAG_allow_experimental_upgrades=1;'
	[allow-release-candidate-upgrades]='FLAG_allow_release_candidate_upgrades=1;'
	[api-server-manifest]='FLAG_api_server_manifest=${2:1:-1};'
	[certificate-renewal]='FLAG_certificate_renewal=1;'
	[context-lines]='FLAG_context_lines=${2:1:-1};'
	[c]='FLAG_c=${2:1:-1};'
	[controller-manager-manifest]='FLAG_controller_manager_manifest=${2:1:-1};'
	[etcd-upgrade]='FLAG_etcd_upgrade=1;'
	[output]='FLAG_output=1;'
	[o]='FLAG_o=1;'
	[print-config]='FLAG_print_config=1;'
	[show-managed-fields]='FLAG_show_managed_fields=1;'
	[scheduler-manifest]='FLAG_scheduler_manifest=${2:1:-1};'
	[cleanup-tmp-dir]='FLAG_cleanup_tmp_dir=1;'
)
declare -A KFLAGSBOOLEAN=(
	[help]=1
	[h]=1
	[skip-headers]=1
	[skip-log-headers]=1
	[dry-run]=1
	[skip-certificate-key-print]=1
	[skip-token-print]=1
	[upload-certs]=1
	[control-plane]=1
	[discovery-token-unsafe-skip-ca-verification]=1
	[allow-experimental-upgrades]=1
	[allow-release-candidate-upgrades]=1
	[certificate-renewal]=1
	[etcd-upgrade]=1
	[output]=1
	[o]=1
	[print-config]=1
	[show-managed-fields]=1
	[cleanup-tmp-dir]=1
)


# Сформировать список параметров для getopt --long par -o par ...
formGetoptPars() {
	oflags=
  for flag in ${!KFLAGS[@]}
  do
		haveParSym=
		if [ -z ${KFLAGSBOOLEAN[$flag]} ]; then haveParSym=':'; fi
		if [ ${#flag} -gt 1 ]
		then
			echo "--long $flag$haveParSym"
		else
			oflags+=$flag$haveParSym
		fi
  done
  if [ -n "$oflags" ]
  then
		echo -o $oflags
	fi
}

# formGetoptPars
