mirror of
				https://github.com/superseriousbusiness/gotosocial.git
				synced 2025-11-04 06:12:25 -06:00 
			
		
		
		
	
		
			
	
	
		
			78 lines
		
	
	
	
		
			1.3 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
		
		
			
		
	
	
			78 lines
		
	
	
	
		
			1.3 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
| 
								 | 
							
								package pngstructure
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								import (
							 | 
						||
| 
								 | 
							
									"fmt"
							 | 
						||
| 
								 | 
							
									"os"
							 | 
						||
| 
								 | 
							
									"path"
							 | 
						||
| 
								 | 
							
								)
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								var (
							 | 
						||
| 
								 | 
							
									assetsPath = "assets"
							 | 
						||
| 
								 | 
							
								)
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								func getModuleRootPath() (string, error) {
							 | 
						||
| 
								 | 
							
									moduleRootPath := os.Getenv("PNG_MODULE_ROOT_PATH")
							 | 
						||
| 
								 | 
							
									if moduleRootPath != "" {
							 | 
						||
| 
								 | 
							
										return moduleRootPath, nil
							 | 
						||
| 
								 | 
							
									}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									currentWd, err := os.Getwd()
							 | 
						||
| 
								 | 
							
									if err != nil {
							 | 
						||
| 
								 | 
							
										return "", err
							 | 
						||
| 
								 | 
							
									}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									currentPath := currentWd
							 | 
						||
| 
								 | 
							
									visited := make([]string, 0)
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									for {
							 | 
						||
| 
								 | 
							
										tryStampFilepath := path.Join(currentPath, ".MODULE_ROOT")
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
										_, err := os.Stat(tryStampFilepath)
							 | 
						||
| 
								 | 
							
										if err != nil && !os.IsNotExist(err) {
							 | 
						||
| 
								 | 
							
											return "", err
							 | 
						||
| 
								 | 
							
										} else if err == nil {
							 | 
						||
| 
								 | 
							
											break
							 | 
						||
| 
								 | 
							
										}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
										visited = append(visited, tryStampFilepath)
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
										currentPath = path.Dir(currentPath)
							 | 
						||
| 
								 | 
							
										if currentPath == "/" {
							 | 
						||
| 
								 | 
							
											return "", fmt.Errorf("could not find module-root: %v", visited)
							 | 
						||
| 
								 | 
							
										}
							 | 
						||
| 
								 | 
							
									}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									return currentPath, nil
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								func getTestAssetsPath() (string, error) {
							 | 
						||
| 
								 | 
							
									if assetsPath == "" {
							 | 
						||
| 
								 | 
							
										moduleRootPath, err := getModuleRootPath()
							 | 
						||
| 
								 | 
							
										if err != nil {
							 | 
						||
| 
								 | 
							
											return "", err
							 | 
						||
| 
								 | 
							
										}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
										assetsPath = path.Join(moduleRootPath, "assets")
							 | 
						||
| 
								 | 
							
									}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									return assetsPath, nil
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								func getTestBasicImageFilepath() (string, error) {
							 | 
						||
| 
								 | 
							
									assetsPath, err := getTestAssetsPath()
							 | 
						||
| 
								 | 
							
									if err != nil {
							 | 
						||
| 
								 | 
							
										return "", err
							 | 
						||
| 
								 | 
							
									}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									return path.Join(assetsPath, "libpng.png"), nil
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								func getTestExifImageFilepath() (string, error) {
							 | 
						||
| 
								 | 
							
									assetsPath, err := getTestAssetsPath()
							 | 
						||
| 
								 | 
							
									if err != nil {
							 | 
						||
| 
								 | 
							
										return "", err
							 | 
						||
| 
								 | 
							
									}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									return path.Join(assetsPath, "exif.png"), nil
							 | 
						||
| 
								 | 
							
								}
							 |