MCPcopy Index your code
hub / github.com/docker/cli / updateMounts

Function updateMounts

cli/command/service/update.go:927–967  ·  view source on GitHub ↗
(flags *pflag.FlagSet, mounts *[]mount.Mount)

Source from the content-addressed store, hash-verified

925}
926
927func updateMounts(flags *pflag.FlagSet, mounts *[]mount.Mount) error {
928 mountsByTarget := map[string]mount.Mount{}
929
930 if flags.Changed(flagMountAdd) {
931 values := flags.Lookup(flagMountAdd).Value.(*opts.MountOpt).Value()
932 for _, mnt := range values {
933 if _, ok := mountsByTarget[mnt.Target]; ok {
934 return errors.New("duplicate mount target")
935 }
936 mountsByTarget[mnt.Target] = mnt
937 }
938 }
939
940 // Add old list of mount points minus updated one.
941 for _, mnt := range *mounts {
942 if _, ok := mountsByTarget[mnt.Target]; !ok {
943 mountsByTarget[mnt.Target] = mnt
944 }
945 }
946
947 newMounts := make([]mount.Mount, 0, len(mountsByTarget))
948
949 toRemove := buildToRemoveSet(flags, flagMountRemove)
950
951 for _, mnt := range mountsByTarget {
952 if _, exists := toRemove[mnt.Target]; !exists {
953 newMounts = append(newMounts, mnt)
954 }
955 }
956 sort.Slice(newMounts, func(i, j int) bool {
957 a, b := newMounts[i], newMounts[j]
958
959 if a.Source == b.Source {
960 return a.Target < b.Target
961 }
962
963 return a.Source < b.Source
964 })
965 *mounts = newMounts
966 return nil
967}
968
969func updateGroups(flags *pflag.FlagSet, groups *[]string) error {
970 if flags.Changed(flagGroupAdd) {

Callers 3

updateServiceFunction · 0.85
TestUpdateMountsFunction · 0.85

Calls 2

buildToRemoveSetFunction · 0.85
ValueMethod · 0.65

Tested by 2

TestUpdateMountsFunction · 0.68

Used in the wild real call sites across dependent graphs

searching dependent graphs…