[Pharo] Personal fitness tracker web app.
Set 'mft' as default dispatcher.
Changed files
deploy
@@ -0,0 +1,104 @@
1
Added:
#!/usr/bin/perl
2
Added:
# -*- mode: cperl; -*-
3
Added:
4
Added:
use 5.38.2;
5
Added:
use strict;
6
Added:
use warnings;
7
Added:
8
Added:
use Getopt::Long;
9
Added:
use File::Copy;
10
Added:
use POSIX qw(strftime);
11
Added:
use Data::Dumper;
12
Added:
$Data::Dumper::Terse = 1;
13
Added:
14
Added:
=head1 NAME
15
Added:
16
Added:
deploy - deploy the MyFitnessTracker web app to my vps
17
Added:
18
Added:
=head1 SYNOPSIS
19
Added:
20
Added:
deploy [--help] SRC DEST
21
Added:
22
Added:
=head1 AUTHOR
23
Added:
24
Added:
Marius Peter <mft@marius-peter.com>
25
Added:
26
Added:
=head1 COPYRIGHT
27
Added:
28
Added:
Copyright 2024 Marius Peter <mft@marius-peter.com>
29
Added:
30
Added:
=cut
31
Added:
32
Added:
33
Added:
GetOptions(
34
Added:
'version=s' => \my $version,
35
Added:
clean => \my $clean,
36
Added:
all => \my $all,
37
Added:
test => \my $test
38
Added:
);
39
Added:
40
Added:
my $app_name = 'mft';
41
Added:
my $iso8601 = strftime '%Y-%m-%dT%H:%M:%SZ', localtime;
42
Added:
43
Added:
if ($clean) {
44
Added:
my @old_images = glob "/tmp/${app_name}-*"
45
Added:
or warn "No files can be deleted";
46
Added:
if ( @old_images and $all ) {
47
Added:
my $confirm =
48
Added:
answer "Delete the following files:\n" . Dumper @old_images;
49
Added:
if ( $confirm eq 'yes' ) {
50
Added:
unlink @old_images and print "All files deleted successfully.\n";
51
Added:
}
52
Added:
else { print "Files not deleted.\n" }
53
Added:
}
54
Added:
elsif (@old_images) {
55
Added:
foreach my $image (@old_images) {
56
Added:
my $confirm = answer "Delete the following file: $image";
57
Added:
if ( $confirm eq 'yes' ) {
58
Added:
unlink $image;
59
Added:
}
60
Added:
else { print "File not deleted.\n" }
61
Added:
}
62
Added:
}
63
Added:
goto SUCCESS;
64
Added:
}
65
Added:
66
Added:
unless ($version) {
67
Added:
warn "No deployment version specified";
68
Added:
$version = 0;
69
Added:
}
70
Added:
71
Added:
my $pharo_vm = '~/pharolauncher/pharo-vm/pharo';
72
Added:
my $development_image = $app_name . '.image';
73
Added:
my $deployment_image = '/tmp/' . $app_name . '-' . $iso8601 . '.image';
74
Added:
my $remote_server = 'mpeter@vps';
75
Added:
my $remote_image =
76
Added:
$remote_server . ':~/Pharo/' . $app_name . '-' . $version . '.image';
77
Added:
78
Added:
copy( $development_image, $deployment_image ) or die "Image copy failed: $!";
79
Added:
80
Added:
my $script = "MFTUtils createDeploymentImage: ${version}";
81
Added:
82
Added:
print "Building deployment image...\n";
83
Added:
system "$pharo_vm --headless $deployment_image eval $script";
84
Added:
die "Failed to build deployment image" if $?;
85
Added:
print "Deployment image built at ${deployment_image}.\n";
86
Added:
87
Added:
if ( answer("Deploy the image on $remote_server?") eq 'yes' ) {
88
Added:
print "Deploying image at $remote_image...\n";
89
Added:
system 'rsync', qw(
90
Added:
--verbose
91
Added:
--progress
92
Added:
--human-readable
93
Added:
--compress
94
Added:
), $deployment_image, $remote_image;
95
Added:
system 'ssh root@vps systemctl restart mft';
96
Added:
}
97
Added:
98
Added:
if ($test) {
99
Added:
system "$pharo_vm --headless $deployment_image --no-quit";
100
Added:
die "Failed to start Pharo deployment image for testing" if $?;
101
Added:
}
102
Added:
103
Added:
SUCCESS:
104
Added:
print "Successfully perfomed all action.\n"
src/MyFitnessTracker/MFTUtils.class.st
@@ -11,7 +11,6 @@
11
11
12
12
{ #category : 'utilities' }
13
13
MFTUtils class >> createDeploymentImage: aVersion [
14
Removed:
"TODO: simplify this whole process. Rsync already does a terrific job at compressing the image upon deployment."
15
14
16
15
| stdout |
17
16
version := aVersion.
@@ -29,6 +28,8 @@
29
28
WAAdmin disableDevelopmentTools.
30
29
stdout crShow: 'Initializing MFTRootComponent...'.
31
30
MFTRootComponent initialize.
31
Added:
stdout crShow: 'Setting default dispatcher to ''mft''...'.
32
Added:
WAAdmin defaultDispatcher defaultName: 'mft'.
32
33
stdout crShow: 'Cleaning up image for release...'.
33
34
ImageCleaner cleanUpForRelease.
34
35
stdout crShow: 'MFT deployment image created successfully.'.
@@ -38,6 +39,7 @@
38
39
stdout crShow: 'Saving and exiting from image.'.
39
40
stdout cr.
40
41
stdout close.
42
Added:
Smalltalk cleanUp.
41
43
SmalltalkImage current snapshot: true andQuit: true
42
44
]
43
45