air-verse / air

☁️ Live reload for Go apps
GNU General Public License v3.0
16.32k stars 770 forks source link

Disable tmp directory #580

Open Auxority opened 1 month ago

Auxority commented 1 month ago

Hey, first of all I want to thank you guys for creating this amazing tool.

I'd like to disable the creation of the tmp directory. But I cannot find any way to do this. I managed to disable the creation of any files inside the directory, but the directory itself is still created. This is my .air.toml file, I run it inside a Docker container using a development stage:

root = "/app"
tmp_dir = "tmp"

[build]
  args_bin = []
  bin = "/go/bin/app"
  cmd = "go build -o /go/bin/app ."
  delay = 1000
  exclude_dir = ["tmp"]
  exclude_file = []
  exclude_regex = ["_test.go"]
  exclude_unchanged = false
  follow_symlink = false
  full_bin = ""
  include_dir = []
  include_ext = ["go"]
  include_file = []
  kill_delay = "0s"
  log = "/dev/null"
  poll = true
  poll_interval = 0
  post_cmd = []
  pre_cmd = []
  rerun = false
  rerun_delay = 500
  send_interrupt = false
  stop_on_error = false

[color]
  app = ""
  build = "yellow"
  main = "magenta"
  runner = "green"
  watcher = "cyan"

[log]
  main_only = true
  time = false

[misc]
  clean_on_exit = true

[screen]
  clear_on_rebuild = false
  keep_scroll = true
MaxThom commented 1 month ago

+1 for this! There is always an empty tmp directory even if not used. I tried settings tmp_dir="", but still created a tmp folder.

chrisk314 commented 1 week ago

I'd also like to get rid of this tmp directory. I'd rather have the build log files placed in the root directory. I tried tmp = "./" and tmp = ".", but both of those resulted in the tmp directory created under root. This is surprising as it contradicts with the statement that all directories are relative to root, which implies that "." and "./" should refer to the same directory as root, given that tmp and ./tmp result in ${root}/tmp.

MaxThom commented 1 week ago

I'm sharing what I end up doing for my setup. In my project I got many services that are all under the cmds/ folder. I also didnt like having an air file next to the main file so I created a air directory that contains the air files and the air tmp directories.

structure

/root
  .air/
     core/
     twin/
     core.toml
     twin.toml
     ...
  bin/
    core
    twin
  cmds/
    core/
      main.go
    twin/
      main.go

core.toml

root = "../"
testdata_dir = "testdata"
tmp_dir = "core"

[build]
args_bin = []
bin = "bin/core"
cmd = "go build -o ./bin/core ./cmds/core"

im simply starting my apps using air -c .air/core.toml at the root level. I also use a makefile for ease.