ToOSFileMode returns the os.FileMode to be used when creating file system elements with the given git mode and a nil error on success. When the provided mode cannot be mapped to a valid file system mode (e.g. Submodule) it returns os.FileMode(0) and an error. The returned file mode does not take
()
| 168 | // |
| 169 | // The returned file mode does not take into account the umask. |
| 170 | func (m FileMode) ToOSFileMode() (os.FileMode, error) { |
| 171 | switch m { |
| 172 | case Dir: |
| 173 | return os.ModePerm | os.ModeDir, nil |
| 174 | case Submodule: |
| 175 | return os.ModePerm | os.ModeDir, nil |
| 176 | case Regular: |
| 177 | return os.FileMode(0644), nil |
| 178 | // Deprecated is no longer allowed: treated as a Regular instead |
| 179 | case Deprecated: |
| 180 | return os.FileMode(0644), nil |
| 181 | case Executable: |
| 182 | return os.FileMode(0755), nil |
| 183 | case Symlink: |
| 184 | return os.ModePerm | os.ModeSymlink, nil |
| 185 | } |
| 186 | |
| 187 | return os.FileMode(0), fmt.Errorf("malformed mode (%s)", m) |
| 188 | } |
no outgoing calls