setup
							parent
							
								
									8f2b962cb5
								
							
						
					
					
						commit
						4fc0cfef34
					
				| 
						 | 
				
			
			@ -22,7 +22,7 @@
 | 
			
		|||
	"forwardPorts": [1234],
 | 
			
		||||
 | 
			
		||||
	// Use 'postCreateCommand' to run commands after the container is creahowted.
 | 
			
		||||
	"postCreateCommand": "npm i"
 | 
			
		||||
	"postCreateCommand": "npm i && chmod +x ./.devcontainer/postCreateCommand.sh && ./.devcontainer/postCreateCommand.sh"
 | 
			
		||||
 | 
			
		||||
	// Configure tool-specific properties.
 | 
			
		||||
	// "customizations": {},
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -0,0 +1,16 @@
 | 
			
		|||
#!/bin/bash
 | 
			
		||||
 | 
			
		||||
# Install starship
 | 
			
		||||
curl -sS https://starship.rs/install.sh | sh -s -- -y
 | 
			
		||||
 | 
			
		||||
# Set starship theme
 | 
			
		||||
starship preset gruvbox-rainbow -o ~/.config/starship.toml
 | 
			
		||||
 | 
			
		||||
# Install libegl1-mesa
 | 
			
		||||
sudo apt update && sudo apt-get install -y libegl1-mesa
 | 
			
		||||
 | 
			
		||||
# Set utc_time_offset in starship.toml
 | 
			
		||||
sed -i '/\[time\]/a utc_time_offset = \"+1\"' ~/.config/starship.toml
 | 
			
		||||
 | 
			
		||||
# Add starship to bashrc
 | 
			
		||||
echo 'eval "$(starship init bash)"' >> "/home/$USER/.bashrc"
 | 
			
		||||
| 
						 | 
				
			
			@ -20,4 +20,5 @@ yarn-error.log*
 | 
			
		|||
tmp
 | 
			
		||||
parcel-bundle-reports/
 | 
			
		||||
.verdaccio_storage/
 | 
			
		||||
sourcemap-info.json
 | 
			
		||||
sourcemap-info.json
 | 
			
		||||
.env
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -0,0 +1,88 @@
 | 
			
		|||
require("dotenv").config();
 | 
			
		||||
const fs = require("fs-extra");
 | 
			
		||||
const { exec } = require("child_process");
 | 
			
		||||
import("webdav").then(({ createClient }) => {
 | 
			
		||||
  // Step 1: Clean the dist/ folder
 | 
			
		||||
  function cleanDist() {
 | 
			
		||||
    console.log("Cleaning dist/ folder...");
 | 
			
		||||
    return fs
 | 
			
		||||
      .emptyDir("./dist")
 | 
			
		||||
      .then(() => console.log("dist/ folder cleaned"))
 | 
			
		||||
      .catch((err) => console.error("Error cleaning dist/ folder:", err));
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  // Step 2: Build with Parcel
 | 
			
		||||
  function buildWithParcel() {
 | 
			
		||||
    console.log("Building with Parcel...");
 | 
			
		||||
    const baseCommand = "npx parcel build src/index.html";
 | 
			
		||||
 | 
			
		||||
    return new Promise((resolve, reject) => {
 | 
			
		||||
      exec(baseCommand, (error, stdout, stderr) => {
 | 
			
		||||
        if (error) {
 | 
			
		||||
          console.error(`Error: ${error.message}`);
 | 
			
		||||
          reject(error);
 | 
			
		||||
          return;
 | 
			
		||||
        }
 | 
			
		||||
        if (stderr) {
 | 
			
		||||
          console.error(`Stderr: ${stderr}`);
 | 
			
		||||
          reject(stderr);
 | 
			
		||||
          return;
 | 
			
		||||
        }
 | 
			
		||||
        console.log(stdout);
 | 
			
		||||
        resolve();
 | 
			
		||||
      });
 | 
			
		||||
    });
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  // Step 3: Log into WebDAV
 | 
			
		||||
  function loginToWebDAV() {
 | 
			
		||||
    console.log("Logging into WebDAV server...");
 | 
			
		||||
    const client = createClient(process.env.WEBDAV_SERVER_URL, {
 | 
			
		||||
      username: process.env.WEBDAV_USERNAME,
 | 
			
		||||
      password: process.env.WEBDAV_PASSWORD,
 | 
			
		||||
    });
 | 
			
		||||
 | 
			
		||||
    return client;
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  // Step 4: Clean main folder on server
 | 
			
		||||
  async function cleanMainFolder(client) {
 | 
			
		||||
    console.log("Cleaning main folder on server...");
 | 
			
		||||
    try {
 | 
			
		||||
      await client.deleteFile(process.env.WEBDAV_PATH).catch(() => {}); // Ignore error if folder doesn't exist
 | 
			
		||||
      await client.createDirectory(process.env.WEBDAV_PATH);
 | 
			
		||||
      console.log("main folder on server cleaned");
 | 
			
		||||
    } catch (err) {
 | 
			
		||||
      console.error("Error cleaning main folder on server:", err);
 | 
			
		||||
      throw err;
 | 
			
		||||
    }
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  // Step 5: Transfer content
 | 
			
		||||
  async function transferContent(client) {
 | 
			
		||||
    console.log("Transferring content to server...");
 | 
			
		||||
    try {
 | 
			
		||||
      const files = await fs.readdir("./dist");
 | 
			
		||||
      for (const file of files) {
 | 
			
		||||
        await client.putFileContents(
 | 
			
		||||
          process.env.WEBDAV_PATH.concat(file),
 | 
			
		||||
          await fs.readFile(`./dist/${file}`)
 | 
			
		||||
        );
 | 
			
		||||
        console.log(`Transferred ${file}`);
 | 
			
		||||
      }
 | 
			
		||||
    } catch (err) {
 | 
			
		||||
      console.error("Error transferring content:", err);
 | 
			
		||||
      throw err;
 | 
			
		||||
    }
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  // Start the process
 | 
			
		||||
  cleanDist()
 | 
			
		||||
    .then(buildWithParcel)
 | 
			
		||||
    .then(loginToWebDAV)
 | 
			
		||||
    .then((client) => cleanMainFolder(client).then(() => client))
 | 
			
		||||
    .then((client) => transferContent(client))
 | 
			
		||||
    .then(cleanDist)
 | 
			
		||||
    .then(() => console.log("Process completed successfully"))
 | 
			
		||||
    .catch((err) => console.error("Process failed:", err));
 | 
			
		||||
});
 | 
			
		||||
| 
						 | 
				
			
			@ -1,3 +1,4 @@
 | 
			
		|||
 | 
			
		||||
<!doctype html>
 | 
			
		||||
<html lang="en">
 | 
			
		||||
  <head>
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
		Reference in New Issue