Skip to content

Commit 9d9edcb

Browse files
feat: move platform_types and species to data, symlink data folder, move r/data to r/output, bump v1.3.6
- public/data now symlinked to R/output/www - app fetches platform types and species from public/data
1 parent 6428fda commit 9d9edcb

15 files changed

Lines changed: 99 additions & 1839 deletions

File tree

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "pacm",
3-
"version": "1.3.5",
3+
"version": "1.3.6",
44
"private": true,
55
"scripts": {
66
"dev": "vite",

public/data

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
../r/output/www

r/.gitignore

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ data-raw/**/*.csv
1515
data-raw/**/*.xlsx
1616
data-raw/**/*.xls
1717
data-raw/**/*.gpx
18-
data/
18+
output/
1919
*.rds
2020
*.zip
2121
*.tar.gz

r/R/export.R

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -9,9 +9,10 @@
99
# sites/citations carry none - they are 1:1 derivable (site_id -> deployments,
1010
# code -> analyses).
1111
#
12-
# Output goes to data/export/, a SIBLING of data/pacm/. scripts/copy-data.sh and
13-
# scripts/deploy-data.sh act on data/pacm/*, so these exports are never published
14-
# to the app or the GCS tarball.
12+
# Output goes to output/export/, a SIBLING of output/www/. The app (via the
13+
# ../public/data symlink to output/www) and scripts/deploy-data.sh act on
14+
# output/www/* only, so these exports are never published to the app or the
15+
# GCS tarball.
1516

1617
# write a data frame to <dir>/<filename> using the pipeline's CSV conventions
1718
# (blank for NA), creating the directory on first use. returns the path, so the
@@ -133,7 +134,7 @@ export_citations_table <- function (citations) {
133134
}
134135

135136
targets_export <- list(
136-
tar_target(export_dir, "data/export"),
137+
tar_target(export_dir, "output/export"),
137138

138139
tar_target(
139140
export_deployments_file,

r/R/pacm.R

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -104,7 +104,7 @@ create_theme <- function (data, species) {
104104
}
105105

106106
targets_pacm <- list(
107-
tar_target(pacm_dir, "data/pacm"),
107+
tar_target(pacm_dir, "output/www"),
108108

109109
tar_target(pacm_names, {
110110
list(

r/README.md

Lines changed: 27 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -40,21 +40,24 @@ r/
4040
├── data-raw/
4141
│ ├── pars/ # PARS submissions + manifest + reference-code snapshot/supplement
4242
│ └── pars/_rejected/ # excluded historical submissions (not loaded)
43-
├── data/pacm/ # generated theme files (published output)
43+
├── output/
44+
│ ├── www/ # generated theme files (published output; ../public/data symlinks here)
45+
│ └── export/ # flat CSV exports (never published)
4446
└── tests/testthat/ # unit + characterization tests
4547
```
4648

4749
## Building
4850

4951
```r
5052
# in R, from r/
51-
targets::tar_make() # full build; writes data/pacm/<theme>/*.json
53+
targets::tar_make() # full build; writes output/www/<theme>/*.json
5254
targets::tar_outdated() # what would rebuild
5355
```
5456

55-
```sh
56-
scripts/copy-data.sh # publish data/pacm/* to ../public/data/ and enum JSONs to ../src/lib/
57-
```
57+
There is no separate publish step: `../public/data` is a symlink to
58+
`output/www`, so the app serves `tar_make()` output directly (the app fetches
59+
everything it needs from there at runtime, including `species.json` and
60+
`platform_types.json`).
5861

5962
Makara connection details are read from `.env` (`MAKARA_*`). The PARS path needs
6063
**no database** — its reference vocabulary is a vendored snapshot
@@ -74,12 +77,13 @@ dataset** (`pacm_data`) as flat CSVs — one per table — for downstream analys
7477

7578
```r
7679
# in R, from r/
77-
tar_make(export) # builds all six CSVs into data/export/
80+
tar_make(export) # builds all six CSVs into output/export/
7881
```
7982

80-
Output goes to `data/export/`, a **sibling** of `data/pacm/`. `copy-data.sh` and
81-
`deploy-data.sh` act on `data/pacm/*`, so these exports are **never** published to
82-
the app or the GCS tarball. Individual tables build via their file targets
83+
Output goes to `output/export/`, a **sibling** of `output/www/`. `deploy-data.sh`
84+
and the app (which serves `output/www` via the `../public/data` symlink) act on
85+
`output/www/*` only, so these exports are **never** published to the app or the
86+
GCS tarball. Individual tables build via their file targets
8387
(`export_deployments_file`, `export_analyses_file`, …).
8488

8589
| File | Grain | `submission_id`? |
@@ -100,7 +104,7 @@ deployments/analyses), so they carry no `submission_id` — recover it by joinin
100104

101105
Because `submission_id` reaches the app files only through frames the theme
102106
writers build with explicit column lists (which omit it), the published
103-
`data/pacm/**` output is unchanged by these exports — see the export functions in
107+
`output/www/**` output is unchanged by these exports — see the export functions in
104108
[`R/export.R`](R/export.R).
105109

106110
---
@@ -125,9 +129,9 @@ takes four steps and **no code**:
125129
# 3. load it and confirm it validates clean (in R, from r/)
126130
make_pars("<submission_id>")
127131
tar_read(pars_errors) # must be 0 rows
128-
# 4. rebuild + publish
129-
tar_make() # regenerates data/pacm/<theme>/*.json
130-
# then, in shell: scripts/copy-data.sh
132+
# 4. rebuild
133+
tar_make() # regenerates output/www/<theme>/*.json
134+
# (../public/data symlinks to output/www, so the app picks this up directly)
131135
```
132136

133137
If validation reports errors that are genuine data problems in the submission,
@@ -326,20 +330,19 @@ Retire a supplement code once it is adopted upstream.
326330
#### 6. Rebuild and publish
327331

328332
```r
329-
tar_make() # rebuilds pacm_data and the theme files under data/pacm/
333+
tar_make() # rebuilds pacm_data and the theme files under output/www/
330334
```
331335

332336
`tar_make()` regenerates
333-
`data/pacm/<theme>/{sites,deployments,detections,tracks}.json` via the
334-
`pacm_themes_files` target. To push them to the app:
335-
336-
```sh
337-
scripts/copy-data.sh # copies data/pacm/* -> ../public/data/, and the two enum JSONs -> ../src/lib/
338-
```
337+
`output/www/<theme>/{sites,deployments,detections,tracks}.json` via the
338+
`pacm_themes_files` target. `../public/data` is a symlink to `output/www`, so
339+
the app serves the rebuilt files directly — no publish step.
339340

340-
Then verify in the running app. New PARS reference values (species, platform
341-
types, and any new supplement codes) may also need syncing into the web-app enums
342-
— see `../src/lib/constants.js` and the `../scripts/check-codes.mjs` assertion.
341+
Then verify in the running app. The app fetches `species.json` and
342+
`platform_types.json` from the data directory at startup, so new species and
343+
platform-type labels travel with the data automatically. A new *theme* still
344+
needs a menu entry in `../src/lib/constants.js` — the
345+
`../scripts/check-codes.mjs` assertion checks both.
343346

344347
### The `tar_cue(mode = "never")` pattern
345348

@@ -379,7 +382,7 @@ why editing `pars-load.R` does not silently re-parse every historical submission
379382
| Inspect reference-code drift (needs DB) | `tar_read(pars_codes_drift)` |
380383
| Regenerate the vendored snapshot (needs DB) | `refresh_reference_code_snapshot()` |
381384
| Full rebuild + write theme files | `tar_make()` |
382-
| Publish to the app (shell) | `scripts/copy-data.sh` |
385+
| Publish to the app | nothing — `../public/data` symlinks to `output/www` |
383386

384387
### Current submissions
385388

r/_targets/meta/meta

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,6 @@ gis_wind|stem|128be8b51a05ba61|e3192c2f22c463b6|f544fc8983e1307e|-615101982||t20
77
data_dir|stem|f755acdd76cea1b4|6b3c32e31346b98c|2c530c1562a7fbd1|-145075625||t20495.9882855834s|s63b|63|rds|local|vector|||0.606||
88
gis_wind_lease_file|stem|3cf5eedcc304b7bc|05d671e0c6f88ec5|03f402181599293c|-377461358|./data-raw//gis/wind/Wind_Lease_Boundaries_March_2022.shp|t19079.8584722222s|s41084b|41084|file|local|vector|||0||
99
gis_wind_plan_file|stem|e3725be63f3e47a5|9ff37e6617607f13|03f402181599293c|-1476574247|./data-raw//gis/wind/Wind_Planning_Area_Boundaries_March25_2022.shp|t19079.8584490741s|s448096b|448096|file|local|vector|||0||
10-
pacm_dir|stem|8a83d558be4122ff|c9bbe323d186e9bd|2c530c1562a7fbd1|1991633686||t20495.9967333525s|s62b|62|rds|local|vector|||0.593||
1110
gis_wind_geojson|stem|5091194216dc758b|7658cbc0907dbb5b|9e40d75ff7e4aaeb|-12077689|../public/gis/wind-energy-areas.json|t20496.0525433768s|s128398b|128398|file|local|vector|||0.017||
1211
makara_exclude_organizations|stem|7d8c770934afc5a9|9b4703e3d146588a|2c530c1562a7fbd1|1823095686||t20528.6961813553s|s79b|79|rds|local|vector|||0.484||
1312
makara_db|stem|c1984630ac3d7e42|b177069130e41c36|0a987985c4ea09d3|-2034120419||t20651.8439760942s|s14860367b|14860367|rds|local|vector|||25.738||
@@ -89,7 +88,6 @@ pars_errors|stem|feb8059021ef3074|1868d2da413b4a1c|bb84b0a6c8868e8b|-640481550||
8988
pars_analyses|stem|219bb1cfa6987b7e|9f24814c8ef4da69|d3a2214be5f3ee9f|1837685000||t20657.5531388102s|s370436b|370436|rds|local|vector|||80.05||
9089
pars_citations_pacm|stem|d58b35a988a63a70|fe22fd434e7eda89|57562139f5127e1d|1086077561||t20657.5537612645s|s356b|356|rds|local|vector|||0.008||
9190
makara_citations_pacm|stem|3096149f5f7e9fc5|3c341052a897ee33|5fee611821b4e677|-1285629772||t20657.7531801197s|s697b|697|rds|local|vector|||0.006||
92-
export_dir|stem|b01df71859b97c23|9e6cf9294018e7dc|2c530c1562a7fbd1|1958686063||t20657.7730781223s|s64b|64|rds|local|vector|||0.335||
9391
pacm_names|stem|64115a0b9d9f107e|2ca388a572f667cb|2c530c1562a7fbd1|-1408410188||t20657.8071702847s|s504b|504|rds|local|vector|||0.629||
9492
pars_tracks|stem|ffa8ceaadef1ddc7|61c0789fded3bec5|c2e05e1171137c1b|-1692279910||t20657.8071758186s|s218737b|218737|rds|local|vector|||0.449||
9593
pars_tracks_pacm|stem|7d610fe90cb173b6|9faedb3d39779d9a|06f79b362e053b69|1304321791||t20657.8071764544s|s217782b|217782|rds|local|vector|||0.002||
@@ -107,19 +105,14 @@ makara_pacm|stem|d5c501bd7bcb37b1|e2bb381d3d566ea8|57e777527252f741|-771249215||
107105
pacm_data_raw|stem|b8f61eb844554378|bfdb04144ca6e865|1c5a7c23e0291942|317370686||t20657.8073700385s|s10294882b|10294882|rds|local|vector|||0.01||
108106
pacm_exclude|stem|3ca966e4970d6c16|4da92f993db0f58c|96228831b798348e|-1527439320||t20657.8073738158s|s270b|270|rds|local|vector|||0.006||
109107
pacm_data|stem|871761ca57270d8c|defe6f26c64c0033|5e74daaf4e39253b|2058829249||t20657.807734595s|s6947590b|6947590|rds|local|vector|||30.03||
110-
export_citations_file|stem|5dd65a3c10485d55|a9dfa0525c18f19e|bf8ec797b198aa89|1782747769|data/export/citations.csv|t20657.8077400292s|s1333b|1333|file|local|vector|||0.049||
111-
export_analyses_file|stem|ff442993256947a4|a7ebf966abb14e20|a4b292fc4d051c12|1462024440|data/export/analyses.csv|t20657.8077403741s|s3522659b|3522659|file|local|vector|||0.079||
112-
export_deployments_file|stem|2c04a83376f11bae|eb61daf767675c88|7131f01cc913d2d4|297047246|data/export/deployments.csv|t20657.8077449751s|s1004568b|1004568|file|local|vector|||0.039||
113108
pacm_ref|stem|8a2a98a15e34c97c|8405bd16f0bf84d8|16d708e76918c8b9|-1695610880||t20657.8077468137s|s8253b|8253|rds|local|vector|||0.001||
114109
pacm_deployments|stem|d6f760bb2110c15e|6450a406889eff28|3055c94ef631a8c8|543366116||t20657.8077474105s|s2772785b|2772785|rds|local|vector|||0.155||
115110
pacm_analyses_no_theme|stem|6933e9d90366c967|d2a10ce969502fe4|dd56d41205b822ec|1668423467||t20657.8077547887s|s718b|718|rds|local|vector|||0.007||
116-
export_sites_file|stem|376a70d18280b12f|3e470f2024c1a9b6|c7569d511c549140|-1164200004|data/export/sites.csv|t20657.807757697s|s44854b|44854|file|local|vector|||0.049||
117111
pacm_deployments_map|stem|d57a23e07175aca9|e8163a2dcd2f554f|3055c94ef631a8c8|-1250941415||t20657.8077603016s|s212275b|212275|rds|local|vector|||1.917||
118-
export_detections_file|stem|b9762973b4fc44f5|f6e133cd9eaacdbc|126744f2b7815580|-1251242918|data/export/detections.csv|t20657.8077599954s|s113561209b|113561209|file|local|vector|||1.769||
119112
pacm_sites_map|stem|af66d79873521587|d4434d57acc34a67|3055c94ef631a8c8|260666098||t20657.8077608182s|s51157b|51157|rds|local|vector|||1.874||
120113
pacm_tracks_map|stem|7653a939f2970829|890eaea79b6b2b58|3055c94ef631a8c8|1044126119||t20657.807763634s|s3915822b|3915822|rds|local|vector|||1.912||
121114
pacm_themes|stem|33293d1e2cf1ccaf|8ed9f6ae2aaf4e03|feb75d46d67e4b2c|730575946||t20657.807791808s|s28401781b|28401781|rds|local|vector|||0.457||
122-
pacm_themes_files|stem|6ac84b43ca9ade5b|0c92f101f09e1c0b|70111b981b84c810|490252437|data/pacm/beaked/sites.json*data/pacm/beaked/deployments.json*data/pacm/beaked/tracks.json*data/pacm/beaked/detections.csv*data/pacm/blue/sites.json*data/pacm/blue/deployments.json*data/pacm/blue/tracks.json*data/pacm/blue/detections.csv*data/pacm/dolphin/sites.json*data/pacm/dolphin/deployments.json*data/pacm/dolphin/tracks.json*data/pacm/dolphin/detections.csv*data/pacm/fin/sites.json*data/pacm/fin/deployments.json*data/pacm/fin/tracks.json*data/pacm/fin/detections.csv*data/pacm/gray/sites.json*data/pacm/gray/deployments.json*data/pacm/gray/tracks.json*data/pacm/gray/detections.csv*data/pacm/humpback/sites.json*data/pacm/humpback/deployments.json*data/pacm/humpback/tracks.json*data/pacm/humpback/detections.csv*data/pacm/kogia/sites.json*data/pacm/kogia/deployments.json*data/pacm/kogia/tracks.json*data/pacm/kogia/detections.csv*data/pacm/minke/sites.json*data/pacm/minke/deployments.json*data/pacm/minke/tracks.json*data/pacm/minke/detections.csv*data/pacm/narw/sites.json*data/pacm/narw/deployments.json*data/pacm/narw/tracks.json*data/pacm/narw/detections.csv*data/pacm/nbhf/sites.json*data/pacm/nbhf/deployments.json*data/pacm/nbhf/tracks.json*data/pacm/nbhf/detections.csv*data/pacm/pilot/sites.json*data/pacm/pilot/deployments.json*data/pacm/pilot/tracks.json*data/pacm/pilot/detections.csv*data/pacm/pwdo/sites.json*data/pacm/pwdo/deployments.json*data/pacm/pwdo/tracks.json*data/pacm/pwdo/detections.csv*data/pacm/risso/sites.json*data/pacm/risso/deployments.json*data/pacm/risso/tracks.json*data/pacm/risso/detections.csv*data/pacm/sei/sites.json*data/pacm/sei/deployments.json*data/pacm/sei/tracks.json*data/pacm/sei/detections.csv*data/pacm/sperm/sites.json*data/pacm/sperm/deployments.json*data/pacm/sperm/tracks.json*data/pacm/sperm/detections.csv*data/pacm/hapo/sites.json*data/pacm/hapo/deployments.json*data/pacm/hapo/tracks.json*data/pacm/hapo/detections.csv*data/pacm/unid/sites.json*data/pacm/unid/deployments.json*data/pacm/unid/tracks.json*data/pacm/unid/detections.csv*data/pacm/bodo/sites.json*data/pacm/bodo/deployments.json*data/pacm/bodo/tracks.json*data/pacm/bodo/detections.csv*data/pacm/brwh/sites.json*data/pacm/brwh/deployments.json*data/pacm/brwh/tracks.json*data/pacm/brwh/detections.csv*data/pacm/kiwh/sites.json*data/pacm/kiwh/deployments.json*data/pacm/kiwh/tracks.json*data/pacm/kiwh/detections.csv*data/pacm/deployments/sites.json*data/pacm/deployments/deployments.json*data/pacm/deployments/tracks.json*data/pacm/deployments/detections.csv|t20657.8082389054s|s242217169b|242217169|file|local|vector|||37.674||
115+
export|stem|b761fb6445c9f34f|1ea8b86e6c94b5f0|d5c755be4ad58787|-2123215358||t20657.814635552s|s134b|134|rds|local|vector|||0||
123116
format_number|function|f813cfef12221922
124117
PARS_PROFILES|object|3da8e5d8ed7f0778
125118
blank_to_na|function|34c4cd5639d150b1
@@ -235,5 +228,12 @@ compare_pacm_snapshot|function|721568135fccd79c
235228
load_pars_file|function|cc8872c9e1c6eb15
236229
compare_to_baseline|function|4f6ef2d9019aaf72
237230
load_pars|function|914b23e2e96b98ed
238-
export_tracks_file|stem|ef686de7ad276ba9|cbc36733f60bf7a9|035d876a013ef84e|-1521520435|data/export/tracks.csv|t20657.8146350846s|s34106048b|34106048|file|local|vector|||0.4||
239-
export|stem|b761fb6445c9f34f|1ea8b86e6c94b5f0|d5c755be4ad58787|-2123215358||t20657.814635552s|s134b|134|rds|local|vector|||0||
231+
export_dir|stem|7a24f490bbb8194c|0022b903e28eeccb|2c530c1562a7fbd1|1958686063||t20657.8480972889s|s66b|66|rds|local|vector|||0.327||
232+
pacm_dir|stem|effa73fabc63e7f4|83fee92d8f20121a|2c530c1562a7fbd1|1991633686||t20657.848100166s|s63b|63|rds|local|vector|||0.575||
233+
export_citations_file|stem|5dd65a3c10485d55|a9dfa0525c18f19e|562c788f4b6d0f7c|1782747769|output/export/citations.csv|t20657.848104601s|s1333b|1333|file|local|vector|||0.04||
234+
export_analyses_file|stem|ff442993256947a4|a7ebf966abb14e20|1b61779c9dc64735|1462024440|output/export/analyses.csv|t20657.8481051587s|s3522659b|3522659|file|local|vector|||0.067||
235+
export_sites_file|stem|376a70d18280b12f|3e470f2024c1a9b6|c61ba667da4a4a63|-1164200004|output/export/sites.csv|t20657.8481157795s|s44854b|44854|file|local|vector|||0.048||
236+
export_deployments_file|stem|2c04a83376f11bae|eb61daf767675c88|566b693ceed90773|297047246|output/export/deployments.csv|t20657.848115841s|s1004568b|1004568|file|local|vector|||0.067||
237+
export_tracks_file|stem|ef686de7ad276ba9|cbc36733f60bf7a9|b2f694a91941d9f3|-1521520435|output/export/tracks.csv|t20657.848120408s|s34106048b|34106048|file|local|vector|||0.456||
238+
export_detections_file|stem|b9762973b4fc44f5|f6e133cd9eaacdbc|56f8b8a680dfbfcb|-1251242918|output/export/detections.csv|t20657.8481329964s|s113561209b|113561209|file|local|vector|||1.547||
239+
pacm_themes_files|stem|6ac84b43ca9ade5b|0c92f101f09e1c0b|101ea89eb8e53102|490252437|output/www/beaked/sites.json*output/www/beaked/deployments.json*output/www/beaked/tracks.json*output/www/beaked/detections.csv*output/www/blue/sites.json*output/www/blue/deployments.json*output/www/blue/tracks.json*output/www/blue/detections.csv*output/www/dolphin/sites.json*output/www/dolphin/deployments.json*output/www/dolphin/tracks.json*output/www/dolphin/detections.csv*output/www/fin/sites.json*output/www/fin/deployments.json*output/www/fin/tracks.json*output/www/fin/detections.csv*output/www/gray/sites.json*output/www/gray/deployments.json*output/www/gray/tracks.json*output/www/gray/detections.csv*output/www/humpback/sites.json*output/www/humpback/deployments.json*output/www/humpback/tracks.json*output/www/humpback/detections.csv*output/www/kogia/sites.json*output/www/kogia/deployments.json*output/www/kogia/tracks.json*output/www/kogia/detections.csv*output/www/minke/sites.json*output/www/minke/deployments.json*output/www/minke/tracks.json*output/www/minke/detections.csv*output/www/narw/sites.json*output/www/narw/deployments.json*output/www/narw/tracks.json*output/www/narw/detections.csv*output/www/nbhf/sites.json*output/www/nbhf/deployments.json*output/www/nbhf/tracks.json*output/www/nbhf/detections.csv*output/www/pilot/sites.json*output/www/pilot/deployments.json*output/www/pilot/tracks.json*output/www/pilot/detections.csv*output/www/pwdo/sites.json*output/www/pwdo/deployments.json*output/www/pwdo/tracks.json*output/www/pwdo/detections.csv*output/www/risso/sites.json*output/www/risso/deployments.json*output/www/risso/tracks.json*output/www/risso/detections.csv*output/www/sei/sites.json*output/www/sei/deployments.json*output/www/sei/tracks.json*output/www/sei/detections.csv*output/www/sperm/sites.json*output/www/sperm/deployments.json*output/www/sperm/tracks.json*output/www/sperm/detections.csv*output/www/hapo/sites.json*output/www/hapo/deployments.json*output/www/hapo/tracks.json*output/www/hapo/detections.csv*output/www/unid/sites.json*output/www/unid/deployments.json*output/www/unid/tracks.json*output/www/unid/detections.csv*output/www/bodo/sites.json*output/www/bodo/deployments.json*output/www/bodo/tracks.json*output/www/bodo/detections.csv*output/www/brwh/sites.json*output/www/brwh/deployments.json*output/www/brwh/tracks.json*output/www/brwh/detections.csv*output/www/kiwh/sites.json*output/www/kiwh/deployments.json*output/www/kiwh/tracks.json*output/www/kiwh/detections.csv*output/www/deployments/sites.json*output/www/deployments/deployments.json*output/www/deployments/tracks.json*output/www/deployments/detections.csv|t20657.8485661557s|s242217169b|242217169|file|local|vector|||38.109||

r/scripts/copy-data.sh

Lines changed: 0 additions & 6 deletions
This file was deleted.

r/scripts/deploy-data.sh

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
#!/bin/bash
22
# package and copy data to gcs
33

4-
DIR=${1:-"./data/pacm"}
4+
DIR=${1:-"./output/www"}
55
DATE=$(date +%Y%m%d)
66
FILENAME="pacm-data-$DATE.tar.gz"
77

0 commit comments

Comments
 (0)