feat: add PullImages for ADBDriver
This commit is contained in:
parent
7d5fdfe490
commit
d2f92923ee
|
@ -1 +1 @@
|
|||
v5.0.0-beta-2503251433
|
||||
v5.0.0-beta-2503261906
|
||||
|
|
|
@ -961,6 +961,75 @@ func (ad *ADBDriver) ClearImages() error {
|
|||
return nil
|
||||
}
|
||||
|
||||
// PullImages pulls all images from device's DCIM/Camera directory to local directory
|
||||
func (ad *ADBDriver) PullImages(localDir string) error {
|
||||
log.Info().Str("localDir", localDir).Msg("ADBDriver.PullImages")
|
||||
remoteDir := "/sdcard/DCIM/Camera/"
|
||||
|
||||
// create local directory if not exists
|
||||
if err := os.MkdirAll(localDir, 0o755); err != nil {
|
||||
return fmt.Errorf("failed to create local directory: %w", err)
|
||||
}
|
||||
|
||||
files, err := ad.Device.List(remoteDir)
|
||||
if err != nil {
|
||||
return fmt.Errorf("failed to list directory %s: %w", remoteDir, err)
|
||||
}
|
||||
|
||||
for _, file := range files {
|
||||
// filter image files by extension
|
||||
ext := strings.ToLower(path.Ext(file.Name))
|
||||
if !isImageFile(ext) {
|
||||
continue
|
||||
}
|
||||
|
||||
remotePath := path.Join(remoteDir, file.Name)
|
||||
localPath := path.Join(localDir, file.Name)
|
||||
|
||||
// check if file already exists
|
||||
if _, err := os.Stat(localPath); err == nil {
|
||||
log.Debug().Str("localPath", localPath).Msg("file already exists, skipping")
|
||||
continue
|
||||
}
|
||||
|
||||
// create local file
|
||||
f, err := os.Create(localPath)
|
||||
if err != nil {
|
||||
log.Error().Err(err).Str("localPath", localPath).Msg("failed to create local file")
|
||||
continue
|
||||
}
|
||||
defer f.Close()
|
||||
|
||||
// pull image file
|
||||
if err := ad.Device.Pull(remotePath, f); err != nil {
|
||||
log.Error().Err(err).
|
||||
Str("remotePath", remotePath).
|
||||
Str("localPath", localPath).
|
||||
Msg("failed to pull image")
|
||||
continue // continue with next file
|
||||
}
|
||||
log.Info().
|
||||
Str("remotePath", remotePath).
|
||||
Str("localPath", localPath).
|
||||
Msg("image pulled successfully")
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
// isImageFile checks if the file extension is an image format
|
||||
func isImageFile(ext string) bool {
|
||||
imageExts := map[string]bool{
|
||||
".jpg": true,
|
||||
".jpeg": true,
|
||||
".png": true,
|
||||
".gif": true,
|
||||
".bmp": true,
|
||||
".webp": true,
|
||||
".heic": true,
|
||||
}
|
||||
return imageExts[ext]
|
||||
}
|
||||
|
||||
type ExportPoint struct {
|
||||
Start int `json:"start" yaml:"start"`
|
||||
End int `json:"end" yaml:"end"`
|
||||
|
|
|
@ -260,6 +260,9 @@ func TestDriver_ADB_PushImage(t *testing.T) {
|
|||
err = driver.PushImage(path)
|
||||
assert.Nil(t, err)
|
||||
|
||||
err = driver.PullImages("./test")
|
||||
assert.Nil(t, err)
|
||||
|
||||
err = driver.ClearImages()
|
||||
assert.Nil(t, err)
|
||||
}
|
||||
|
|
|
@ -452,6 +452,10 @@ func (wd *BrowserDriver) PushImage(localPath string) error {
|
|||
return errors.New("not support")
|
||||
}
|
||||
|
||||
func (wd *BrowserDriver) PullImages(localDir string) error {
|
||||
return errors.New("not support")
|
||||
}
|
||||
|
||||
func (wd *BrowserDriver) Orientation() (orientation types.Orientation, err error) {
|
||||
log.Warn().Msg("Orientation not implemented in ADBDriver")
|
||||
return
|
||||
|
|
|
@ -68,6 +68,7 @@ type IDriver interface {
|
|||
|
||||
// image related
|
||||
PushImage(localPath string) error
|
||||
PullImages(localDir string) error
|
||||
ClearImages() error
|
||||
|
||||
// triggers the log capture and returns the log entries
|
||||
|
|
|
@ -288,6 +288,11 @@ func (hd *HDCDriver) PushImage(localPath string) error {
|
|||
return nil
|
||||
}
|
||||
|
||||
func (hd *HDCDriver) PullImages(localDir string) error {
|
||||
log.Warn().Msg("PullImages not implemented in HDCDriver")
|
||||
return nil
|
||||
}
|
||||
|
||||
func (hd *HDCDriver) ClearImages() error {
|
||||
log.Warn().Msg("ClearImages not implemented in HDCDriver")
|
||||
return nil
|
||||
|
|
|
@ -989,6 +989,11 @@ func (wd *WDADriver) PushImage(localPath string) error {
|
|||
return err
|
||||
}
|
||||
|
||||
func (wd *WDADriver) PullImages(localDir string) error {
|
||||
log.Warn().Msg("PullImages not implemented in WDADriver")
|
||||
return nil
|
||||
}
|
||||
|
||||
func (wd *WDADriver) ClearImages() error {
|
||||
log.Info().Msg("WDADriver.ClearImages")
|
||||
data := map[string]interface{}{}
|
||||
|
|
Loading…
Reference in New Issue