summaryrefslogtreecommitdiff
path: root/unofficial/modules/ddeploy/procedures/automatic
blob: 1756ce81663c387a73c75a1e19e22a476a7a1709 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
#!/bin/bash
# TODO: I think it would be best that *nothing* is asked , eg everything passed as cmdline arg, or make 'ddeploy profiles' containing username, svn host, etc etc etc
depend_module yaourt
depend_procedure core base

var_RUNTIME_PACKAGES="svn"

phase_preparation=(\
	configure \
	intro \
	sysprep \
	msg_manual \
	runtime_network \
	runtime_svn \
	msg_automatic \
	select_source \
	runtime_packages \
	runtime_yaourt)

phase_finish=(configure_home msg_report)


worker_intro ()
{
	notify "DDeploy::automatic procedure running..."
}


worker_configure ()
{
	var_UI_TYPE=${arg_ui_type:-cli}
}


worker_msg_manual ()
{
	# All things that need to be done manually first
	notify "A few manual things need to happen first..."
}


worker_msg_automatic ()
{
	notify "**** From now on. everything will be automatic. Enjoy the show!" # not true: you need pass for dm_crypt
}


worker_runtime_network ()
{
	if ask_yesno "Do you want to (re)-configure your networking?"
	then
		interactive_runtime_network
	else
		infofy "Ok. skipping network config"
	fi
}


worker_runtime_svn ()
{
	SVN_USERNAME=dieter #TODO: softcode this
	ask_password svn #TODO: if user entered incorrect password, the install process will just fail..
	SVN="svn --username $SVN_USERNAME --password $SVN_PASSWORD"
	SVN_BASE=https://192.168.1.2/svn/repos
	ask_string "Which host are you installing?" desktop-a7nx8
	TARGET_HOST=$ANSWER_STRING #TODO: allow passing as cmdline argument (and check with svn info). handle -z $ANSWER_STRING
	_accept_ssl_cert
}


worker_prepare_disks ()
{
	svn export $SVN_BASE/ddm-configs/$TARGET_HOST/trunk/disks/.blockdata  $RUNTIME_DIR || die_error "Could not svn export $SVN_BASE/ddm-configs/$TARGET_HOST/trunk/disks/.blockdata into $RUNTIME_DIR"
	svn export $SVN_BASE/ddm-configs/$TARGET_HOST/trunk/disks/.partitions $RUNTIME_DIR || die_error "Could not svn export $SVN_BASE/ddm-configs/$TARGET_HOST/trunk/disks/.partitions into $RUNTIME_DIR"

	process_disks       || die_error "Could not process_disks"
	process_filesystems || die_error "Could not process_filesystems"

	#TODO: support rollback


	# TODO: fstab? auto-add to fstab with libs? auto mkdir's on target_dir?
	true	
}

worker_package_list ()
{
	$SVN export $SVN_BASE/ddm-configs/$TARGET_HOST/trunk/package-list $var_PKG_FILE || die_error "Could not export package list!"
	# cat -> there are newlines in it -> var=`echo $var` -> not anymore :)
	TARGET_PACKAGES=`cat $var_PKG_FILE` && TARGET_PACKAGES=`echo $TARGET_PACKAGES` || die_error "Could not cat package list. THIS SHOULD NEVER HAPPEN."
	true
}


worker_install_packages ()
{
        target_prepare_pacman core extra community #TODO: it would be better if this was a separate worker, i think
        [ -z "$TARGET_PACKAGES" ] && die_error "No packages listed to be installed!"
        installpkg
}


worker_configure_home ()
{
	#checkout from svn
	true
}


worker_set_clock ()
{
	#timezone="Europe/Brussels"
	#Not doing anything. hwclock is set already and configs are coming from svn anyway..
	true
}


worker_install_bootloader ()
{
	install-grub /dev/sda
}


worker_runtime_yaourt ()
{
	_yaourt_replace_pacman
}