:-'Generic Commit'
This commit is contained in:
parent
8597cfb723
commit
b361e009a7
@ -1,18 +1,95 @@
|
|||||||
#include "BashrcEditor.hpp"
|
#include "BashrcEditor.hpp"
|
||||||
#include <fstream>
|
#include <fstream>
|
||||||
|
#include <sstream>
|
||||||
|
#include <vector>
|
||||||
#include <string>
|
#include <string>
|
||||||
|
#include <algorithm>
|
||||||
|
|
||||||
|
std::string removeWhitespace(const std::string& s) {
|
||||||
|
std::string out;
|
||||||
|
for (char c : s) {
|
||||||
|
if (!isspace(static_cast<unsigned char>(c))) out += c;
|
||||||
|
}
|
||||||
|
return out;
|
||||||
|
}
|
||||||
|
|
||||||
|
static constexpr const char* BLOCK_START = "#---DROPSHELL-TOOL-START---";
|
||||||
|
static constexpr const char* BLOCK_END = "#---DROPSHELL-TOOL-END---";
|
||||||
|
|
||||||
BashrcEditor::BashrcEditor(const std::string& bashrcPath) : bashrcPath(bashrcPath) {}
|
BashrcEditor::BashrcEditor(const std::string& bashrcPath) : bashrcPath(bashrcPath) {}
|
||||||
|
|
||||||
bool BashrcEditor::hasSourceLine(const std::string& scriptPath) const {
|
bool BashrcEditor::hasSourceLine(const std::string& scriptPath) const {
|
||||||
// TODO: Implement file reading to check for source line
|
std::ifstream infile(bashrcPath);
|
||||||
|
if (!infile) return false;
|
||||||
|
std::string line;
|
||||||
|
bool inBlock = false;
|
||||||
|
const std::string blockStart = removeWhitespace(BLOCK_START);
|
||||||
|
const std::string blockEnd = removeWhitespace(BLOCK_END);
|
||||||
|
const std::string target = "source \"" + scriptPath + "\"";
|
||||||
|
while (std::getline(infile, line)) {
|
||||||
|
std::string trimmed = removeWhitespace(line);
|
||||||
|
if (trimmed == blockStart) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
}
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
void BashrcEditor::addSourceLine(const std::string& scriptPath) {
|
void BashrcEditor::addSourceLine(const std::string& scriptPath) {
|
||||||
// TODO: Implement file append logic
|
std::ifstream infile(bashrcPath);
|
||||||
|
std::vector<std::string> lines;
|
||||||
|
std::string line;
|
||||||
|
bool inBlock = false;
|
||||||
|
const std::string blockStart = removeWhitespace(BLOCK_START);
|
||||||
|
const std::string blockEnd = removeWhitespace(BLOCK_END);
|
||||||
|
while (std::getline(infile, line)) {
|
||||||
|
std::string trimmed = removeWhitespace(line);
|
||||||
|
if (trimmed == blockStart) {
|
||||||
|
inBlock = true;
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
if (trimmed == blockEnd) {
|
||||||
|
inBlock = false;
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
if (!inBlock) {
|
||||||
|
lines.push_back(line);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
infile.close();
|
||||||
|
lines.push_back(BLOCK_START);
|
||||||
|
lines.push_back("source \"" + scriptPath + "\"");
|
||||||
|
lines.push_back(BLOCK_END);
|
||||||
|
std::ofstream outfile(bashrcPath, std::ios::trunc);
|
||||||
|
for (const auto& l : lines) {
|
||||||
|
outfile << l << "\n";
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void BashrcEditor::removeSourceLine(const std::string& scriptPath) {
|
void BashrcEditor::removeSourceLine(const std::string& /*scriptPath*/) {
|
||||||
// TODO: Implement file removal logic
|
std::ifstream infile(bashrcPath);
|
||||||
|
std::vector<std::string> lines;
|
||||||
|
std::string line;
|
||||||
|
bool inBlock = false;
|
||||||
|
const std::string blockStart = removeWhitespace(BLOCK_START);
|
||||||
|
const std::string blockEnd = removeWhitespace(BLOCK_END);
|
||||||
|
while (std::getline(infile, line)) {
|
||||||
|
std::string trimmed = removeWhitespace(line);
|
||||||
|
if (trimmed == blockStart) {
|
||||||
|
inBlock = true;
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
if (trimmed == blockEnd) {
|
||||||
|
inBlock = false;
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
if (!inBlock) {
|
||||||
|
lines.push_back(line);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
infile.close();
|
||||||
|
std::ofstream outfile(bashrcPath, std::ios::trunc);
|
||||||
|
for (const auto& l : lines) {
|
||||||
|
outfile << l << "\n";
|
||||||
|
}
|
||||||
}
|
}
|
@ -4,8 +4,11 @@
|
|||||||
class BashrcEditor {
|
class BashrcEditor {
|
||||||
public:
|
public:
|
||||||
BashrcEditor(const std::string& bashrcPath);
|
BashrcEditor(const std::string& bashrcPath);
|
||||||
|
// Checks if the unique block with the source line exists
|
||||||
bool hasSourceLine(const std::string& scriptPath) const;
|
bool hasSourceLine(const std::string& scriptPath) const;
|
||||||
|
// Adds or updates the unique block with the given scriptPath
|
||||||
void addSourceLine(const std::string& scriptPath);
|
void addSourceLine(const std::string& scriptPath);
|
||||||
|
// Removes the unique block
|
||||||
void removeSourceLine(const std::string& scriptPath);
|
void removeSourceLine(const std::string& scriptPath);
|
||||||
private:
|
private:
|
||||||
std::string bashrcPath;
|
std::string bashrcPath;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user