diff --git a/go.mod b/go.mod index f0f21dd..a0ff67d 100644 --- a/go.mod +++ b/go.mod @@ -15,5 +15,4 @@ require ( github.com/stretchr/testify v1.7.0 golang.org/x/net v0.9.0 golang.org/x/term v0.7.0 - gopkg.in/yaml.v2 v2.4.0 ) diff --git a/go.sum b/go.sum index b8755ff..fb58910 100644 --- a/go.sum +++ b/go.sum @@ -96,8 +96,7 @@ golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8T gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405 h1:yhCVgyC4o1eVCa2tZl7eS0r+SDo693bJlVdllGtEeKM= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= +gopkg.in/yaml.v2 v2.3.0 h1:clyUAQHOM3G0M3f5vQj7LuJrETvjVot3Z5el9nffUtU= gopkg.in/yaml.v2 v2.3.0/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= -gopkg.in/yaml.v2 v2.4.0 h1:D8xgwECY7CYvx+Y2n4sBz93Jn9JRvxdiyyo8CTfuKaY= -gopkg.in/yaml.v2 v2.4.0/go.mod h1:RDklbk79AGWmwhnvt/jBztapEOGDOx6ZbXqjP6csGnQ= gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c h1:dUUwHk2QECo/6vqA44rthZ8ie2QXMNeKRTHCNY2nXvo= gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= diff --git a/pkg/persistence/default_profile.png b/pkg/persistence/default_profile.png new file mode 100644 index 0000000..d8052f5 Binary files /dev/null and b/pkg/persistence/default_profile.png differ diff --git a/pkg/persistence/profile.go b/pkg/persistence/profile.go index 2fbd63b..38542be 100644 --- a/pkg/persistence/profile.go +++ b/pkg/persistence/profile.go @@ -9,7 +9,6 @@ import ( sql "github.com/jmoiron/sqlx" "github.com/jmoiron/sqlx/reflectx" _ "github.com/mattn/go-sqlite3" - "gopkg.in/yaml.v2" "gitlab.com/offline-twitter/twitter_offline_engine/pkg/scraper" ) @@ -17,11 +16,11 @@ import ( //go:embed schema.sql var sql_init string -type Settings struct{} +//go:embed default_profile.png +var default_profile_image []byte type Profile struct { ProfileDir string - Settings Settings DB *sql.DB } @@ -40,9 +39,9 @@ func NewProfile(target_dir string) (Profile, error) { return Profile{}, fmt.Errorf("Could not create target %q:\n %w", target_dir, ErrTargetAlreadyExists) } - settings_file := filepath.Join(target_dir, "settings.yaml") sqlite_file := filepath.Join(target_dir, "twitter.db") profile_images_dir := filepath.Join(target_dir, "profile_images") + default_profile_image_file := filepath.Join(target_dir, "profile_images/default_profile.png") link_thumbnails_dir := filepath.Join(target_dir, "link_preview_images") images_dir := filepath.Join(target_dir, "images") videos_dir := filepath.Join(target_dir, "videos") @@ -62,24 +61,18 @@ func NewProfile(target_dir string) (Profile, error) { InitializeDatabaseVersion(db) db.Mapper = reflectx.NewMapperFunc("db", ToSnakeCase) - // Create `settings.yaml` - fmt.Printf("Creating............. %s\n", settings_file) - settings := Settings{} - data, err := yaml.Marshal(&settings) - if err != nil { - return Profile{}, fmt.Errorf("Error YAML-marshalling [empty!] settings file:\n %w", err) - } - err = os.WriteFile(settings_file, data, os.FileMode(0644)) - if err != nil { - return Profile{}, fmt.Errorf("Error creating settings file %q:\n %w", settings_file, err) - } - // Create `profile_images` fmt.Printf("Creating............. %s/\n", profile_images_dir) err = os.Mkdir(profile_images_dir, os.FileMode(0755)) if err != nil { return Profile{}, fmt.Errorf("Error creating %q:\n %w", profile_images_dir, err) } + // Put the default profile image in it + fmt.Printf("Creating............. %s/\n", default_profile_image_file) + err = os.WriteFile(default_profile_image_file, default_profile_image, os.FileMode(0644)) + if err != nil { + return Profile{}, fmt.Errorf("Error creating default profile image file %q:\n %w", default_profile_image, err) + } // Create `link_thumbnail_images` fmt.Printf("Creating............. %s/\n", link_thumbnails_dir) @@ -109,7 +102,7 @@ func NewProfile(target_dir string) (Profile, error) { return Profile{}, fmt.Errorf("Error creating %q:\n %w", video_thumbnails_dir, err) } - return Profile{target_dir, settings, db}, nil + return Profile{ProfileDir: target_dir, DB: db}, nil } // Loads the profile at the given location. Fails if the given directory is not a Profile. @@ -120,26 +113,9 @@ func NewProfile(target_dir string) (Profile, error) { // returns: // - the loaded Profile func LoadProfile(profile_dir string) (Profile, error) { - settings_file := filepath.Join(profile_dir, "settings.yaml") sqlite_file := filepath.Join(profile_dir, "twitter.db") - - for _, file := range []string{ - settings_file, - sqlite_file, - } { - if !file_exists(file) { - return Profile{}, fmt.Errorf("Invalid profile, could not find file: %s", file) - } - } - - settings_data, err := os.ReadFile(settings_file) - if err != nil { - return Profile{}, fmt.Errorf("Error reading %q:\n %w", settings_file, err) - } - settings := Settings{} - err = yaml.Unmarshal(settings_data, &settings) - if err != nil { - return Profile{}, fmt.Errorf("Error YAML-unmarshalling %q:\n %w", settings_file, err) + if !file_exists(sqlite_file) { + return Profile{}, fmt.Errorf("Invalid profile, could not find file: %s", sqlite_file) } db := sql.MustOpen("sqlite3", fmt.Sprintf("%s?_foreign_keys=on&_journal_mode=WAL", sqlite_file)) @@ -147,11 +123,9 @@ func LoadProfile(profile_dir string) (Profile, error) { ret := Profile{ ProfileDir: profile_dir, - Settings: settings, DB: db, } - err = ret.check_and_update_version() - + err := ret.check_and_update_version() return ret, err } diff --git a/pkg/persistence/profile_test.go b/pkg/persistence/profile_test.go index ef8ce31..9acb103 100644 --- a/pkg/persistence/profile_test.go +++ b/pkg/persistence/profile_test.go @@ -60,7 +60,7 @@ func TestNewProfile(t *testing.T) { // Check files were created contents, err := os.ReadDir(profile_path) require.NoError(err) - assert.Len(contents, 7) + assert.Len(contents, 6) expected_files := []struct { filename string @@ -69,7 +69,6 @@ func TestNewProfile(t *testing.T) { {"images", true}, {"link_preview_images", true}, {"profile_images", true}, - {"settings.yaml", false}, {"twitter.db", false}, {"video_thumbnails", true}, {"videos", true}, diff --git a/sample_data/init_data.sh b/sample_data/init_data.sh index a729ca9..3905159 100755 --- a/sample_data/init_data.sh +++ b/sample_data/init_data.sh @@ -9,14 +9,12 @@ if [[ -e "$THIS_DIR/profile" ]]; then fi mkdir $THIS_DIR/profile -touch $THIS_DIR/profile/settings.yaml -touch $THIS_DIR/profile/users.yaml - test -e $THIS_DIR/profile/twitter.db && rm $THIS_DIR/profile/twitter.db sqlite3 $THIS_DIR/profile/twitter.db < $THIS_DIR/seed_data.sql mkdir $THIS_DIR/profile/profile_images cp $THIS_DIR/kwamurai_* $THIS_DIR/profile/profile_images +cp $THIS_DIR/../pkg/persistence/default_profile.png $THIS_DIR/profile/profile_images mkdir $THIS_DIR/profile/images cp $THIS_DIR/EYG* $THIS_DIR/profile/images