app

Local-first trade for farms and co-ops
git clone https://radroots.dev/git/app.git
Log | Files | Refs | README | LICENSE

Makefile (10792B)


      1 .DEFAULT_GOAL := help
      2 
      3 GRADLE ?= ./gradlew
      4 override CARGO := cargo +1.97.1
      5 CARGO_MANIFEST := core/Cargo.toml
      6 XTASK_MANIFEST := tools/xtask/Cargo.toml
      7 BUILD_MODE ?= standalone
      8 VALID_BUILD_MODES := standalone governed
      9 
     10 ifeq ($(filter $(BUILD_MODE),$(VALID_BUILD_MODES)),)
     11 $(error Unknown BUILD_MODE '$(BUILD_MODE)'; expected standalone or governed)
     12 endif
     13 
     14 ifeq ($(BUILD_MODE),governed)
     15 override BUILD_RUNNER := cargo extbuild run --
     16 else
     17 override BUILD_RUNNER :=
     18 endif
     19 
     20 .PHONY: help doctor governed-doctor lock metadata build-logic-check build-logic-stability-check mode-check design-source-check design-goldens-update format format-fix lint test check governed-check build bindings api-check dev-check dev run audit licenses foundation-check package host-package-check governed-package-check source-check governed-source-check package-check integration-check governed-integration-check development-provenance-check development-check governed-development-check governed-linux-x86_64-development-check host-ui-lifecycle-check acceptance-check unsigned-release-check _unsigned-release-check signing-check _signing-check notarization-check _notarization-check release-check _release-check clean
     21 
     22 help:
     23 	@printf '%s\n' doctor governed-doctor lock metadata build-logic-check build-logic-stability-check mode-check design-source-check design-goldens-update format format-fix lint test check governed-check build bindings api-check dev-check dev run audit licenses foundation-check package host-package-check governed-package-check source-check governed-source-check package-check integration-check governed-integration-check development-check governed-development-check governed-linux-x86_64-development-check host-ui-lifecycle-check acceptance-check unsigned-release-check signing-check notarization-check release-check clean
     24 
     25 design-source-check: doctor
     26 	HARVESTCIRCLE_BUILD_MODE=$(BUILD_MODE) $(BUILD_RUNNER) $(CARGO) run --manifest-path $(XTASK_MANIFEST) --locked -- design-source-audit
     27 
     28 design-goldens-update: doctor
     29 	$(BUILD_RUNNER) $(GRADLE) --no-daemon -Pharvestcircle.updateMacosGoldens=true :app:shared:desktopTest --tests org.harvestcircle.ui.shell.HarvestCircleMacGoldenTest
     30 
     31 doctor:
     32 	@printf '%s\n' "harvestcircle.build.mode=$(BUILD_MODE)"
     33 	$(BUILD_RUNNER) java -version
     34 	$(BUILD_RUNNER) $(CARGO) --version
     35 	$(BUILD_RUNNER) $(GRADLE) --version
     36 
     37 governed-doctor:
     38 	$(CARGO) extbuild doctor
     39 
     40 ifeq ($(BUILD_MODE),governed)
     41 doctor: governed-doctor
     42 endif
     43 
     44 lock: doctor
     45 	$(BUILD_RUNNER) $(CARGO) generate-lockfile --manifest-path $(CARGO_MANIFEST)
     46 	$(BUILD_RUNNER) $(CARGO) generate-lockfile --manifest-path $(XTASK_MANIFEST)
     47 
     48 metadata: doctor
     49 	$(BUILD_RUNNER) $(CARGO) metadata --manifest-path $(CARGO_MANIFEST) --locked --format-version 1 --no-deps
     50 
     51 build-logic-check: doctor
     52 	$(BUILD_RUNNER) $(GRADLE) --no-daemon -p build-logic :contracts:check :plugins:check :plugins:functionalTest
     53 
     54 build-logic-stability-check: doctor
     55 	$(BUILD_RUNNER) tools/test-build-logic-stability.sh
     56 
     57 mode-check:
     58 	tools/test-build-modes.sh
     59 
     60 format: doctor
     61 	$(BUILD_RUNNER) $(CARGO) fmt --manifest-path $(CARGO_MANIFEST) --all -- --check
     62 	$(BUILD_RUNNER) $(CARGO) fmt --manifest-path $(XTASK_MANIFEST) --all -- --check
     63 	$(BUILD_RUNNER) $(GRADLE) --no-daemon :app:shared:ktlintCheck :app:desktop:ktlintCheck designFormatCheck
     64 
     65 format-fix: doctor
     66 	$(BUILD_RUNNER) $(CARGO) fmt --manifest-path $(CARGO_MANIFEST) --all
     67 	$(BUILD_RUNNER) $(CARGO) fmt --manifest-path $(XTASK_MANIFEST) --all
     68 	$(BUILD_RUNNER) $(GRADLE) --no-daemon :app:shared:ktlintFormat :app:desktop:ktlintFormat
     69 
     70 lint: doctor
     71 	$(BUILD_RUNNER) $(CARGO) clippy --manifest-path $(CARGO_MANIFEST) --workspace --all-targets --locked -- -D warnings
     72 	$(BUILD_RUNNER) $(CARGO) clippy --manifest-path $(XTASK_MANIFEST) --all-targets --locked -- -D warnings
     73 	$(BUILD_RUNNER) $(GRADLE) --no-daemon :app:shared:detektCommonMainSourceSet :app:shared:detektCommonTestSourceSet :app:desktop:detekt designLint
     74 
     75 test: doctor
     76 	$(BUILD_RUNNER) $(CARGO) test --manifest-path $(CARGO_MANIFEST) --workspace --locked
     77 	$(BUILD_RUNNER) $(CARGO) test --manifest-path $(XTASK_MANIFEST) --locked
     78 	$(BUILD_RUNNER) $(GRADLE) --no-daemon :app:shared:desktopTest :app:desktop:test designTest
     79 
     80 check: format lint test foundation-check mode-check
     81 	$(BUILD_RUNNER) $(GRADLE) --no-daemon :app:shared:check :app:desktop:check designCheck
     82 
     83 governed-check:
     84 	$(MAKE) --no-print-directory BUILD_MODE=governed check
     85 
     86 build: doctor
     87 	$(BUILD_RUNNER) $(CARGO) build --manifest-path $(CARGO_MANIFEST) --workspace --locked
     88 	$(BUILD_RUNNER) $(GRADLE) --no-daemon :app:desktop:build
     89 
     90 bindings: doctor
     91 	$(BUILD_RUNNER) $(GRADLE) --no-daemon :app:desktop:verifyUniFfiBindings :app:desktop:verifyReleaseNativeLibrary
     92 
     93 api-check: doctor
     94 	$(BUILD_RUNNER) tools/verify-storage-api.sh
     95 
     96 dev-check: doctor
     97 	$(BUILD_RUNNER) $(GRADLE) --no-daemon --configuration-cache --configuration-cache-problems=fail :app:desktop:hotRunArgfile
     98 
     99 dev: doctor
    100 	$(BUILD_RUNNER) $(GRADLE) :app:desktop:hotRun
    101 
    102 run: doctor
    103 	$(BUILD_RUNNER) $(GRADLE) :app:desktop:run
    104 
    105 audit: doctor
    106 	$(BUILD_RUNNER) $(CARGO) audit --file core/Cargo.lock
    107 	$(BUILD_RUNNER) $(CARGO) deny --manifest-path $(CARGO_MANIFEST) check --config core/deny.toml advisories
    108 	$(BUILD_RUNNER) $(GRADLE) --no-daemon --no-configuration-cache :app:desktop:dependencyCheckAnalyze :app:design_system:dependencyCheckAnalyze :tools:design_catalog:dependencyCheckAnalyze
    109 
    110 licenses: doctor
    111 	$(BUILD_RUNNER) $(CARGO) deny --manifest-path $(CARGO_MANIFEST) check --config core/deny.toml licenses sources
    112 	$(BUILD_RUNNER) $(GRADLE) --no-daemon --no-parallel --no-configuration-cache :app:desktop:checkLicense :app:design_system:checkLicense :tools:design_catalog:checkLicense
    113 
    114 foundation-check: design-source-check
    115 	HARVESTCIRCLE_BUILD_MODE=$(BUILD_MODE) $(BUILD_RUNNER) $(CARGO) run --manifest-path $(XTASK_MANIFEST) --locked -- qualification-report
    116 
    117 package: check
    118 	$(BUILD_RUNNER) $(GRADLE) --no-daemon :app:desktop:verifyHostPackage
    119 
    120 host-package-check: doctor
    121 	$(BUILD_RUNNER) $(GRADLE) --no-daemon :app:desktop:verifyHostPackage
    122 
    123 governed-package-check:
    124 	$(MAKE) --no-print-directory BUILD_MODE=governed package-check
    125 
    126 source-check: build-logic-check check bindings api-check licenses dev-check
    127 	$(BUILD_RUNNER) $(GRADLE) --no-daemon :app:desktop:sourceReadiness
    128 
    129 governed-source-check:
    130 	$(MAKE) --no-print-directory BUILD_MODE=governed source-check
    131 
    132 package-check: export HARVESTCIRCLE_BUILD_SOURCE_COMMIT = $(shell git rev-parse --verify HEAD)
    133 package-check: export HARVESTCIRCLE_BUILD_SOURCE_DIRTY = $(if $(strip $(shell git status --porcelain --untracked-files=all)),true,false)
    134 package-check: export HARVESTCIRCLE_BUILD_RADROOTS_REVISION = $(shell sed -n 's/^revision = "\([0-9a-f]\{40\}\)"$$/\1/p' radroots.lib.source-lock.v1.toml)
    135 package-check: export HARVESTCIRCLE_BUILD_RUST_TOOLCHAIN = 1.97.1
    136 package-check: export SOURCE_DATE_EPOCH = $(shell git show -s --format=%ct HEAD)
    137 package-check: source-check
    138 	$(BUILD_RUNNER) $(GRADLE) --no-daemon --no-parallel --no-configuration-cache :app:desktop:unsignedReleaseReadiness
    139 
    140 integration-check: build-logic-check check
    141 	$(BUILD_RUNNER) $(GRADLE) --no-daemon :app:desktop:integrationTest :app:desktop:verifyTestBridgeIsolation
    142 
    143 governed-integration-check:
    144 	$(MAKE) --no-print-directory BUILD_MODE=governed integration-check
    145 
    146 development-check: export HARVESTCIRCLE_BUILD_SOURCE_COMMIT = $(shell git rev-parse --verify HEAD)
    147 development-check: export HARVESTCIRCLE_BUILD_SOURCE_DIRTY = $(if $(strip $(shell git status --porcelain --untracked-files=all)),true,false)
    148 development-check: export HARVESTCIRCLE_BUILD_RADROOTS_REVISION = $(shell sed -n 's/^revision = "\([0-9a-f]\{40\}\)"$$/\1/p' radroots.lib.source-lock.v1.toml)
    149 development-check: export HARVESTCIRCLE_BUILD_RUST_TOOLCHAIN = 1.97.1
    150 development-check: export SOURCE_DATE_EPOCH = $(shell git show -s --format=%ct HEAD)
    151 development-check: development-provenance-check source-check integration-check
    152 
    153 development-provenance-check:
    154 	@test "$${#HARVESTCIRCLE_BUILD_SOURCE_COMMIT}" -eq 40
    155 	@test "$${#HARVESTCIRCLE_BUILD_RADROOTS_REVISION}" -eq 40
    156 	@case "$$SOURCE_DATE_EPOCH" in ''|*[!0-9]*) exit 2 ;; esac
    157 	@test "$$HARVESTCIRCLE_BUILD_SOURCE_DIRTY" = true -o "$$HARVESTCIRCLE_BUILD_SOURCE_DIRTY" = false
    158 
    159 governed-development-check:
    160 	$(MAKE) --no-print-directory BUILD_MODE=governed development-check
    161 
    162 governed-linux-x86_64-development-check: governed-doctor
    163 	$(CARGO) extbuild run -- tools/run-linux-x86_64-development-check.sh
    164 
    165 host-ui-lifecycle-check: doctor
    166 	$(BUILD_RUNNER) $(GRADLE) --no-daemon :app:desktop:hostUiLifecycleTest
    167 
    168 acceptance-check: integration-check host-package-check
    169 
    170 unsigned-release-check:
    171 	$(MAKE) --no-print-directory BUILD_MODE=governed _unsigned-release-check
    172 
    173 _unsigned-release-check: export HARVESTCIRCLE_BUILD_SOURCE_COMMIT = $(shell git rev-parse --verify HEAD)
    174 _unsigned-release-check: export HARVESTCIRCLE_BUILD_SOURCE_DIRTY = $(if $(strip $(shell git status --porcelain --untracked-files=all)),true,false)
    175 _unsigned-release-check: export HARVESTCIRCLE_BUILD_RADROOTS_REVISION = $(shell sed -n 's/^revision = "\([0-9a-f]\{40\}\)"$$/\1/p' radroots.lib.source-lock.v1.toml)
    176 _unsigned-release-check: export HARVESTCIRCLE_BUILD_RUST_TOOLCHAIN = 1.97.1
    177 _unsigned-release-check: export SOURCE_DATE_EPOCH = $(shell git show -s --format=%ct HEAD)
    178 _unsigned-release-check: doctor
    179 	@test "$(BUILD_MODE)" = governed || { printf '%s\n' 'unsigned-release-check requires governed mode'; exit 2; }
    180 	$(BUILD_RUNNER) $(CARGO) deny --manifest-path $(CARGO_MANIFEST) check --config core/deny.toml licenses sources
    181 	$(BUILD_RUNNER) $(GRADLE) --no-daemon --no-parallel --no-configuration-cache :app:desktop:unsignedReleaseReadiness
    182 
    183 signing-check:
    184 	$(MAKE) --no-print-directory BUILD_MODE=governed _signing-check
    185 
    186 _signing-check: doctor
    187 	$(BUILD_RUNNER) $(GRADLE) --no-daemon :app:desktop:signingReadiness
    188 
    189 notarization-check:
    190 	$(MAKE) --no-print-directory BUILD_MODE=governed _notarization-check
    191 
    192 _notarization-check: doctor
    193 	$(BUILD_RUNNER) $(GRADLE) --no-daemon :app:desktop:notarizationReadiness
    194 
    195 release-check:
    196 	$(MAKE) --no-print-directory BUILD_MODE=governed _release-check
    197 
    198 _release-check: doctor
    199 	@test "$(BUILD_MODE)" = governed || { printf '%s\n' 'release-check requires governed mode'; exit 2; }
    200 	$(BUILD_RUNNER) $(CARGO) audit --file core/Cargo.lock
    201 	$(BUILD_RUNNER) $(CARGO) deny --manifest-path $(CARGO_MANIFEST) check --config core/deny.toml advisories licenses sources
    202 	$(BUILD_RUNNER) $(GRADLE) --no-daemon --no-parallel --no-configuration-cache :app:desktop:releaseReadiness
    203 
    204 clean: doctor
    205 	$(BUILD_RUNNER) $(CARGO) clean --manifest-path $(CARGO_MANIFEST)
    206 	$(BUILD_RUNNER) $(CARGO) clean --manifest-path $(XTASK_MANIFEST)
    207 	$(BUILD_RUNNER) $(GRADLE) --no-daemon clean
    208 	$(BUILD_RUNNER) $(GRADLE) --no-daemon -p build-logic clean