1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
package Torello.Java.Build;

import Torello.Java.FileRW;
import Torello.Java.StorageWriter;
import Torello.Java.StringParse;
import Torello.Java.GSUTIL;
import Torello.Java.OSResponse;

import java.io.IOException;

/**
 * This is the sixth Build-Stage, and it is part of the synchronization of a project with Google
 * Cloud Platform Stroage Buckets.  This class relies heavily on the GCP Shell-Command
 * {@code 'gsutil'} and it's Java implementation - {@link GSUTIL Torello.Java.GSUTIL}.
 * 
 * <BR /><BR />This class' synchronization-efforts entail copying the local / File-System 
 * {@code '.tar'} and {@code '.jar'} files onto the (User-Specified) Google Cloud Server
 * Storage-Bucket.
 * 
 * <EMBED CLASS=external-html DATA-FILE-ID=STAGE_PRIVATE_NOTE>
 * <EMBED CLASS='external-html' DATA-FILE-ID=S06_SYNC_TAR_JAR>
 */
@Torello.JavaDoc.StaticFunctional
public class S06_SyncTarJar
{
    // Completely irrelevant, and the 'private' modifier keeps it off of JavaDoc
    private S06_SyncTarJar() { }

    public static void sync(final BuilderRecord brec) throws IOException
    {
        brec.timers.startStage06();
        Printing.startStep(6);

        /*
        final String CODE_DRIVE_BACKUP_FILE = (brec.BACKUP_TAR_FILE_GCS_DIR == null)

            ? null 
            :   brec.BACKUP_TAR_FILE_GCS_DIR +
                StringParse.ymDateStr('/', true) + '/' +
                StringParse.dateStr('-') + '-' + brec.TAR_FILE;
        */

        // final String CLOUD_JAR_DIR = brec.cli.GCS_DIR + "jar/";

        // true ==> send to System.out
        StorageWriter sw = new StorageWriter(true);


        // Uses Shell-Contructor:
        // (outputAppendable, commandStrAppendable, standardOutput, errorOutput)
        //
        // GSUTIL gsutil = new GSUTIL(sw, sw, null, null);

        brec.cloudSync.initStage(sw, sw);


        // These are three of the four ARCHIVE-FILES that have been created.
        // One of them is 'too-big' for GSUTIL to handle, and must be copied over separately, or
        // the whole program will freeze and hang for anywhere between 30 seconds and 10 minutes...
        // 
        // String[] cpArr = { brec.JAVADOC_TAR_FILE, brec.JAR_FILE };
        // OSResponse osr = gsutil.CP(cpArr, GCS_JAR_DIR);

        OSResponse osr = brec.cloudSync.copyJDTarAndJarToCloud();
        Util.HALT_ON_ERROR(osr);
        sw.println();

        // if (brec.RUN_MAKE_PUBLIC)
        if (brec.cloudSync.shouldRunMakePublic)
        {
            // osr = gsutil.MP
            //     (GCS_JAR_DIR + brec.JAR_FILE, GCS_JAR_DIR + brec.JAVADOC_TAR_FILE);

            osr = brec.cloudSync.makeJDTarAndJarPublic();
            Util.HALT_ON_ERROR(osr);
            sw.println();
        }


        // Drive backup page
        // if (CODE_DRIVE_BACKUP_FILE != null)

        if (brec.cloudSync.shouldSyncMainTarGzFile)
        {
            // osr = gsutil.CP(brec.TAR_FILE, CODE_DRIVE_BACKUP_FILE);
            osr = brec.cloudSync.backupMainTarGzFile();
            Util.HALT_ON_ERROR(osr);
            sw.println();
        }

        // Move Archive files to the local BASH/UNIX - ~/jar/ directory.
        if (brec.JAR_FILE_NAME != null)
        {
            sw.println(
                "Moving File [" + brec.JAR_FILE + "] to " +
                "[" + brec.JAR_FILE_NAME + "]\n"
            );

            FileRW.moveFile(brec.JAR_FILE, brec.JAR_FILE_NAME, false);
            sw.println();
        }


        // Get rid of these files.  These were saved into the local 'jar/' directory, now,
        // just get rid of them.  they are never used.

        sw.println(
            "Deleting File [" + brec.TAR_FILE  + "]\n" +
            "Deleting File [" + brec.JAVADOC_TAR_FILE  + "]\n"
        );

        FileRW.deleteFiles(brec.TAR_FILE, brec.JAVADOC_TAR_FILE);
        sw.println();

        brec.logs.write_S06_LOG(sw.getString());
        brec.cloudSync.endStage();
        brec.timers.endStage06();
    }
}