Set 'mft' as default dispatcher.

Commit
a89ece628ee6e58e485e3c6b341d2a696a757db0
Author
Marius Peter <marius.peter@tutanota.com>
Author date
Committer
Marius Peter <marius.peter@tutanota.com>
Committer date
Changed files
deploy
index 00000000..c96674df 000000..100755
@@ -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
index a436bf8c..975594be 100644..100644
@@ -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