docs: def command_update(prog_name, prof_mgr, prof_name, prog_args):
  
  	"""
  	Update components.
  	"""
  	
  	# Retrieve arguments
  	parser = argparse.ArgumentParser(
  		prog=prog_name
  	)
  	parser.add_argument(
  		"components",
  		metavar="comps",
  		nargs=argparse.REMAINDER,
  		help="system components"
  	)
  	args = parser.parse_args(prog_args)
  	
  	# Profile load
  	prof_stub = prof_mgr.load(prof_name)
  	
  	# Collect component stubs
  	comp_stubs = []
  	if len(args.components) == 0:
  		raise Exception("Empty component list")
  	for comp_name in args.components:
  		comp_stub = prof_stub.component(comp_name)
  		component_exists(prof_stub, comp_stub)
  		comp_stubs.append(comp_stub)
  		
  	context = prof_stub.context()
  	
  	# Create delete plan
  	plan = []
  	for comp_stub in comp_stubs:
  		comp_stub.delete(context, plan)
  		
  	# Execute delete plan
  	for op in plan:
  		operation_execute(op, context)
  		
  	# Update component stub list
  	for op in plan:
  		comp_stub = prof_stub.component(op.name())
  		if comp_stub not in comp_stubs:
  			comp_stubs.append(comp_stub)
  	
  	# Create insert plan
  	plan = []
  	for comp_stub in comp_stubs:
  		comp_stub.insert(context, plan)
  		
  	# Execute insert plan
  	for op in plan:
  		operation_execute(op, context)