diff --git a/.woodpecker/.publish.yml b/.woodpecker/.docker.yml similarity index 93% rename from .woodpecker/.publish.yml rename to .woodpecker/.docker.yml index 22183c5..f23b3df 100644 --- a/.woodpecker/.publish.yml +++ b/.woodpecker/.docker.yml @@ -25,9 +25,7 @@ pipeline: settings: repo: chewingbever/vieter dockerfile: Dockerfile.ci - tag: - - latest - - ${CI_COMMIT_TAG} + auto_tag: true platforms: [ linux/arm/v7, linux/arm64/v8, linux/amd64 ] build_args_from_env: - CI_COMMIT_SHA diff --git a/.woodpecker/.release.yml b/.woodpecker/.gitea.yml similarity index 67% rename from .woodpecker/.release.yml rename to .woodpecker/.gitea.yml index c7527cb..e6062eb 100644 --- a/.woodpecker/.release.yml +++ b/.woodpecker/.gitea.yml @@ -13,13 +13,10 @@ pipeline: pull: true secrets: [ s3_username, s3_password ] commands: - - git clone "$CI_REPO_REMOTE" . - - git checkout "$CI_COMMIT_BRANCH" - # Write the title to a file that the plugin can then read - - echo "$(git describe --tags --abbrev=0 2> /dev/null || echo '0.0.0')-$(git rev-list --count ^dev)" > title - - cat title - mc alias set s3/ https://s3.rustybever.be "$S3_USERNAME" "$S3_PASSWORD" - mc cp -r "s3/vieter/commits/$CI_COMMIT_SHA" assets + when: + event: tag release: image: 'plugins/gitea-release' @@ -32,7 +29,6 @@ pipeline: - md5 - sha256 prerelease: true - # This should get read in as a file - title: title + title: ${CI_COMMIT_TAG} when: - event: push + event: tag diff --git a/.woodpecker/.image.yml b/.woodpecker/.image.yml deleted file mode 100644 index 27072a0..0000000 --- a/.woodpecker/.image.yml +++ /dev/null @@ -1,21 +0,0 @@ -# Because the only step here is a pull_request event, the branch should be dev -# because it has to be the target of the pull request -branches: dev -platform: linux/amd64 -depends_on: [ build ] - -pipeline: - dryrun: - image: woodpeckerci/plugin-docker-buildx - secrets: [ docker_username, docker_password ] - settings: - dockerfile: Dockerfile.ci - repo: chewingbever/vieter - tag: dev - platforms: [ linux/arm/v7, linux/arm64/v8, linux/amd64 ] - dry_run: true - build_args_from_env: - - CI_COMMIT_SHA - when: - event: pull_request - branch: dev diff --git a/src/archive.v b/src/archive.v index 3eaad5c..8d1314f 100644 --- a/src/archive.v +++ b/src/archive.v @@ -63,6 +63,9 @@ fn C.archive_write_close(&C.archive) // Free the write archive fn C.archive_write_free(&C.archive) +// Returns the name of the filter +fn C.archive_filter_code(&C.archive, int) int + #include "archive_entry.h" struct C.archive_entry {} diff --git a/src/package.v b/src/package.v index b9bcae8..03103c9 100644 --- a/src/package.v +++ b/src/package.v @@ -6,9 +6,10 @@ import util // Represents a read archive struct Pkg { pub: - path string [required] - info PkgInfo [required] - files []string [required] + path string [required] + info PkgInfo [required] + files []string [required] + compression int [required] } // Represents the contents of a .PKGINFO file @@ -125,6 +126,11 @@ pub fn read_pkg(pkg_path string) ?Pkg { C.archive_read_free(a) } + // 0: no compression (just a tarball) + // 1: gzip + // 14: zstd + compression_code := C.archive_filter_code(a, 0) + mut files := []string{} mut pkg_info := PkgInfo{} @@ -164,6 +170,7 @@ pub fn read_pkg(pkg_path string) ?Pkg { path: pkg_path info: pkg_info files: files + compression: compression_code } } @@ -175,7 +182,14 @@ fn format_entry(key string, value string) string { pub fn (pkg &Pkg) filename() string { p := pkg.info - return '$p.name-$p.version-${p.arch}.pkg.tar.zst' + ext := match pkg.compression { + 0 { '.tar' } + 1 { '.tar.gz' } + 14 { '.tar.zst' } + else { panic("Another compression code shouldn't be possible. Faulty code: $pkg.compression") } + } + + return '$p.name-$p.version-${p.arch}.pkg$ext' } // to_desc returns a desc file valid string representation diff --git a/test.py b/test.py index 17445b7..5721310 100644 --- a/test.py +++ b/test.py @@ -38,7 +38,7 @@ def create_random_pkginfo(words, name_min_len, name_max_len): Generates a random .PKGINFO """ name = "-".join(random_words(words, name_min_len, name_max_len)) - ver = "0.1.0" # doesn't matter what it is anyways + ver = "0.1.0-1" # doesn't matter what it is anyways # TODO add random dependencies (all types) @@ -67,7 +67,7 @@ def create_random_package(tmpdir, words, pkg_name_min_len, pkg_name_max_len, min return tar_info - with tarfile.open(tar_path, "w") as tar: + with tarfile.open(tar_path, "w:gz") as tar: # Add random .PKGINFO file pkginfo_file = sub_path / ".PKGINFO" pkginfo_file.write_text(create_random_pkginfo(words, pkg_name_min_len, pkg_name_max_len))