OSDN Git Service

55e918dc9c0651002a9b626d3dcfb0c76247de42
[portsreinstall/current.git] / lib / libcommand_flexconf.sh
1 #!/bin/sh -e
2 # ==============================================================================
3 # portsreinstall library script
4 # - Commands of flexible configuration -
5 # Copyright (C) 2018 Mamoru Sakaue, MwGhennndo, All Rights Reserved.
6 # This software is distributed under the 2-Clause BSD License.
7 # ==============================================================================
8
9 # ============= Register/deregister ok ports in the command line form =============
10 command_flexconf_update_ok ()
11 {
12         local dbfile tmp_manually_done_diff
13         dbfile=${DBDIR}/manually_done.list
14         [ -e "$dbfile" ] || touch "$dbfile"
15         cp "$dbfile" "$dbfile.tmp"
16         shift || :
17         case $COMMAND_OPERATION in
18         add )
19                 pkgsys_register_evaluated_globs add "$dbfile.tmp" "$@"
20                 message_echo "`str_linearize_list_and \"$*\"` is/are registered to the list of manually resolved ports"
21                 ;;
22         del )
23                 pkgsys_register_evaluated_globs remove "$dbfile.tmp" "$@"
24                 message_echo "`str_linearize_list_and \"$*\"` is/are deregistered from the list of manually resolved ports"
25                 program_deregister_stage_complete REINSTALLATION
26                 program_deregister_stage_complete ALL_COMPLETE
27                 ;;
28         esac
29         tmp_manually_done_diff=${TMPDIR}/command_flexconf_update_ok:manually_done.list.diff
30         if fileedit_manipulate_old_new_lines "$dbfile" "$dbfile.tmp" \
31                 "$tmp_manually_done_diff.old" "$tmp_manually_done_diff.new"
32         then
33                 while read origin
34                 do
35                         database_record_failure "$origin"
36                 done < $tmp_manually_done_diff.old
37                 while read origin
38                 do
39                         database_record_success "$origin"
40                 done < $tmp_manually_done_diff.new
41         fi
42         mv "$dbfile.tmp" "$dbfile"
43         message_echo "Now the following ports have been manually resolved:"
44         message_cat "$dbfile"
45 }
46
47 # ============= Register/deregister taboo ports in the command line form =============
48 command_flexconf_update_taboo ()
49 {
50         local COMMAND_OPERATION evalated_globs
51         COMMAND_OPERATION=$1
52         shift || :
53         evalated_globs=`str_linearize_list_and "$@"`
54         case $COMMAND_OPERATION in
55         add )
56                 pkgsys_register_evaluated_globs add "${DBDIR}/taboo.list" "$@"
57                 message_echo "$evalated_globs is/are registered to the list of taboo ports."
58                 ;;
59         del )
60                 pkgsys_register_evaluated_globs remove "${DBDIR}/taboo.list" "$@"
61                 message_echo "$evalated_globs is/are deregistered from the list of taboo ports."
62                 ;;
63         esac
64         fileedit_combine_lists "${DBDIR}/conf/TABOO:PORTS.parsed" "${DBDIR}/taboo.list" > ${DBDIR}/taboo.all.list
65         message_echo "Now the following ports are registered as taboo:"
66         message_cat "${DBDIR}/taboo.all.list"
67 }
68
69 # ============= Register/deregister freeze ports in the command line form =============
70 command_flexconf_update_freeze ()
71 {
72         local COMMAND_OPERATION evalated_globs
73         COMMAND_OPERATION=$1
74         shift || :
75         evalated_globs=`str_linearize_list_and "$@"`
76         case $COMMAND_OPERATION in
77         add )
78                 pkgsys_register_evaluated_globs add "${DBDIR}/freeze.list" "$@"
79                 message_echo "$evalated_globs is/are registered to the list of ports to freeze."
80                 ;;
81         del )
82                 pkgsys_register_evaluated_globs remove "${DBDIR}/freeze.list" "$@"
83                 message_echo "$evalated_globs is/are deregistered from the list of ports to freeze."
84                 ;;
85         esac
86         fileedit_combine_lists "${DBDIR}/conf/FREEZE:PORTS.parsed" "${DBDIR}/freeze.list" > ${DBDIR}/freeze.all.list
87         message_echo "Now the following ports are registered to freeze:"
88         message_cat "${DBDIR}/freeze.all.list"
89 }
90
91 # ============= Register/deregister needed ports in the command line form =============
92 command_flexconf_update_need ()
93 {
94         local COMMAND_OPERATION evalated_globs
95         COMMAND_OPERATION=$1
96         shift || :
97         evalated_globs=`str_linearize_list_and "$@"`
98         case $COMMAND_OPERATION in
99         add )
100                 pkgsys_register_evaluated_globs add "${DBDIR}/need.list" "$@"
101                 message_echo "$evalated_globs is/are registered to the list of necessary ports."
102                 ;;
103         del )
104                 pkgsys_register_evaluated_globs remove "${DBDIR}/need.list" "$@"
105                 message_echo "$evalated_globs is/are deregistered from the list of necessary ports."
106                 ;;
107         esac
108         {
109                 sed -E -f "${DBDIR}/REPLACE.complete_sed_pattern" "${DBDIR}/need.list" || :
110                 cat "${DBDIR}/need.list" || :
111         } 2> /dev/null | sort -u > ${DBDIR}/need.with_replaced.list
112         message_echo "Now the following ports are registered to be necessary:"
113         message_cat "${DBDIR}/need.list"
114 }
115
116 # ============= Register/deregister unneeded ports in the command line form =============
117 command_flexconf_update_noneed ()
118 {
119         local COMMAND_OPERATION evalated_globs
120         COMMAND_OPERATION=$1
121         shift || :
122         evalated_globs=`str_linearize_list_and "$@"`
123         case $COMMAND_OPERATION in
124         add )
125                 pkgsys_register_evaluated_globs add "${DBDIR}/noneed.list" "$@"
126                 message_echo "$evalated_globs is/are registered to the list of unnecessary ports."
127                 ;;
128         del )
129                 pkgsys_register_evaluated_globs remove "${DBDIR}/noneed.list" "$@"
130                 message_echo "$evalated_globs is/are deregistered from the list of unnecessary ports."
131                 ;;
132         esac
133         message_echo "Now the following ports are registered to be unnecessary:"
134         message_cat "${DBDIR}/noneed.list"
135 }