poyka
Version:
A framework for interactively creating, extending and maintaining web application as never easier before while doing it in elegant design patterns.
137 lines • 6.43 kB
JavaScript
;
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
return new (P || (P = Promise))(function (resolve, reject) {
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
step((generator = generator.apply(thisArg, _arguments || [])).next());
});
};
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.PackMan = exports.CommonFileName = exports.PackageManifest = void 0;
const decova_filesystem_1 = require("decova-filesystem");
const decova_dotnet_developer_1 = require("decova-dotnet-developer");
const path_1 = __importDefault(require("path"));
const WorkspaceAugmenter_1 = require("./WorkspaceAugmenter");
const decova_terminal_1 = require("decova-terminal");
class PackageManifest {
constructor() {
this.name = '';
this.version = '';
this.liscense = '';
this.main = '';
this.module = '';
this.description = '';
this.sourceMap = true;
this.inlineSourceMap = false;
this.outDir = '';
this.scripts = [];
this.files = [];
this.keywords = [];
this.dependencies = new Object();
this.bin = new Object();
this.devDependencies = new Object();
}
get Scripts() {
return new decova_dotnet_developer_1.List(this.scripts);
}
get Files() {
return new decova_dotnet_developer_1.List(this.files);
}
get Keywords() {
return new decova_dotnet_developer_1.List(this.keywords);
}
get Dependencies() {
return decova_dotnet_developer_1.Dictionary.FromObjectProps(this.dependencies);
}
get Bin() {
return decova_dotnet_developer_1.Dictionary.FromObjectProps(this.bin);
}
get DevDependencies() {
return decova_dotnet_developer_1.Dictionary.FromObjectProps(this.devDependencies);
}
SaveAs(filePath) {
decova_dotnet_developer_1.Json.TrySave(filePath, this, true);
}
}
exports.PackageManifest = PackageManifest;
class DecovaSettings {
constructor() {
this.nodeProjectsContainers = [];
}
}
var CommonFileName;
(function (CommonFileName) {
CommonFileName["decovaSettings"] = "decova-settings.json";
CommonFileName["decovaSnippets"] = "decova-snippets.json";
CommonFileName["packgeJson"] = "package.json";
})(CommonFileName = exports.CommonFileName || (exports.CommonFileName = {}));
class PackMan {
constructor(PackageDir) {
this.PackageDir = PackageDir;
this._filePath = path_1.default.join(PackageDir, `package.json`);
if (new decova_filesystem_1.FileInfo(this._filePath).Exists() === false)
throw new decova_dotnet_developer_1.Exception(`Package file not found @ [${this._filePath}]`);
try {
this._manifest = decova_dotnet_developer_1.Json.Load(this._filePath);
}
catch (error) {
throw new decova_dotnet_developer_1.Exception(`Couldn't load configuration file`, error);
}
}
IncrementVersionPatch() {
return __awaiter(this, void 0, void 0, function* () {
try {
const version = new decova_dotnet_developer_1.SemVersion(this._manifest.version);
version.Patch++;
this._manifest.version = version.Text;
const packageFilePath = path_1.default.join(this.PackageDir, 'package.json');
decova_dotnet_developer_1.Json.TrySave(packageFilePath, this._manifest, true);
return version.Text;
}
catch (err) {
console.log(err);
throw err;
}
});
}
UpdateLeastVersionOnDependents() {
function readPackageJsonOfAllProjects() {
function readNodeProjectsContainers() {
const workSpace = decova_dotnet_developer_1.Process.CurrentWorkingDirectory.FullName;
const decovaSettingsFile = path_1.default.join(workSpace, WorkspaceAugmenter_1.FILE_NAME_DecovaSettings);
let decovaSettings = decova_dotnet_developer_1.Json.Load(decovaSettingsFile);
return new decova_dotnet_developer_1.List(decovaSettings.nodeProjectsContainers);
}
const output = new decova_dotnet_developer_1.List();
for (let container of readNodeProjectsContainers().Items) {
new decova_filesystem_1.DirectoryInfo(container).GetDirectories().Foreach(workSpace => {
const dependentPackageJsonManifestPath = path_1.default.join(workSpace.FullName, CommonFileName.packgeJson);
output.Add(new decova_filesystem_1.FileInfo(dependentPackageJsonManifestPath));
});
}
return output;
}
const updateVersion = (file) => {
let potentialDpendentConfig = decova_dotnet_developer_1.Json.Load(file.FullName);
if (potentialDpendentConfig.Dependencies.Contains(this._manifest.name)) {
potentialDpendentConfig.Dependencies.Set(this._manifest.name, `^${this._manifest.version}`);
potentialDpendentConfig.SaveAs(file.FullName);
decova_terminal_1.CurrentTerminal.DisplayInfo(`${this._manifest.name}:${this._manifest.version} was updated as the least version for: [${potentialDpendentConfig.name}]`);
}
};
const allDependentManifests = readPackageJsonOfAllProjects();
if (allDependentManifests.Count == 0) {
decova_terminal_1.CurrentTerminal.DisplayInfo(`No dependents found for ${this._manifest.name}`);
}
else {
allDependentManifests.Foreach(f => updateVersion(f));
}
}
}
exports.PackMan = PackMan;
//# sourceMappingURL=PackageMan.js.map