1
1
SHELL: =/bin/bash --rcfile bash-init.sh
2
2
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
[email protected] "
7
- SFTP_POST:=echo -e "Would run: sftp -b <(echo -e \"\$${BATCH}\") -P 2222
[email protected] \n$${BATCH}"
8
- DRY_MESSAGE:="[DRY-RUN] "
9
- else
10
- EMAIL_SEND:=echo -e "Subject: $${SUBJECT}\n\n$${MSG}" | sendmail
[email protected]
11
- SFTP_POST:=sftp -b <(echo -e "$${BATCH}") -P 2222
[email protected]
12
- endif
13
-
14
3
EPOCH: =2020-04-06
15
4
TODAY: =$(shell date +"% Y-% m-% d")
16
5
YESTERDAY: =$(shell date --date "$(TODAY ) -1 day" +"% Y-% m-% d")
17
6
ONEWEEK: =$(shell date --date "$(TODAY ) -7 day" +"% Y-% m-% d")
18
7
THREEWEEK: =$(shell date --date "$(TODAY ) -21 day" +"% Y-% m-% d")
19
8
20
- MESSAGES: =$(TODAY ) .messages
9
+ MESSAGES: ="messages/ $(TODAY ) .messages"
21
10
22
11
PYTHON: =env/bin/python
23
12
QUALTRICS =$(shell $(PYTHON ) -m delphi_utils get input_dir)
@@ -27,6 +16,10 @@ INDIVIDUAL=$(shell $(PYTHON) -m delphi_utils get individual_dir)
27
16
ARCHIVE =$(shell $(PYTHON ) -m delphi_utils get archive_dir)
28
17
RECEIVING =$(shell $(PYTHON ) -m delphi_utils get export_dir)
29
18
FB_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)
30
23
31
24
MAX_WEIGHTED =ls -1 $(WEIGHTS ) | grep dap | tail -1 | sed 's/_.*//;s/-//g;'
32
25
@@ -35,16 +28,34 @@ CIDS_DEST:="fb-interchange/cmu_respondent_ids"
35
28
INDIVID_DEST: ="fb-public-results/"
36
29
RAW_DEST: ="raw"
37
30
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
+
38
42
default :
39
43
@echo No default implemented yet
40
44
45
+ scratch :
46
+ mkdir scratch
47
+ rm -rf scratch/*
48
+
41
49
tidy : receiving
42
- rm -rf tidy
50
+ rm -rf tidy/$(RECEIVING )
51
+ rm -rf tidy/$(INDIVIDUAL )
52
+ rm -f tidy/params.json
43
53
mkdir -p tidy tidy/$(RECEIVING ) tidy/$(INDIVIDUAL )
44
54
cp params.json tidy/
45
55
mv $(RECEIVING ) /* .csv tidy/$(RECEIVING )
46
56
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/
48
59
49
60
clean :
50
61
rm -f $(RECEIVING ) /* .csv $(INDIVIDUAL ) /* .csv $(CIDS ) /* .csv
@@ -55,7 +66,8 @@ clean-archive:
55
66
install-python :
56
67
python3.8 -m venv env
57
68
source env/bin/activate && \
58
- pip install -e ../_delphi_utils_python && \
69
+ pip install wheel && \
70
+ pip install delphi_utils && \
59
71
pip install -e delphiFacebook/python
60
72
61
73
install-R :dev
@@ -67,7 +79,6 @@ $(CIDS):
67
79
68
80
init-qualtrics :
69
81
grep ' "token": "..*"' params.json
70
- git show -s --oneline HEAD >> $(MESSAGES )
71
82
72
83
$(TODAY ) :
73
84
[ -f $( QUALTRICS) ] || mkdir -p $(QUALTRICS )
@@ -99,13 +110,13 @@ $(WEIGHTS): $(TODAY)
99
110
[ -f $( WEIGHTS) ] || mkdir -p $(WEIGHTS )
100
111
cd " $( WEIGHTS) " ; \
101
112
BATCH=" cd fb-interchange/cmu_respondent_weights\nls -1" ; \
102
- NEW=
` LC_ALL=C comm -23 <( sftp -b <( echo -e " $$ {BATCH}" ) -P 2222 [email protected] | 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) ` ; \
103
114
echo " New weights files:" ; \
104
115
echo $$ {NEW}; \
105
116
for f in $$ {NEW}; do \
106
117
BATCH=" $$ {BATCH}\nget $$ f" ; \
107
118
done ; \
108
- sftp -b
<( echo -e " $$ {BATCH}" ) -P 2222
[email protected] || exit 90
; \
119
+ sshpass -p $( DELPHI_SURVEY_SFTP_PASSWORD ) sftp $( SFTP_OPTIONS ) -b <( echo -e " $$ {BATCH}" ) -P 2222 $( DELPHI_SURVEY_SFTP_USER ) || exit 90; \
109
120
cd -; \
110
121
MAX_WEIGHTED=` $( MAX_WEIGHTED) ` ; \
111
122
EXPECTED_MAX_WEIGHTED=` date --date=' $(TODAY) -3 day' +' %Y%m%d' ` ; \
@@ -129,11 +140,12 @@ run-R: $(CIDS)
129
140
grep " scheduled core" tmp ; \
130
141
[ " $$ ?" -eq 1 ]
131
142
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
133
144
grep $(TODAY ) params.json
134
145
[ -f $( YESTERDAY) ] && rm $(YESTERDAY ) || true
135
146
touch $@
136
147
echo " SUCCESS: $( DRY_MESSAGE) pipeline complete" >> $(MESSAGES )
148
+ chmod o+w $(MESSAGES )
137
149
138
150
coverage :
139
151
Rscript -e ' covr::package_coverage("delphiFacebook")'
0 commit comments