OSDN Git Service

Fixed a bug related to the previous modification.
[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         if [ `cat "$dbfile" 2> /dev/null | wc -l` -gt 0 ]
46         then
47                 message_echo "Now the following ports are registered to be manually resolved:"
48                 message_cat "$dbfile"
49         else
50                 message_echo "No port is registered to be manually resolved."
51         fi
52 }
53
54 # ============= Register/deregister taboo ports in the command line form =============
55 command_flexconf_update_taboo ()
56 {
57         local COMMAND_OPERATION evalated_globs
58         COMMAND_OPERATION=$1
59         shift || :
60         evalated_globs=`str_linearize_list_and "$@"`
61         case $COMMAND_OPERATION in
62         add )
63                 pkgsys_register_evaluated_globs add "${DBDIR}/taboo.list" "$@"
64                 message_echo "$evalated_globs is/are registered to the list of taboo ports."
65                 ;;
66         del )
67                 pkgsys_register_evaluated_globs remove "${DBDIR}/taboo.list" "$@"
68                 message_echo "$evalated_globs is/are deregistered from the list of taboo ports."
69                 ;;
70         esac
71         fileedit_combine_lists "${DBDIR}/conf/TABOO:PORTS.parsed" "${DBDIR}/taboo.list" > ${DBDIR}/taboo.all.list
72         if [ `cat "${DBDIR}/taboo.all.list" 2> /dev/null | wc -l` -gt 0 ]
73         then
74                 message_echo "Now the following ports are registered to be taboo:"
75                 message_cat "${DBDIR}/taboo.all.list"
76         else
77                 message_echo "No port is registered to be taboo."
78         fi
79 }
80
81 # ============= Register/deregister freeze ports in the command line form =============
82 command_flexconf_update_freeze ()
83 {
84         local COMMAND_OPERATION evalated_globs
85         COMMAND_OPERATION=$1
86         shift || :
87         evalated_globs=`str_linearize_list_and "$@"`
88         case $COMMAND_OPERATION in
89         add )
90                 pkgsys_register_evaluated_globs add "${DBDIR}/freeze.list" "$@"
91                 message_echo "$evalated_globs is/are registered to the list of ports to freeze."
92                 ;;
93         del )
94                 pkgsys_register_evaluated_globs remove "${DBDIR}/freeze.list" "$@"
95                 message_echo "$evalated_globs is/are deregistered from the list of ports to freeze."
96                 ;;
97         esac
98         fileedit_combine_lists "${DBDIR}/conf/FREEZE:PORTS.parsed" "${DBDIR}/freeze.list" > ${DBDIR}/freeze.all.list
99         if [ `cat "${DBDIR}/freeze.all.list" 2> /dev/null | wc -l` -gt 0 ]
100         then
101                 message_echo "Now the following ports are registered to be freeze:"
102                 message_cat "${DBDIR}/freeze.all.list"
103         else
104                 message_echo "No port is registered to be freeze."
105         fi
106 }
107
108 # ============= Register/deregister needed ports in the command line form =============
109 command_flexconf_update_need ()
110 {
111         local COMMAND_OPERATION evalated_globs
112         COMMAND_OPERATION=$1
113         shift || :
114         evalated_globs=`str_linearize_list_and "$@"`
115         case $COMMAND_OPERATION in
116         add )
117                 pkgsys_register_evaluated_globs add "${DBDIR}/need.list" "$@"
118                 message_echo "$evalated_globs is/are registered to the list of necessary ports."
119                 ;;
120         del )
121                 pkgsys_register_evaluated_globs remove "${DBDIR}/need.list" "$@"
122                 message_echo "$evalated_globs is/are deregistered from the list of necessary ports."
123                 ;;
124         esac
125         {
126                 sed -E -f "${DBDIR}/REPLACE.complete_sed_pattern" "${DBDIR}/need.list" || :
127                 cat "${DBDIR}/need.list" || :
128         } 2> /dev/null | sort -u > ${DBDIR}/need.with_replaced.list
129         if [ `cat "${DBDIR}/need.list" 2> /dev/null | wc -l` -gt 0 ]
130         then
131                 message_echo "Now the following ports are registered to be necessary:"
132                 message_cat "${DBDIR}/need.list"
133         else
134                 message_echo "No port is registered to be necessary."
135         fi
136 }
137
138 # ============= Register/deregister unneeded ports in the command line form =============
139 command_flexconf_update_noneed ()
140 {
141         local COMMAND_OPERATION evalated_globs
142         COMMAND_OPERATION=$1
143         shift || :
144         evalated_globs=`str_linearize_list_and "$@"`
145         case $COMMAND_OPERATION in
146         add )
147                 pkgsys_register_evaluated_globs add "${DBDIR}/noneed.list" "$@"
148                 message_echo "$evalated_globs is/are registered to the list of unnecessary ports."
149                 ;;
150         del )
151                 pkgsys_register_evaluated_globs remove "${DBDIR}/noneed.list" "$@"
152                 message_echo "$evalated_globs is/are deregistered from the list of unnecessary ports."
153                 ;;
154         esac
155         if [ `cat "${DBDIR}/noneed.list" 2> /dev/null | wc -l` -gt 0 ]
156         then
157                 message_echo "Now the following ports are registered to be unnecessary:"
158                 message_cat "${DBDIR}/noneed.list"
159         else
160                 message_echo "No port is registered to be unnecessary."
161         fi
162 }