library(arttools)
options(
arttools.repos.local = file.path(tempdir(), "temp_repos"),
arttools.bucket.local = file.path(tempdir(), "temp_bucket")
)
Repository name
One of the first choices you have to make when setting up a new
system is to choose a name for the repository. The arttools package
doesn’t enforce any naming system, but from my personal experience I’ve
learned that it’s useful to adopt a consistent
[prefix]-[system name]
format. All my art repositories use
“series” as a prefix, which makes it a lot easier for me to find them on
GitHub later! For example, if my generative art system is called
“cards”, the repository name would be “series-cards”. Any time a
function in the arttools package takes a series
argument,
I’d write series = "series-cards"
or something along those
lines.
There’s nothing special about using “series” as the prefix though. I chose that solely because of how I think about generative art systems: to me they’re tools for creating an “art series”, so that seems to make sense to me.
Repository folder structure
You can use repo_create()
to create the skeleton for a
local series repository. If my generative art system is called “fake”,
my series name will be "series-fake"
. I might use a command
like this to create a skeleton:
repo_create(series = "series-fake", license = "ccby")
#> ✔ repository folder created at /tmp/Rtmp386k6J/temp_repos/series-fake
#> ✔ writing README.md
#> ✔ writing LICENSE.md
#> ✔ writing .gitignore
#> ✔ writing .here
#> ✔ creating folder 'source'
#> ✔ creating folder 'input'
#> ✔ creating folder 'output'
#> ✔ creating folder 'build'
#> ✔ writing example file 'source/common.R'
#> ✔ writing example file 'source/art-system_01.R'
#> ✔ writing example file 'source/art-system_02.R'
This is the file tree it creates:
#> /tmp/Rtmp386k6J/temp_repos/series-fake
#> ├── .gitignore
#> ├── .here
#> ├── LICENSE.md
#> ├── README.md
#> ├── build
#> ├── input
#> ├── output
#> └── source
#> ├── art-system_01.R
#> ├── art-system_02.R
#> └── common.R
Note that:
- It writes a
.gitignore
file to ensure git won’t commit output files - It writes a
.here
file to ensurehere::here()
will always work
But also note that:
- It doesn’t create an RStudio project: use
usethis::create_project()
for that - It doesn’t initialise a git repository: use
usethis::use_git()
for that - It doesn’t create a remote on GitHub: use
usethis::use_github()
for that
The other two top-level files it writes are:
-
README.md
is always created -
LICENSE.md
is created only iflicense
is specified
There four folders in the repository:
-
source
is for source code for the generative art system -
input
is for other input files used by the system (optional) -
build
is for ancillary scripts that are not part of the system (optional) -
output
is for output files generated by the system (ignored by git)
Within the source folder there are three other files:
source/common.R
source/art-system_01.R
source/art-system_02.R
These files define a simple generative art system that I’ll use to discuss other aspects of generative art workflow in another article.