11SHELL: =/bin/bash --rcfile bash-init.sh
22
3- # dry-run mode: generate all files, but do not post them anywhere, and disable all emails to outside parties.
4- DRY: =yes
5- ifeq ($(DRY ) ,yes)
6- EMAIL_SEND:=echo -e "Would send mail: echo -e \"Subject: $${SUBJECT}\n\n$${MSG}\" | sendmail krivard@cs.cmu.edu"
7- SFTP_POST:=echo -e "Would run: sftp -b <(echo -e \"\$${BATCH}\") -P 2222 fb-automation@ftp.delphi.cmu.edu\n$${BATCH}"
8- DRY_MESSAGE:="[DRY-RUN] "
9- else
10- EMAIL_SEND:=echo -e "Subject: $${SUBJECT}\n\n$${MSG}" | sendmail krivard@cs.cmu.edu
11- SFTP_POST:=sftp -b <(echo -e "$${BATCH}") -P 2222 fb-automation@ftp.delphi.cmu.edu
12- endif
13-
143EPOCH: =2020-04-06
154TODAY: =$(shell date +"% Y-% m-% d")
165YESTERDAY: =$(shell date --date "$(TODAY ) -1 day" +"% Y-% m-% d")
176ONEWEEK: =$(shell date --date "$(TODAY ) -7 day" +"% Y-% m-% d")
187THREEWEEK: =$(shell date --date "$(TODAY ) -21 day" +"% Y-% m-% d")
198
20- MESSAGES: =$(TODAY ) .messages
9+ MESSAGES: ="messages/ $(TODAY ) .messages"
2110
2211PYTHON: =env/bin/python
2312QUALTRICS =$(shell $(PYTHON ) -m delphi_utils get input_dir)
@@ -27,6 +16,10 @@ INDIVIDUAL=$(shell $(PYTHON) -m delphi_utils get individual_dir)
2716ARCHIVE =$(shell $(PYTHON ) -m delphi_utils get archive_dir)
2817RECEIVING =$(shell $(PYTHON ) -m delphi_utils get export_dir)
2918FB_CC =$(shell $(PYTHON ) -m delphi_utils get qualtrics.notify-bad-weights)
19+ DELPHI_SURVEY_SFTP_PASSWORD =$(shell $(PYTHON ) -m delphi_utils get delphi_survey_sftp_password)
20+ DELPHI_SURVEY_SFTP_USER =$(shell $(PYTHON ) -m delphi_utils get delphi_survey_sftp_user)
21+ DELPHI_SURVEY_EMAIL_USER =$(shell $(PYTHON ) -m delphi_utils get delphi_survey_email_user)
22+ SFTP_OPTIONS =$(shell $(PYTHON ) -m delphi_utils get sftp_options)
3023
3124MAX_WEIGHTED =ls -1 $(WEIGHTS ) | grep dap | tail -1 | sed 's/_.*//;s/-//g;'
3225
@@ -35,16 +28,34 @@ CIDS_DEST:="fb-interchange/cmu_respondent_ids"
3528INDIVID_DEST: ="fb-public-results/"
3629RAW_DEST: ="raw"
3730
31+ # dry-run mode: generate all files, but do not post them anywhere, and disable all emails to outside parties.
32+ DRY: =yes
33+ ifeq ($(DRY ) ,yes)
34+ EMAIL_SEND:=echo -e "Would send mail: echo -e \"Subject: $${SUBJECT}\n\n$${MSG}\" | sendmail $(DELPHI_SURVEY_EMAIL_USER)"
35+ SFTP_POST:=echo -e "Would run: sshpass -p $(DELPHI_SURVEY_SFTP_PASSWORD) sftp $(SFTP_OPTIONS) -b <(echo -e \"\$${BATCH}\") -P 2222 $(DELPHI_SURVEY_SFTP_USER)\n$${BATCH}"
36+ DRY_MESSAGE:="[DRY-RUN] "
37+ else
38+ EMAIL_SEND:=echo -e "Subject: $${SUBJECT}\n\n$${MSG}" | sendmail $(DELPHI_SURVEY_EMAIL_USER)
39+ SFTP_POST:=sshpass -p $(DELPHI_SURVEY_SFTP_PASSWORD) sftp $(SFTP_OPTIONS) -b <(echo -e "$${BATCH}") -P 2222 $(DELPHI_SURVEY_SFTP_USER)
40+ endif
41+
3842default :
3943 @echo No default implemented yet
4044
45+ scratch :
46+ mkdir scratch
47+ rm -rf scratch/*
48+
4149tidy : receiving
42- rm -rf tidy
50+ rm -rf tidy/$(RECEIVING )
51+ rm -rf tidy/$(INDIVIDUAL )
52+ rm -f tidy/params.json
4353 mkdir -p tidy tidy/$(RECEIVING ) tidy/$(INDIVIDUAL )
4454 cp params.json tidy/
4555 mv $(RECEIVING ) /* .csv tidy/$(RECEIVING )
4656 mv $(INDIVIDUAL ) /* .csv* tidy/$(INDIVIDUAL )
47- tar -czf tidy-` date +" %Y-%m-%d-%H%M%S" ` .tgz tidy
57+ tar -czf scratch/tidy-` date +" %Y-%m-%d-%H%M%S" ` .tgz tidy
58+ mv scratch/* .tgz tidy/
4859
4960clean :
5061 rm -f $(RECEIVING ) /* .csv $(INDIVIDUAL ) /* .csv $(CIDS ) /* .csv
@@ -55,7 +66,8 @@ clean-archive:
5566install-python :
5667 python3.8 -m venv env
5768 source env/bin/activate && \
58- pip install -e ../_delphi_utils_python && \
69+ pip install wheel && \
70+ pip install delphi_utils && \
5971 pip install -e delphiFacebook/python
6072
6173install-R :dev
@@ -67,7 +79,6 @@ $(CIDS):
6779
6880init-qualtrics :
6981 grep ' "token": "..*"' params.json
70- git show -s --oneline HEAD >> $(MESSAGES )
7182
7283$(TODAY ) :
7384 [ -f $( QUALTRICS) ] || mkdir -p $(QUALTRICS )
@@ -99,13 +110,13 @@ $(WEIGHTS): $(TODAY)
99110 [ -f $( WEIGHTS) ] || mkdir -p $(WEIGHTS )
100111 cd " $( WEIGHTS) " ; \
101112 BATCH=" cd fb-interchange/cmu_respondent_weights\nls -1" ; \
102- NEW=` LC_ALL=C comm -23 <( sftp -b <( echo -e " $$ {BATCH}" ) -P 2222 fb-automation@ftp.delphi.cmu.edu | grep " ^202" | LC_ALL=C sort) <( ls -1 | LC_ALL=C sort) ` ; \
113+ NEW=` LC_ALL=C comm -23 <( sshpass -p $( DELPHI_SURVEY_SFTP_PASSWORD ) sftp $( SFTP_OPTIONS ) -b <( echo -e " $$ {BATCH}" ) -P 2222 $( DELPHI_SURVEY_SFTP_USER ) | grep " ^202" | LC_ALL=C sort) <( ls -1 | LC_ALL=C sort) ` ; \
103114 echo " New weights files:" ; \
104115 echo $$ {NEW}; \
105116 for f in $$ {NEW}; do \
106117 BATCH=" $$ {BATCH}\nget $$ f" ; \
107118 done ; \
108- sftp -b <( echo -e " $$ {BATCH}" ) -P 2222 fb-automation@ftp.delphi.cmu.edu || exit 90; \
119+ sshpass -p $( DELPHI_SURVEY_SFTP_PASSWORD ) sftp $( SFTP_OPTIONS ) -b <( echo -e " $$ {BATCH}" ) -P 2222 $( DELPHI_SURVEY_SFTP_USER ) || exit 90; \
109120 cd -; \
110121 MAX_WEIGHTED=` $( MAX_WEIGHTED) ` ; \
111122 EXPECTED_MAX_WEIGHTED=` date --date=' $(TODAY) -3 day' +' %Y%m%d' ` ; \
@@ -129,11 +140,12 @@ run-R: $(CIDS)
129140 grep " scheduled core" tmp ; \
130141 [ " $$ ?" -eq 1 ]
131142
132- pipeline : init-qualtrics params.json $(WEIGHTS ) run-R post-cids post-individual post-done tidy
143+ pipeline : scratch init-qualtrics params.json $(WEIGHTS ) run-R post-cids post-individual post-done tidy
133144 grep $(TODAY ) params.json
134145 [ -f $( YESTERDAY) ] && rm $(YESTERDAY ) || true
135146 touch $@
136147 echo " SUCCESS: $( DRY_MESSAGE) pipeline complete" >> $(MESSAGES )
148+ chmod o+w $(MESSAGES )
137149
138150coverage :
139151 Rscript -e ' covr::package_coverage("delphiFacebook")'
0 commit comments