Add dry run upload and adding additional verbose output
All checks were successful
continuous-integration/drone/push Build is passing
All checks were successful
continuous-integration/drone/push Build is passing
This commit is contained in:
@ -1,7 +1,7 @@
|
||||
import { Colors, Path, FS, Compress, Base64 } from "../deps.ts";
|
||||
import { getMeta, IMeta, log, getConfig } from "../global.ts";
|
||||
|
||||
export default async function publish() {
|
||||
export default async function publish(options: { dry: boolean }) {
|
||||
const meta: IMeta = await getMeta();
|
||||
|
||||
if (!meta.name) throw new Error("name is not set in meta.json");
|
||||
@ -10,7 +10,7 @@ export default async function publish() {
|
||||
throw new Error("files is not set or empty in meta.json");
|
||||
|
||||
const tmpDir = await Deno.makeTempDir();
|
||||
const packedFile = await Deno.makeTempFile();
|
||||
const packedFile = (await Deno.makeTempFile()) + ".tar";
|
||||
|
||||
try {
|
||||
const walker = FS.walk(".", {
|
||||
@ -31,9 +31,10 @@ export default async function publish() {
|
||||
|
||||
for await (const file of walker) {
|
||||
await copy(file.path);
|
||||
log("Adding file:", file.path);
|
||||
}
|
||||
|
||||
log("Compressing file");
|
||||
log("Compressing files into", packedFile);
|
||||
|
||||
await Compress.Tar.compress(tmpDir, packedFile, {
|
||||
excludeSrc: true,
|
||||
@ -42,34 +43,38 @@ export default async function publish() {
|
||||
const url = new URL(getConfig("registry"));
|
||||
url.pathname = "/api/package/" + meta.name;
|
||||
|
||||
log("Uploading new package version");
|
||||
if (!options.dry) {
|
||||
log("Uploading new package version");
|
||||
|
||||
await fetch(url, {
|
||||
method: "POST",
|
||||
body: await Deno.readFile(packedFile),
|
||||
headers: {
|
||||
Authorization:
|
||||
"Basic " +
|
||||
Base64.encode(
|
||||
getConfig("username") + ":" + getConfig("password")
|
||||
),
|
||||
},
|
||||
})
|
||||
.then((res) =>
|
||||
res.status === 200
|
||||
? res.json()
|
||||
: Promise.reject(new Error(res.statusText))
|
||||
)
|
||||
.then((res) => {
|
||||
if (!res.success) {
|
||||
throw new Error(res.message);
|
||||
} else {
|
||||
console.log(Colors.green("Upload successfull"));
|
||||
}
|
||||
await fetch(url, {
|
||||
method: "POST",
|
||||
body: await Deno.readFile(packedFile),
|
||||
headers: {
|
||||
Authorization:
|
||||
"Basic " +
|
||||
Base64.encode(
|
||||
getConfig("username") + ":" + getConfig("password")
|
||||
),
|
||||
},
|
||||
})
|
||||
.catch((err) => {
|
||||
console.log(Colors.red("Error: " + err.message));
|
||||
});
|
||||
.then((res) =>
|
||||
res.status === 200
|
||||
? res.json()
|
||||
: Promise.reject(new Error(res.statusText))
|
||||
)
|
||||
.then((res) => {
|
||||
if (!res.success) {
|
||||
throw new Error(res.message);
|
||||
} else {
|
||||
console.log(Colors.green("Upload successfull"));
|
||||
}
|
||||
})
|
||||
.catch((err) => {
|
||||
console.log(Colors.red("Error: " + err.message));
|
||||
});
|
||||
} else {
|
||||
console.log(Colors.yellow("Dry run. Skipping upload"));
|
||||
}
|
||||
} finally {
|
||||
await Deno.remove(tmpDir, { recursive: true });
|
||||
await Deno.remove(packedFile);
|
||||
|
Reference in New Issue
Block a user