aboutsummaryrefslogtreecommitdiff
path: root/cmd
diff options
context:
space:
mode:
authorXe <me@christine.website>2022-12-09 10:22:30 -0500
committerXe <me@christine.website>2022-12-09 10:22:30 -0500
commit6b1b88d6755d47307db38bd797c70f5daf8e2eb2 (patch)
tree16b547e532801ff0ca661565edc7762ad855d9ff /cmd
parentaca310f59ffa6b459d78696da1d747a422ead498 (diff)
downloadx-6b1b88d6755d47307db38bd797c70f5daf8e2eb2.tar.xz
x-6b1b88d6755d47307db38bd797c70f5daf8e2eb2.zip
cmd/uploud: add raw file uploads
Signed-off-by: Xe <me@christine.website>
Diffstat (limited to 'cmd')
-rw-r--r--cmd/uploud/main.go51
1 files changed, 47 insertions, 4 deletions
diff --git a/cmd/uploud/main.go b/cmd/uploud/main.go
index c69120d..551cf34 100644
--- a/cmd/uploud/main.go
+++ b/cmd/uploud/main.go
@@ -3,9 +3,11 @@ package main
import (
"flag"
+ "fmt"
"image"
"image/jpeg"
"image/png"
+ "io"
"log"
"os"
"path/filepath"
@@ -32,6 +34,8 @@ var (
jpegQuality = flag.Int("jpeg-quality", 85, "JPEG quality (lower means lower file size)")
webpQuality = flag.Int("webp-quality", 50, "WEBP quality (higher is worse quality)")
+
+ noEncode = flag.Bool("no-encode", false, "if set, just upload the file directly without encoding")
)
func doAVIF(src image.Image, dstPath string) error {
@@ -145,6 +149,31 @@ func processImage(fname, tempDir string) error {
return nil
}
+func copyFile(src, dst string) (int64, error) {
+ sourceFileStat, err := os.Stat(src)
+ if err != nil {
+ return 0, err
+ }
+
+ if !sourceFileStat.Mode().IsRegular() {
+ return 0, fmt.Errorf("%s is not a regular file", src)
+ }
+
+ source, err := os.Open(src)
+ if err != nil {
+ return 0, err
+ }
+ defer source.Close()
+
+ destination, err := os.Create(dst)
+ if err != nil {
+ return 0, err
+ }
+ defer destination.Close()
+ nBytes, err := io.Copy(destination, source)
+ return nBytes, err
+}
+
func main() {
internal.HandleStartup()
@@ -170,13 +199,25 @@ func main() {
}
for _, finfo := range files {
- if err := processImage(filepath.Join(flag.Arg(0), finfo.Name()), td); err != nil {
- log.Fatal(err)
+ if !*noEncode {
+ if err := processImage(filepath.Join(flag.Arg(0), finfo.Name()), td); err != nil {
+ log.Fatal(err)
+ }
+ } else {
+ if _, err := copyFile(filepath.Join(flag.Arg(0), finfo.Name()), filepath.Join(td, finfo.Name())); err != nil {
+ log.Fatal(err)
+ }
}
}
} else {
- if err := processImage(flag.Arg(0), td); err != nil {
- log.Fatal(err)
+ if !*noEncode {
+ if err := processImage(flag.Arg(0), td); err != nil {
+ log.Fatal(err)
+ }
+ } else {
+ if _, err := copyFile(flag.Arg(0), filepath.Join(td, filepath.Base(flag.Arg(0)))); err != nil {
+ log.Fatal(err)
+ }
}
}
@@ -212,6 +253,8 @@ var mimeTypes = map[string]string{
".webp": "image/webp",
".jpg": "image/jpeg",
".png": "image/png",
+ ".wasm": "application/wasm",
+ ".css": "text/css",
}
func mkS3Client() *s3.S3 {