Refactor/project structure (#3085)

* refactor project structure

* environment-based default registry

* fix tests

* update build container

* use docker platform for iso build emulation

* simplify compat

* Fix docker platform spec in run-compat.sh

* handle riscv compat

* fix bug with dep error exists attr

* undo removal of sorting

* use qemu for iso stage

---------

Co-authored-by: Mariusz Kogen <k0gen@pm.me>
Co-authored-by: Matt Hill <mattnine@protonmail.com>
This commit is contained in:
Aiden McClelland
2025-12-22 13:39:38 -07:00
committed by GitHub
parent eda08d5b0f
commit 96ae532879
389 changed files with 744 additions and 4005 deletions

View File

@@ -13,6 +13,7 @@ export type WorkspaceConfig = {
skipStartupAlerts: boolean
}
}
defaultRegistry: string
}
export const defaultRegistries = {
@@ -24,4 +25,5 @@ export const knownRegistries = {
...defaultRegistries,
start9Alpha: 'https://alpha-registry-x.start9.com/',
start9Beta: 'https://beta-registry.start9.com/',
communityBeta: 'https://community-beta-registry.start9.com/',
} as const

View File

@@ -56,7 +56,8 @@ export class MarketplaceNotificationComponent {
@Input() url = ''
get status() {
const { start9, community, start9Beta, start9Alpha } = knownRegistries
const { start9, community, start9Beta, communityBeta, start9Alpha } =
knownRegistries
if (sameUrl(this.url, start9)) {
return 'success'
@@ -66,7 +67,7 @@ export class MarketplaceNotificationComponent {
return 'info'
}
if (sameUrl(this.url, start9Beta)) {
if (sameUrl(this.url, start9Beta) || sameUrl(this.url, communityBeta)) {
return 'warning'
}

View File

@@ -7,7 +7,7 @@ import {
FilterPackagesPipe,
FilterPackagesPipeModule,
} from '@start9labs/marketplace'
import { defaultRegistries, i18nPipe } from '@start9labs/shared'
import { i18nPipe } from '@start9labs/shared'
import { TuiScrollbar } from '@taiga-ui/core'
import { tap } from 'rxjs'
import { MarketplaceService } from 'src/app/services/marketplace.service'
@@ -16,6 +16,7 @@ import { MarketplaceMenuComponent } from './components/menu.component'
import { MarketplaceNotificationComponent } from './components/notification.component'
import { MarketplaceTileComponent } from './components/tile.component'
import { StorageService } from 'src/app/services/storage.service'
import { ConfigService } from 'src/app/services/config.service'
@Component({
template: `
@@ -160,6 +161,7 @@ import { StorageService } from 'src/app/services/storage.service'
export default class MarketplaceComponent {
private readonly categoryService = inject(AbstractCategoryService)
private readonly marketplaceService = inject(MarketplaceService)
private readonly configService = inject(ConfigService)
private readonly router = inject(Router)
private readonly storage = inject(StorageService)
private readonly route = inject(ActivatedRoute)
@@ -175,7 +177,7 @@ export default class MarketplaceComponent {
queryParams: {
registry:
this.storage.get('selectedRegistry') ||
defaultRegistries.start9,
this.configService.defaultRegistry,
},
queryParamsHandling: 'merge',
})

View File

@@ -6,6 +6,7 @@ const {
gitHash,
useMocks,
ui: { api, mocks },
defaultRegistry,
} = require('../../../../../config.json') as WorkspaceConfig
@Injectable({
@@ -26,6 +27,7 @@ export class ConfigService {
api = api
skipStartupAlerts = useMocks && mocks.skipStartupAlerts
supportsWebSockets = !!window.WebSocket
defaultRegistry = defaultRegistry
isTor(): boolean {
return useMocks ? mocks.maskAs === 'tor' : this.hostname.endsWith('.onion')

View File

@@ -156,15 +156,14 @@ export class DepErrorService {
const depStatus = getInstalledBaseStatus(dep.statusInfo)
// not running
if (depStatus !== 'running' && depStatus !== 'starting') {
return {
type: 'notRunning',
}
}
// health check failure
if (currentDep?.kind === 'running') {
// not running
if (depStatus !== 'running' && depStatus !== 'starting') {
return {
type: 'notRunning',
}
}
// health check failure
for (let id of currentDep.healthChecks) {
const check = dep.statusInfo.health[id]
if (check?.result !== 'success') {