-
Notifications
You must be signed in to change notification settings - Fork 40
/
githubfiles.ado
59 lines (49 loc) · 1.29 KB
/
githubfiles.ado
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
*cap prog drop githubfiles
prog githubfiles
syntax [using/]
preserve
clear
tempfile githubfiles
qui generate str20 address = ""
qui generate str20 packagename = ""
qui generate str20 file = ""
qui save "githubfiles.dta", replace
quietly use "`using'", clear
tempfile confirm
local N : di _N
forval i = 1/`N' {
tempfile api
tempname hitch
qui local link : display "https://raw.githubusercontent.com/" address[`i'] "/master/" path[`i']
capture quietly copy "`link'" `api', replace
if _rc == 0 {
display as txt "`i'"
local address = address[`i']
local packagename = packagename[`i']
file open `hitch' using "`api'", read
file read `hitch' line
while r(eof) == 0 {
if substr(trim(`"`macval(line)'"'),1,2) == "F " | ///
substr(trim(`"`macval(line)'"'),1,2) == "f " {
preserve
use githubfiles.dta, clear
local NEXT : di _N + 1
qui set obs `NEXT'
qui replace address = "`address'" in `NEXT'
qui replace packagename = "`packagename'" in `NEXT'
qui replace file = substr(trim(`"`macval(line)'"'),3,.) in `NEXT'
qui save "githubfiles.dta", replace
restore
}
file read `hitch' line
}
file close `hitch'
capture rm "`api'"
}
else {
di as err "`link'"
}
sleep 250
}
restore
end