Commit graph

39 commits

Author SHA1 Message Date
Francis Lavoie
661655cf05
Add support for setcap from build command (#129) 2023-02-06 13:26:33 -05:00
Matthew Holt
e09becb9d1
Ignore vendor folder with mod=readonly 2022-09-30 11:26:05 -06:00
Matthew Holt
e4c5f53dd2 Don't include version in replacement source
Follow-up to #69

I had a situation where caddy/v2 v2.4.6 was in my go.mod and a replace
on it to use local caddy repo.

When I ran `xcaddy run` to test a caddy module, it failed to run because
the replace included the version v2.4.6, even though somehow the buildenv
go.mod had v2.6.1 (the latest), and the replace directive specified
@v2.4.6 only, so the replacement didn't happen.

I don't think versions in the replacement source/origin are
really that useful for xcaddy.

If experience proves this wrong, we can figure out a better solution.
2022-09-28 10:25:41 -06:00
ydylla
25c412f1ec
Always prepend caddy command with dot (#117)
Fix xcaddy run on windows with go 1.19

See https://github.com/golang/go/issues/43724
2022-09-12 13:41:27 -06:00
Mohammed Al Sahaf
e6eb334d4e
core: add XCADDY_GO_MOD_FLAGS env var to allow passing custom go mod flags (#113) 2022-08-16 21:27:48 +00:00
Matthew Holt
7577d60f61
Tolerate module file paths with @ in them
But version must also be specified to disambiguate.

Fix #109
2022-07-29 16:49:34 -06:00
Aapo Keskimölö
47f9ded5d8
Add XCADDY_GO_BUILD_FLAGS env var (#104)
Add environment variable

 XCADDY_GO_BUILD_FLAGS

to override default build arguments from environment (#102).

To support flags with variable arguments Unix-style quoting is supported.
2022-06-20 13:20:05 -06:00
Peter Magnusson
7abc7f5752
Do not use only hardcoded "go" (#97)
* fix: do not use only hardcoded "go"

* fixed comments and added env to readme

* move GetGo to an internal package

Co-authored-by: Mohammed Al Sahaf <msaa1990@gmail.com>
2022-04-25 10:13:12 -06:00
Mohammed Al Sahaf
996c8d9d08
fix: skip cleanup if build is skipped (#83) 2022-02-19 15:26:52 -07:00
Hyeon Kim (김지현)
3d8622df25
Handle replacements robustly (#69)
* Parse JSON output of 'go list'

It's more robust in this way

* Handle all possible replacements properly for runDev()

1.  Handle all possible replacements properly for runDev()

    Replacement targets are not always paths.

    Reference:
      https://pkg.go.dev/cmd/go/internal/list#pkg-variables

2.  Parse replacement info from 'go list -m -json all'

    It's more robust in this way

* Test the 'go list -m -json all' parsing logic

* Call 'go list' command only once

`go list -m -json all` contains all informations we need so we don't
need extra `go list -m -json` call.

* main_windows_test.go: Make tests for Windows

* Support Go 1.16

* Use struct instead of map[string]interface{}

* extract and unexport the `module` struct

Co-authored-by: Mohammed Al Sahaf <msaa1990@gmail.com>
2021-09-01 18:30:45 +00:00
Francis Lavoie
220c0dbbdc cmd: Set up main.go, similar to caddy, for retaining version info
cmd: Sync up release jobs with caddy repo

ci: fix the build dir for xcaddy goreleaser flow
2021-08-30 21:15:04 +03:00
Francis Lavoie
82e7b6aff2 cmd: Add xcaddy version command
cmd: Fix tests
2021-08-30 21:15:04 +03:00
Ggicci
8c5d3f1cf6
Keep DWARF info by setting XCADDY_DEBUG=1 (#62)
* feat: add --debug option to build a debug output

* chore: renaming

* chore: update README

* fix: typo

* feat: introduce env XCADDY_DEBUG

* fix: remove unnecessary change
2021-07-03 17:57:17 -06:00
Mohammed Al Sahaf
83bc5a7c58
accept replacements with branches of github forks (#51)
* accept replacements with branches of github forks

Closes #50

* remove `!filepath.IsAbs(repl)` when checking path of replacement

If the replacement path starts with a `.`, then the path is definitely not absolute.
2021-02-26 22:49:50 +00:00
Francis Lavoie
c2133748db
Resolve relative replacements for xcaddy build as well (#48) 2021-02-15 11:28:34 -07:00
Kévin Dunglas
5734acdd58
Add XCADDY_SKIP_BUILD option (#41)
* feat: add XCADDY_NO_BUILD to not run go build

* Rename XCADDY_NO_BUILD to XCADDY_SKIP_BUILD

* fix rebase
2021-02-05 16:34:51 -07:00
Matthew Holt
dabafeef18
Support setcap in dev mode (XCADDY_SETCAP)
When I first wrote xcaddy I was on macOS which does not
require permission to bind to low ports. Now I'm on Linux.

The XCADDY_SETCAP env var will cause xcaddy to run setcap
on the generated temporary binary before executing it
so that it can bind to low ports. This requires sudo.
2021-01-20 12:17:46 -07:00
Matthew Holt
623c361726
Resolve relative replacements
This allows us to use user-defined replacements that have a
relative path, since our temporary modules exist in different dirs.
2021-01-19 14:49:54 -07:00
Matthew Holt
f74ee60bd8
Update readme, specify local binary when executing 2020-12-28 08:49:32 -07:00
Jayson Reis
4f3e0ef756
Fix main.go generation when executing on a windows machine (#32)
* Fix main.go generation when executing on a windows machine

When normalizing the `importPath` it will try to write on `main.go` files with imports
like `github.com/caddyserver/xcaddy/c:\xcaddy`

* Apply CR suggestions

* Add test cases for sub-paths on normalizeImportPath

* Run windows tests only when GOOS matches
2020-09-25 17:39:48 -06:00
Jayson Reis
13c49c3566
Fix runDev when running on windows (#33)
Extract default output file to a function and reuse it in both runBuild and runDev
2020-08-26 12:36:51 -06:00
jpughcs
b7fd102f41
Support go.mod replace version pinning (#27)
* support go.mod replace version pinning

* use string replace instead of regex

* Minor cleanups

Co-authored-by: Matthew Holt <mholt@users.noreply.github.com>
2020-08-10 12:27:38 -06:00
Matthew Holt
1d18c5862c
Rename ModulePath -> PackagePath
Technically they are packages to be imported, not necessarily paths to
the containing Go module.
2020-07-15 17:45:32 -06:00
Matthew Holt
3742b72df8
Optionally skip cleanup; fix cgo when race detector enabled 2020-07-15 17:44:06 -06:00
Matthew Holt
8266ddc40e
Handle package import paths that are in subfolders of Go module path 2020-06-16 15:08:00 -06:00
Matthew Holt
823a072ae1
Only run compiled binary if same platform (fixes #20) 2020-05-26 16:42:56 -06:00
Matthew Holt
23d4e0a1ca
Fix env var name, update readme 2020-05-23 16:32:48 -06:00
Matthew Holt
a1e17ca9b9
Honor CGO_ENABLED environment variable (fix #17) 2020-05-22 10:31:34 -06:00
Matthew Holt
4ce3d1db07
Add race detector support; update readme 2020-05-09 18:59:18 -06:00
Matthew Holt
9146f00342
Minor improvements; print go list errors, strip trailing slashes 2020-05-02 17:32:37 -06:00
Matthew Holt
68d27a0401
Only cleanup temporary file after run is over
Mac apparently sends SIGKILL to processes spawned by a process that no
longer exists on disk! ... or something like that.
2020-04-23 15:04:06 -06:00
Matthew Holt
fd8e902223
Support replacements and customizing the core version; update readme 2020-04-22 16:29:57 -06:00
Matthew Holt
dcc00b0892
Support context cancellation and cleanup
This should avoid leaving temporary build directories lingering after
Ctrl+C.
2020-04-13 12:22:23 -06:00
Matthew Holt
97dd3289b0
Improve docs 2020-04-07 18:56:30 -06:00
Matthew Holt
35c6866159 Improve exported API, update docs 2020-04-04 09:56:41 -06:00
Matthew Holt
f337ff945a
Update name to xcaddy 2020-04-02 08:35:27 -06:00
Mohammed Al Sahaf
22d82434ea
fix off-by-one error (#3) 2020-03-29 10:13:05 -06:00
Matthew Holt
1cc8e08c16
Update CLI; change command to 'xcaddy'; update readme 2020-03-25 00:03:28 -06:00
Matthew Holt
6004fc79b2
Initial commit 2020-03-21 14:31:29 -06:00