Remove settings.yaml; add default_profile.png to profile initialization
This commit is contained in:
parent
4022717e96
commit
925f36c33a
1
go.mod
1
go.mod
@ -15,5 +15,4 @@ require (
|
|||||||
github.com/stretchr/testify v1.7.0
|
github.com/stretchr/testify v1.7.0
|
||||||
golang.org/x/net v0.9.0
|
golang.org/x/net v0.9.0
|
||||||
golang.org/x/term v0.7.0
|
golang.org/x/term v0.7.0
|
||||||
gopkg.in/yaml.v2 v2.4.0
|
|
||||||
)
|
)
|
||||||
|
3
go.sum
3
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 h1:yhCVgyC4o1eVCa2tZl7eS0r+SDo693bJlVdllGtEeKM=
|
||||||
gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
|
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.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.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 h1:dUUwHk2QECo/6vqA44rthZ8ie2QXMNeKRTHCNY2nXvo=
|
||||||
gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
|
gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
|
||||||
|
BIN
pkg/persistence/default_profile.png
Normal file
BIN
pkg/persistence/default_profile.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 3.4 KiB |
@ -9,7 +9,6 @@ import (
|
|||||||
sql "github.com/jmoiron/sqlx"
|
sql "github.com/jmoiron/sqlx"
|
||||||
"github.com/jmoiron/sqlx/reflectx"
|
"github.com/jmoiron/sqlx/reflectx"
|
||||||
_ "github.com/mattn/go-sqlite3"
|
_ "github.com/mattn/go-sqlite3"
|
||||||
"gopkg.in/yaml.v2"
|
|
||||||
|
|
||||||
"gitlab.com/offline-twitter/twitter_offline_engine/pkg/scraper"
|
"gitlab.com/offline-twitter/twitter_offline_engine/pkg/scraper"
|
||||||
)
|
)
|
||||||
@ -17,11 +16,11 @@ import (
|
|||||||
//go:embed schema.sql
|
//go:embed schema.sql
|
||||||
var sql_init string
|
var sql_init string
|
||||||
|
|
||||||
type Settings struct{}
|
//go:embed default_profile.png
|
||||||
|
var default_profile_image []byte
|
||||||
|
|
||||||
type Profile struct {
|
type Profile struct {
|
||||||
ProfileDir string
|
ProfileDir string
|
||||||
Settings Settings
|
|
||||||
DB *sql.DB
|
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)
|
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")
|
sqlite_file := filepath.Join(target_dir, "twitter.db")
|
||||||
profile_images_dir := filepath.Join(target_dir, "profile_images")
|
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")
|
link_thumbnails_dir := filepath.Join(target_dir, "link_preview_images")
|
||||||
images_dir := filepath.Join(target_dir, "images")
|
images_dir := filepath.Join(target_dir, "images")
|
||||||
videos_dir := filepath.Join(target_dir, "videos")
|
videos_dir := filepath.Join(target_dir, "videos")
|
||||||
@ -62,24 +61,18 @@ func NewProfile(target_dir string) (Profile, error) {
|
|||||||
InitializeDatabaseVersion(db)
|
InitializeDatabaseVersion(db)
|
||||||
db.Mapper = reflectx.NewMapperFunc("db", ToSnakeCase)
|
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`
|
// Create `profile_images`
|
||||||
fmt.Printf("Creating............. %s/\n", profile_images_dir)
|
fmt.Printf("Creating............. %s/\n", profile_images_dir)
|
||||||
err = os.Mkdir(profile_images_dir, os.FileMode(0755))
|
err = os.Mkdir(profile_images_dir, os.FileMode(0755))
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return Profile{}, fmt.Errorf("Error creating %q:\n %w", profile_images_dir, err)
|
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`
|
// Create `link_thumbnail_images`
|
||||||
fmt.Printf("Creating............. %s/\n", link_thumbnails_dir)
|
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{}, 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.
|
// 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:
|
// returns:
|
||||||
// - the loaded Profile
|
// - the loaded Profile
|
||||||
func LoadProfile(profile_dir string) (Profile, error) {
|
func LoadProfile(profile_dir string) (Profile, error) {
|
||||||
settings_file := filepath.Join(profile_dir, "settings.yaml")
|
|
||||||
sqlite_file := filepath.Join(profile_dir, "twitter.db")
|
sqlite_file := filepath.Join(profile_dir, "twitter.db")
|
||||||
|
if !file_exists(sqlite_file) {
|
||||||
for _, file := range []string{
|
return Profile{}, fmt.Errorf("Invalid profile, could not find file: %s", sqlite_file)
|
||||||
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)
|
|
||||||
}
|
}
|
||||||
|
|
||||||
db := sql.MustOpen("sqlite3", fmt.Sprintf("%s?_foreign_keys=on&_journal_mode=WAL", 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{
|
ret := Profile{
|
||||||
ProfileDir: profile_dir,
|
ProfileDir: profile_dir,
|
||||||
Settings: settings,
|
|
||||||
DB: db,
|
DB: db,
|
||||||
}
|
}
|
||||||
err = ret.check_and_update_version()
|
err := ret.check_and_update_version()
|
||||||
|
|
||||||
return ret, err
|
return ret, err
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -60,7 +60,7 @@ func TestNewProfile(t *testing.T) {
|
|||||||
// Check files were created
|
// Check files were created
|
||||||
contents, err := os.ReadDir(profile_path)
|
contents, err := os.ReadDir(profile_path)
|
||||||
require.NoError(err)
|
require.NoError(err)
|
||||||
assert.Len(contents, 7)
|
assert.Len(contents, 6)
|
||||||
|
|
||||||
expected_files := []struct {
|
expected_files := []struct {
|
||||||
filename string
|
filename string
|
||||||
@ -69,7 +69,6 @@ func TestNewProfile(t *testing.T) {
|
|||||||
{"images", true},
|
{"images", true},
|
||||||
{"link_preview_images", true},
|
{"link_preview_images", true},
|
||||||
{"profile_images", true},
|
{"profile_images", true},
|
||||||
{"settings.yaml", false},
|
|
||||||
{"twitter.db", false},
|
{"twitter.db", false},
|
||||||
{"video_thumbnails", true},
|
{"video_thumbnails", true},
|
||||||
{"videos", true},
|
{"videos", true},
|
||||||
|
@ -9,14 +9,12 @@ if [[ -e "$THIS_DIR/profile" ]]; then
|
|||||||
fi
|
fi
|
||||||
mkdir $THIS_DIR/profile
|
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
|
test -e $THIS_DIR/profile/twitter.db && rm $THIS_DIR/profile/twitter.db
|
||||||
sqlite3 $THIS_DIR/profile/twitter.db < $THIS_DIR/seed_data.sql
|
sqlite3 $THIS_DIR/profile/twitter.db < $THIS_DIR/seed_data.sql
|
||||||
|
|
||||||
mkdir $THIS_DIR/profile/profile_images
|
mkdir $THIS_DIR/profile/profile_images
|
||||||
cp $THIS_DIR/kwamurai_* $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
|
mkdir $THIS_DIR/profile/images
|
||||||
cp $THIS_DIR/EYG* $THIS_DIR/profile/images
|
cp $THIS_DIR/EYG* $THIS_DIR/profile/images
|
||||||
|
Loading…
x
Reference in New Issue
Block a user