mirror of
https://github.com/cupcakearmy/gitea-sync.git
synced 2024-12-23 00:26:29 +00:00
also update visibility when syncing
This commit is contained in:
parent
494be7abe2
commit
9b535f621b
@ -1,5 +1,5 @@
|
|||||||
{
|
{
|
||||||
"version": "1.0.0",
|
"version": "1.1.0",
|
||||||
"type": "module",
|
"type": "module",
|
||||||
"scripts": {
|
"scripts": {
|
||||||
"start": "node .",
|
"start": "node .",
|
||||||
|
@ -3,6 +3,7 @@ import axios, { AxiosError } from 'axios'
|
|||||||
import { Config } from '../config.js'
|
import { Config } from '../config.js'
|
||||||
import { logger } from '../logger.js'
|
import { logger } from '../logger.js'
|
||||||
import { ListRepositoriesResponse } from './gitea.types.js'
|
import { ListRepositoriesResponse } from './gitea.types.js'
|
||||||
|
import { Repository } from './github.types.js'
|
||||||
|
|
||||||
const Base = axios.create({
|
const Base = axios.create({
|
||||||
baseURL: new URL('/api/v1', Config.gitea.host).href,
|
baseURL: new URL('/api/v1', Config.gitea.host).href,
|
||||||
@ -77,3 +78,12 @@ export async function listAllRepositories() {
|
|||||||
logger.debug('Listed all repositories in Gitea', { data: repos })
|
logger.debug('Listed all repositories in Gitea', { data: repos })
|
||||||
return repos
|
return repos
|
||||||
}
|
}
|
||||||
|
|
||||||
|
export async function updateRepository(owner: string, repo: string, body: Partial<Repository>) {
|
||||||
|
logger.debug('Updating repository', { owner, repo, body })
|
||||||
|
await Base({
|
||||||
|
url: `/repos/${owner}/${repo}`,
|
||||||
|
method: 'PATCH',
|
||||||
|
data: body,
|
||||||
|
})
|
||||||
|
}
|
||||||
|
15
src/core.ts
15
src/core.ts
@ -1,4 +1,4 @@
|
|||||||
import { listAllRepositories as giteaRepos, mirror, MirrorOptions } from './api/gitea.js'
|
import { listAllRepositories as giteaRepos, mirror, MirrorOptions, updateRepository } from './api/gitea.js'
|
||||||
import { listAllRepositories as githubRepos } from './api/github.js'
|
import { listAllRepositories as githubRepos } from './api/github.js'
|
||||||
import { Config } from './config.js'
|
import { Config } from './config.js'
|
||||||
import { logger } from './logger.js'
|
import { logger } from './logger.js'
|
||||||
@ -20,7 +20,12 @@ export async function sync() {
|
|||||||
const sameName = syncedRepos.find((r) => r.name === repo.name || r.original_url === repo.clone_url)
|
const sameName = syncedRepos.find((r) => r.name === repo.name || r.original_url === repo.clone_url)
|
||||||
if (sameName) {
|
if (sameName) {
|
||||||
if (sameName.original_url === repo.clone_url) {
|
if (sameName.original_url === repo.clone_url) {
|
||||||
logger.info('Already synced, skipping', { name: repo.name })
|
if (sameName.private === repo.private) logger.info('Already synced, skipping', { name: repo.name })
|
||||||
|
else {
|
||||||
|
logger.info('Visibility changed, updating', { name: repo.name })
|
||||||
|
const [owner, repository] = sameName.full_name.split('/')
|
||||||
|
await updateRepository(owner, repository, { private: repo.private })
|
||||||
|
}
|
||||||
} else {
|
} else {
|
||||||
logger.error('Repo with same name but different url', {
|
logger.error('Repo with same name but different url', {
|
||||||
name: repo.name,
|
name: repo.name,
|
||||||
@ -42,9 +47,9 @@ export async function sync() {
|
|||||||
logger.info('Mirrored repository', { name: repo.name })
|
logger.info('Mirrored repository', { name: repo.name })
|
||||||
}
|
}
|
||||||
logger.info('Finished sync')
|
logger.info('Finished sync')
|
||||||
} catch (e) {
|
} catch (error) {
|
||||||
logger.error(e)
|
logger.debug(error)
|
||||||
logger.error('Failed to sync')
|
logger.error('Failed to sync', { error: error instanceof Error ? error.message : 'Unknown error' })
|
||||||
} finally {
|
} finally {
|
||||||
running = false
|
running = false
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user