Compare commits

..

No commits in common. "master" and "v1.9.106" have entirely different histories.

54 changed files with 1921 additions and 5336 deletions

3
.gitignore vendored
View File

@ -3,6 +3,7 @@
# artifacts # artifacts
coverage/ coverage/
public/ public/
pages/
# installs # installs
node_modules/ node_modules/
@ -16,4 +17,4 @@ node_modules/
dist/ dist/
dist_*/ dist_*/
#------# custom # custom

View File

@ -1 +0,0 @@
{}

View File

@ -6,8 +6,8 @@ on:
- '**' - '**'
env: env:
IMAGE: code.foss.global/host.today/ht-docker-node:npmci IMAGE: code.foss.global/hosttoday/ht-docker-node:npmci
NPMCI_COMPUTED_REPOURL: https://${-{gitea.repository_owner}-}:${-{secrets.GITEA_TOKEN}-}@{{module.githost}}/${-{gitea.repository}-}.git NPMCI_COMPUTED_REPOURL: https://${-{gitea.repository_owner}-}:${-{secrets.GITEA_TOKEN}-}@{{git.host}}/${-{gitea.repository}-}.git
NPMCI_TOKEN_NPM: ${-{secrets.NPMCI_TOKEN_NPM}-} NPMCI_TOKEN_NPM: ${-{secrets.NPMCI_TOKEN_NPM}-}
NPMCI_TOKEN_NPM2: ${-{secrets.NPMCI_TOKEN_NPM2}-} NPMCI_TOKEN_NPM2: ${-{secrets.NPMCI_TOKEN_NPM2}-}
NPMCI_GIT_GITHUBTOKEN: ${-{secrets.NPMCI_GIT_GITHUBTOKEN}-} NPMCI_GIT_GITHUBTOKEN: ${-{secrets.NPMCI_GIT_GITHUBTOKEN}-}

View File

@ -6,8 +6,8 @@ on:
- '*' - '*'
env: env:
IMAGE: code.foss.global/host.today/ht-docker-node:npmci IMAGE: code.foss.global/hosttoday/ht-docker-node:npmci
NPMCI_COMPUTED_REPOURL: https://${-{gitea.repository_owner}-}:${-{secrets.GITEA_TOKEN}-}@{{module.githost}}/${-{gitea.repository}-}.git NPMCI_COMPUTED_REPOURL: https://${-{gitea.repository_owner}-}:${-{secrets.GITEA_TOKEN}-}@{{git.host}}/${-{gitea.repository}-}.git
NPMCI_TOKEN_NPM: ${-{secrets.NPMCI_TOKEN_NPM}-} NPMCI_TOKEN_NPM: ${-{secrets.NPMCI_TOKEN_NPM}-}
NPMCI_TOKEN_NPM2: ${-{secrets.NPMCI_TOKEN_NPM2}-} NPMCI_TOKEN_NPM2: ${-{secrets.NPMCI_TOKEN_NPM2}-}
NPMCI_GIT_GITHUBTOKEN: ${-{secrets.NPMCI_GIT_GITHUBTOKEN}-} NPMCI_GIT_GITHUBTOKEN: ${-{secrets.NPMCI_GIT_GITHUBTOKEN}-}

View File

@ -7,7 +7,7 @@ on:
env: env:
IMAGE: code.foss.global/hosttoday/ht-docker-node:npmci IMAGE: code.foss.global/hosttoday/ht-docker-node:npmci
NPMCI_COMPUTED_REPOURL: https://${-{gitea.repository_owner}-}:${-{secrets.GITEA_TOKEN}-}@{{module.githost}}/${-{gitea.repository}-}.git NPMCI_COMPUTED_REPOURL: https://${-{gitea.repository_owner}-}:${-{secrets.GITEA_TOKEN}-}@{{git.host}}/${-{gitea.repository}-}.git
NPMCI_TOKEN_NPM: ${-{secrets.NPMCI_TOKEN_NPM}-} NPMCI_TOKEN_NPM: ${-{secrets.NPMCI_TOKEN_NPM}-}
NPMCI_TOKEN_NPM2: ${-{secrets.NPMCI_TOKEN_NPM2}-} NPMCI_TOKEN_NPM2: ${-{secrets.NPMCI_TOKEN_NPM2}-}
NPMCI_GIT_GITHUBTOKEN: ${-{secrets.NPMCI_GIT_GITHUBTOKEN}-} NPMCI_GIT_GITHUBTOKEN: ${-{secrets.NPMCI_GIT_GITHUBTOKEN}-}

View File

@ -7,7 +7,7 @@ on:
env: env:
IMAGE: code.foss.global/hosttoday/ht-docker-node:npmci IMAGE: code.foss.global/hosttoday/ht-docker-node:npmci
NPMCI_COMPUTED_REPOURL: https://${-{gitea.repository_owner}-}:${-{secrets.GITEA_TOKEN}-}@{{module.githost}}/${-{gitea.repository}-}.git NPMCI_COMPUTED_REPOURL: https://${-{gitea.repository_owner}-}:${-{secrets.GITEA_TOKEN}-}@{{git.host}}/${-{gitea.repository}-}.git
NPMCI_TOKEN_NPM: ${-{secrets.NPMCI_TOKEN_NPM}-} NPMCI_TOKEN_NPM: ${-{secrets.NPMCI_TOKEN_NPM}-}
NPMCI_TOKEN_NPM2: ${-{secrets.NPMCI_TOKEN_NPM2}-} NPMCI_TOKEN_NPM2: ${-{secrets.NPMCI_TOKEN_NPM2}-}
NPMCI_GIT_GITHUBTOKEN: ${-{secrets.NPMCI_GIT_GITHUBTOKEN}-} NPMCI_GIT_GITHUBTOKEN: ${-{secrets.NPMCI_GIT_GITHUBTOKEN}-}

View File

@ -7,7 +7,7 @@ on:
env: env:
IMAGE: code.foss.global/hosttoday/ht-docker-node:npmci IMAGE: code.foss.global/hosttoday/ht-docker-node:npmci
NPMCI_COMPUTED_REPOURL: https://${-{gitea.repository_owner}-}:${-{secrets.GITEA_TOKEN}-}@{{module.githost}}/${-{gitea.repository}-}.git NPMCI_COMPUTED_REPOURL: https://${-{gitea.repository_owner}-}:${-{secrets.GITEA_TOKEN}-}@{{gi.host}}/${-{gitea.repository}-}.git
NPMCI_TOKEN_NPM: ${-{secrets.NPMCI_TOKEN_NPM}-} NPMCI_TOKEN_NPM: ${-{secrets.NPMCI_TOKEN_NPM}-}
NPMCI_TOKEN_NPM2: ${-{secrets.NPMCI_TOKEN_NPM2}-} NPMCI_TOKEN_NPM2: ${-{secrets.NPMCI_TOKEN_NPM2}-}
NPMCI_GIT_GITHUBTOKEN: ${-{secrets.NPMCI_GIT_GITHUBTOKEN}-} NPMCI_GIT_GITHUBTOKEN: ${-{secrets.NPMCI_GIT_GITHUBTOKEN}-}

View File

@ -7,7 +7,7 @@ on:
env: env:
IMAGE: code.foss.global/hosttoday/ht-docker-node:npmci IMAGE: code.foss.global/hosttoday/ht-docker-node:npmci
NPMCI_COMPUTED_REPOURL: https://${-{gitea.repository_owner}-}:${-{secrets.GITEA_TOKEN}-}@{{module.githost}}/${-{gitea.repository}-}.git NPMCI_COMPUTED_REPOURL: https://${-{gitea.repository_owner}-}:${-{secrets.GITEA_TOKEN}-}@{{git.host}}/${-{gitea.repository}-}.git
NPMCI_TOKEN_NPM: ${-{secrets.NPMCI_TOKEN_NPM}-} NPMCI_TOKEN_NPM: ${-{secrets.NPMCI_TOKEN_NPM}-}
NPMCI_TOKEN_NPM2: ${-{secrets.NPMCI_TOKEN_NPM2}-} NPMCI_TOKEN_NPM2: ${-{secrets.NPMCI_TOKEN_NPM2}-}
NPMCI_GIT_GITHUBTOKEN: ${-{secrets.NPMCI_GIT_GITHUBTOKEN}-} NPMCI_GIT_GITHUBTOKEN: ${-{secrets.NPMCI_GIT_GITHUBTOKEN}-}
@ -89,8 +89,8 @@ jobs:
npmci docker login npmci docker login
npmci docker build npmci docker build
npmci docker test npmci docker test
# npmci docker push {{module.githost}} # npmci docker push {{git.host}}
npmci docker push {{module.githost}} npmci docker push {{git.host}}
metadata: metadata:
needs: test needs: test

View File

@ -1,6 +1,6 @@
# gitzone dockerfile_service # gitzone dockerfile_service
## STAGE 1 // BUILD ## STAGE 1 // BUILD
FROM code.foss.global/host.today/ht-docker-node:npmci as node1 FROM code.foss.global/hosttoday/ht-docker-node:npmci as node1
COPY ./ /app COPY ./ /app
WORKDIR /app WORKDIR /app
ARG NPMCI_TOKEN_NPM2 ARG NPMCI_TOKEN_NPM2
@ -12,7 +12,7 @@ RUN pnpm run build
# gitzone dockerfile_service # gitzone dockerfile_service
## STAGE 2 // install production ## STAGE 2 // install production
FROM code.foss.global/host.today/ht-docker-node:npmci as node2 FROM code.foss.global/hosttoday/ht-docker-node:npmci as node2
WORKDIR /app WORKDIR /app
COPY --from=node1 /app /app COPY --from=node1 /app /app
RUN rm -rf .pnpm-store RUN rm -rf .pnpm-store
@ -24,7 +24,7 @@ RUN rm -rf node_modules/ && pnpm install --prod
## STAGE 3 // rebuild dependencies for alpine ## STAGE 3 // rebuild dependencies for alpine
FROM code.foss.global/host.today/ht-docker-node:alpine_npmci as node3 FROM code.foss.global/hosttoday/ht-docker-node:alpinenpmci as node3
WORKDIR /app WORKDIR /app
COPY --from=node2 /app /app COPY --from=node2 /app /app
ARG NPMCI_TOKEN_NPM2 ARG NPMCI_TOKEN_NPM2
@ -34,7 +34,7 @@ RUN pnpm config set store-dir .pnpm-store
RUN pnpm rebuild -r RUN pnpm rebuild -r
## STAGE 4 // the final production image with all dependencies in place ## STAGE 4 // the final production image with all dependencies in place
FROM code.foss.global/host.today/ht-docker-node:alpine as node4 FROM code.foss.global/hosttoday/ht-docker-node:alpine as node4
WORKDIR /app WORKDIR /app
COPY --from=node3 /app /app COPY --from=node3 /app /app

View File

@ -6,6 +6,7 @@ fileName: .gitignore
# artifacts # artifacts
coverage/ coverage/
public/ public/
pages/
# installs # installs
node_modules/ node_modules/
@ -19,4 +20,4 @@ node_modules/
dist/ dist/
dist_*/ dist_*/
#------# custom # custom

View File

@ -1,8 +0,0 @@
---
fileName: paths.ts
---
import * as plugins from './plugins.js';
export const packageDir = plugins.path.join(
plugins.smartpath.get.dirnameFromImportMetaUrl(import.meta.url),
'../'
);

View File

@ -1,12 +0,0 @@
---
fileName: plugins.ts
---
// native scope
import * as path from 'path';
export { path };
// @push.rocks scope
import * as smartpath from '@push.rocks/smartpath';
export { smartpath };

View File

@ -0,0 +1,7 @@
---
fileName: {{module.name}}.plugins.ts
---
const removeme = {};
export {
removeme
}

View File

@ -21,14 +21,14 @@ fileName: package.json
"@git.zone/tsrun": "^1.2.8", "@git.zone/tsrun": "^1.2.8",
"@git.zone/tstest": "^1.0.28", "@git.zone/tstest": "^1.0.28",
"@git.zone/tswatch": "^2.0.1", "@git.zone/tswatch": "^2.0.1",
"@push.rocks/tapbundle": "^5.5.4" "@push.rocks/tapbundle": "^5.0.3"
}, },
"dependencies": { "dependencies": {
"@api.global/typedserver": "^3.0.53", "@api.global/typedserver": "^1.0.24",
"@push.rocks/projectinfo": "^5.0.1", "@push.rocks/projectinfo": "^5.0.1",
"@push.rocks/qenv": "^6.1.0", "@push.rocks/qenv": "^4.0.10",
"@push.rocks/smartdata": "^5.0.7", "@push.rocks/smartdata": "^5.0.7",
"@push.rocks/smartpath": "^5.0.5", "@push.rocks/smartpath": "^5.0.5",
"@push.rocks/smartstate": "^2.0.0" "@push.rocks/smartstate": "^2.0.0"
}, }
} }

View File

@ -1,8 +1,8 @@
--- ---
fileName: classes.{{module.name}}db.ts fileName: {{module.name}}.classes.{{module.name}}db.ts
--- ---
import * as plugins from './{{module.name}}.plugins.js'; import * as plugins from './{{module.name}}.plugins.js';
import { {{module.name}} } from './classes.{{module.name}}.js'; import { {{module.name}} } from './{{module.name}}.classes.{{module.name}}.js';

View File

@ -1,9 +1,9 @@
--- ---
fileName: classes.{{module.name}}.ts fileName: {{module.name}}.classes.{{module.name}}.ts
--- ---
import * as plugins from './{{module.name}}.plugins.js'; import * as plugins from './{{module.name}}.plugins.js';
import * as paths from './{{module.name}}.paths.js'; import * as paths from './{{module.name}}.paths.js';
import { {{module.name}}Db } from './classes.{{module.name}}db.js' import { {{module.name}}Db } from './{{module.name}}.db.js'
export class {{module.name}} { export class {{module.name}} {
public projectinfo: plugins.projectinfo.ProjectInfo; public projectinfo: plugins.projectinfo.ProjectInfo;

View File

@ -15,7 +15,8 @@ export {
loleServiceserver loleServiceserver
} }
// @push.rocks scope // pushrocks scope
// pushrocks scope
import * as projectinfo from '@push.rocks/projectinfo'; import * as projectinfo from '@push.rocks/projectinfo';
import * as qenv from '@push.rocks/qenv'; import * as qenv from '@push.rocks/qenv';
import * as smartdata from '@push.rocks/smartdata'; import * as smartdata from '@push.rocks/smartdata';

View File

@ -1,2 +0,0 @@
runafter:
- gitzone format

View File

@ -1,7 +1,6 @@
{ {
"compilerOptions": { "compilerOptions": {
"experimentalDecorators": true, "experimentalDecorators": true,
"emitDecoratorMetadata": true,
"useDefineForClassFields": false, "useDefineForClassFields": false,
"target": "ES2022", "target": "ES2022",
"module": "NodeNext", "module": "NodeNext",

View File

@ -1,2 +0,0 @@
export * from './page2.js';
export * from './page1.js';

View File

@ -1,5 +0,0 @@
import { html } from "@design.estate/dees-element";
export const page1 = () => html`
<first-element></first-element>
`;

View File

@ -1,5 +0,0 @@
import { html } from "@design.estate/dees-element";
export const page2 = () => html`
<first-element></first-element>
`;

View File

@ -18,12 +18,12 @@ fileName: package.json
"author": "{{author.name}}", "author": "{{author.name}}",
"license": "{{module.license}}", "license": "{{module.license}}",
"dependencies": { "dependencies": {
"@api.global/typedserver": "^3.0.51", "@api.global/typedserver": "^1.0.16",
"@consentsoftware_private/catalog": "^1.0.73", "@consentsoftware_private/catalog": "^1.0.73",
"@design.estate/dees-domtools": "^2.0.23", "@design.estate/dees-domtools": "^2.0.23",
"@design.estate/dees-element": "^2.0.15", "@design.estate/dees-element": "^2.0.15",
"@push.rocks/qenv": "^6.0.5", "@push.rocks/smartlog": "^2.0.1",
"@push.rocks/smartlog": "^3.0.7", "@push.rocks/qenv": "^5.0.2",
"@push.rocks/smartpath": "^5.0.5", "@push.rocks/smartpath": "^5.0.5",
"@push.rocks/smartstate": "^2.0.0", "@push.rocks/smartstate": "^2.0.0",
"@push.rocks/websetup": "^3.0.15" "@push.rocks/websetup": "^3.0.15"

View File

@ -3,10 +3,10 @@ import * as paths from './ffb.paths.js';
export const runCli = async () => { export const runCli = async () => {
const serviceQenv = new plugins.qenv.Qenv('./', './.nogit', false); const serviceQenv = new plugins.qenv.Qenv('./', './.nogit', false);
const websiteServer = new plugins.typedserver.utilityservers.UtilityWebsiteServer({ const websiteServer = new plugins.loleWebsiteserver.LoleWebsiteServer({
feedMetadata: null, feedMetadata: null,
domain: '{{module.projectDomain}}', domain: '{{module.projectDomain}}',
serveDir: paths.distWebDir, serveDir: paths.distWebDir
}); });
await websiteServer.start(); await websiteServer.start();
}; };

View File

@ -6,7 +6,7 @@ import {
cssManager, cssManager,
unsafeCSS, unsafeCSS,
css, css,
type TemplateResult, TemplateResult,
} from '@design.estate/dees-element'; } from '@design.estate/dees-element';
@customElement('default-header') @customElement('default-header')

View File

@ -45,7 +45,7 @@ const run = async () => {
}, },
}); });
const serviceWorker = serviceworker.getServiceworkerClient(); const serviceWorker = serviceworker.getServiceWorker();
const mainTemplate = html` const mainTemplate = html`
<style> <style>

View File

@ -1,283 +1,35 @@
# Changelog # Changelog
## 2025-04-15 - 1.15.3 - fix(deps) ## 1.9.106 - fix(dependencies): Updated @git.zone/tsdoc dependency from 1.2.2 to 1.3.0 in package.json and pnpm-lock.yaml.
update dependency versions and improve website template variable handling
- Bumped @git.zone/tsbuild from ^2.2.1 to ^2.3.2 and @types/node to ^22.14.1 ## 1.9.99 - Core Updates
- Upgraded @push.rocks/smartscaf from ^4.0.15 to ^4.0.16 and prettier from ^3.5.2 to ^3.5.3 - update core components
- Refactored website template update to correctly supply variables with added logging
## 2025-04-15 - 1.15.2 - fix(website_update) ## 1.9.98 - Core Updates
Await supplyVariables call in website update template - update core components
- Changed website template update to properly await the supplyVariables method ## 1.9.97 - Core Updates
- Ensured asynchronous consistency in updating website template variables - update core components
## 2025-04-15 - 1.15.1 - fix(cli) ## 1.9.96 - Core Updates
Refresh internal CLI tooling and configuration for consistency. - update core components
## 1.9.95 - Core Updates
- update core components
## 2025-04-15 - 1.15.0 - feat(config/template) ## 1.9.105 - fix(changelog): Remove placeholder entries and adjust formatting in changelog.
Add assetbrokerUrl and legalUrl fields to module config and update website template to supply these values
- Added assetbrokerUrl and legalUrl properties in ts/classes.gitzoneconfig.ts ## 1.9.104 - Fix changelog and format adjustments
- Updated ts/mod_format/format.templates.ts to pass assetbrokerUrl and legalUrl to website template - Fix changelog to remove placeholder entries and adjust formatting
## 2025-04-15 - 1.14.1 - fix(package.json) ## 1.9.103 - Logger Optimization
Add packageManager field to specify pnpm version for consistent package management - Optimize logger instantiation and configuration
- Inserted packageManager property in package.json with pnpm version info to ensure reproducible dependency installs ## 1.9.102 - Metadata Accuracy
- Ensure accurate project metadata in package.json
## 2025-04-15 - 1.14.0 - feat(tsconfig_update) ## 1.9.101 - Dependency Update
Add runafter directive to trigger gitzone format after tsconfig update - Updated @git.zone/tsdoc dependency version to ^1.2.2 in package.json and pnpm-lock.yaml
- Added runafter configuration in assets/templates/tsconfig_update/.smartscaf.yml to automate formatting task ## 1.9.100 - Changelog Writing Fix
- Fix variable reassignment issue in changelog writing step
## 2025-03-07 - 1.13.1 - fix(cli)
Improve commit message logging
- Updated logging to display recommended next commit details.
- Enabled interactive prompt for choosing commit type and scope.
## 2025-02-28 - 1.13.0 - feat(templates)
Updated and added new TypeScript template files for npm projects
- Added new paths.ts and plugins.ts template files for npm projects.
- Removed outdated some.plugins.ts template file.
## 2025-02-25 - 1.12.8 - fix(metadata)
Updated package and npmextra json description and keywords for enhanced development workflow clarity
- Updated the description in package.json to focus on project setup and management.
- Aligned the keywords in both package.json and npmextra.json to include more relevant terms such as gitzone utilities, template management, and CI/CD.
## 2025-02-25 - 1.12.7 - fix(meta)
Fix issues in project metadata and configuration.
- Updated package metadata to ensure accurate project description and licensing.
- Ensured npm access level configuration consistency within npmextra.json.
## 2025-02-25 - 1.12.7 - fix(ci)
Updated dependencies and added CI/CD workflows.
- Updated several dependencies in package.json for compatibility and security.
- Added default GitHub and GitLab CI/CD workflow files to the test directory.
- Introduced a .gitignore file to exclude certain directories and files.
- Ensured consistent formatting with Prettier and TypeScript configurations.
## 2025-01-29 - 1.12.6 - fix(project)
Minor fixes and cleanup
- Removed outdated pages/ directory entry in .gitignore.
- Adjusted Docker module files to include proper newlines.
- Updated TypeScript configuration for modular paths.
- Fixed formatting issues across various TypeScript files.
## 2025-01-29 - 1.12.5 - fix(cli)
Initial implementation of CLI utility with project management features
- Integration of various plugins for logging, command-line interactions, and project management.
- Setup CLI commands for project initialization, updating, formatting, and more.
- Implement commands for packaging, versioning, and deprecating npm packages.
## 2025-01-29 - 1.12.2 - fix(format)
Add overrides for peek-readable in package.json formatting
- Added a URL correction in the packageJson repository information.
- Introduced support for pnpm overrides by including an `overrides.json` file.
## 2025-01-18 - 1.12.1 - fix(dependencies)
Update various package dependencies and Dockerfile base image
- Updated Dockerfile base image from 'alpinenpmci' to 'alpine_npmci'.
- Upgraded @git.zone/tsbuild, @git.zone/tsrun, @git.zone/tsdoc, and other dependencies to their latest versions.
## 2025-01-17 - 1.12.0 - feat(build)
Update TypeScript configuration to support emit decorator metadata
- Added emitDecoratorMetadata to the tsconfig.json template in assets/templates/tsconfig_update.
## 2025-01-08 - 1.11.0 - feat(cli)
Add Docker command for cleaning up Docker system and extend deprecation command for multiple registries
- Added a new command 'docker' to handle Docker system cleanup operations.
- Improved the 'deprecate' command to support deprecating packages across multiple npm registry URLs.
## 2025-01-01 - 1.10.10 - fix(templates)
Corrected typo in template file comment
- Fixed repeated comment in the template file for services under 'assets/templates/service/ts/some.plugins.ts'.
## 2025-01-01 - 1.10.9 - fix(templates)
Correct template file paths and organization for service projects
- Moved 'some.classes.some.ts' to 'classes.some.ts'
- Moved 'some.classes.some.db.ts' to 'classes.some.db.ts'
- Resolved incorrect import paths in service templates
## 2025-01-01 - 1.10.8 - fix(assets/templates)
Update CI template configurations to use module.githost
- Replaced occurrences of {{git.host}} with {{module.githost}} in CI workflow files
- Updated package dependencies for service template
## 2024-12-26 - 1.10.7 - fix(assets)
Correct URLs in templates and fix TypeScript declaration
- Updated incorrect URLs in Dockerfile templates to 'host.today'.
- Fixed type declaration for 'TemplateResult' in header.ts file.
## 2024-12-08 - 1.10.6 - fix(ci)
Corrected Docker image URL in CI templates
- Updated Docker image URL from 'code.foss.global/hosttoday' to 'code.foss.global/host.today' in default_nottags.yaml and default_tags.yaml.
- Adjusted gitignore template to include a custom section delineation.
## 2024-12-02 - 1.10.5 - fix(assets)
Update .gitignore template to remove pages directory
- Removed 'pages/' from the ignored directories in the .gitignore template.
## 2024-11-05 - 1.10.4 - fix(mod_format)
Correct file extension for TypeScript path configuration
- Fixed the TypeScript configuration to use correct file extensions for module subdirectories.
## 2024-10-27 - 1.10.3 - fix(mod_format)
Reorder TypeScript formatting steps in mod_format module
- Moved TypeScript configuration formatting earlier in the sequence for better logical consistency.
## 2024-10-27 - 1.10.2 - fix(format)
Add logging for tsconfig.json formatting
- Added an info log message for tsconfig.json formatting in format.tsconfig.ts.
## 2024-10-27 - 1.10.1 - fix(format)
Fixed async issue in tsconfig module lookup and corrected property access
## 2024-10-27 - 1.10.0 - feat(mod_format)
Add support for tsconfig.json formatting
- Added a new script to format tsconfig.json.
- Updated package.json to include `@git.zone/tspublish` as a dependency.
## 2024-10-23 - 1.9.126 - fix(format)
Remove redundant package.json property checks
- Removed property checks for `main`, `typings`, and `browserslist` from format.packagejson.ts
- This change streamlines the formatting process by removing unnecessary exits
## 2024-09-29 - 1.9.125 - fix(cli)
Fix package version configuration and formatting issues
- Updated metadata fields in package.json (repository URL, bugs URL, and homepage).
- Ensured presence and correctness of essential fields in package.json (main, typings, files, scripts, etc.).
- Added missing Prettier default TypeScript and Markdown configurations.
## 2024-09-27 - 1.9.124 - fix(cli)
Ensured proper existence and initialization of readme files
- Ensured readme.md and readme.hints.md files are created and initialized if they do not exist.
## 2024-09-27 - 1.9.123 - fix(core)
No changes detected
## 2024-09-27 - 1.9.123 - fix(core)
Update dependencies and improve build configurations
- Updated several dependencies in package.json for better compatibility
- Changed typedserver dependency version in website template
- Adjusted website server and service worker in templates
- Added security and test workflows for Gitea repositories
- Added and configured .gitignore, .npmrc, .vscode settings for the project
- Provided initial structure for readme and readme hints
## 2024-06-24 - 1.9.122 - fix(mod_commit)
Update package.json dependencies: @git.zone/tsdoc and @push.rocks/smartpromise to latest versions.
- - Updated @git.zone/tsdoc to ^1.3.12
- - Updated @push.rocks/smartfile to ^11.0.21
## 2024-06-23 - 1.9.121 - fix(mod_commit)
Fix changelog template rendering by removing extra new line when no version details are provided.
- Update package.json dependencies: @git.zone/tsdoc and @push.rocks/smartpromise to latest versions.
## 2024-06-23 - 1.9.120 - fix(mod_commit)
Handle edge case for empty version details in changelog formatting
- Added check for the length of the recommendedNextVersionDetails array
- Ensure no extra newline in changelog if there are no version details
## 2024-06-23 - 1.9.119 - fix(dependencies)
Update @git.zone/tsdoc to v1.3.8
- Updated @git.zone/tsdoc from v1.3.7 to v1.3.8 in package.json
## 2024-06-23 - 1.9.118 - fix(dependencies)
Update @git.zone/tsdoc to version 1.3.7
- Bump @git.zone/tsdoc from 1.3.6 to 1.3.7 in both package.json and pnpm-lock.yaml
## 2024-06-23 - 1.9.117 - fix(dependencies)
Update @git.zone/tsdoc dependency to v1.3.6
- Updated @git.zone/tsdoc version from 1.3.5 to 1.3.6 in package.json
- Updated pnpm-lock.yaml to reflect the new version of @git.zone/tsdoc
## 2024-06-23 - 1.9.116 - fix(dependencies)
Update @git.zone/tsdoc to version 1.3.5
- Updated the @git.zone/tsdoc dependency in package.json and pnpm-lock.yaml from version 1.3.4 to 1.3.5
- Removed the outdated changelog.md file.
## 2024-06-23 - 1.9.114 - fix(format)
Fixed formatting issues across multiple TypeScript files.
## 2024-06-23 - 1.9.113 - fix(mod_commit)
Remove extra new lines in changelog.
## 2024-06-23 - 1.9.112 - fix(core)
Update changelog formatting and remove outdated entries.
## 2024-06-23 - 1.9.111 - fix(changelog)
Remove outdated changelog entries and update formatting.
## 2024-06-23 - 1.9.110 - fix(dependencies)
Update @git.zone/tsdoc to version 1.3.4.
## 2024-06-23 - 1.9.109 - fix(changelog)
Remove outdated entries and adjust formatting in changelog.
## 2024-06-23 - 1.9.108 - fix(dependencies)
Update @git.zone/tsdoc dependency to version 1.3.2.
## 2024-06-23 - 1.9.107 - fix(changelog)
Remove placeholder entries and adjust formatting in changelog.
## 2024-06-23 - 1.9.106 - fix(dependencies)
Updated @git.zone/tsdoc from version 1.3.0 to 1.3.1.
## 2024-06-23 - 1.9.105 - fix(dependencies)
Updated @git.zone/tsdoc dependency from 1.2.2 to 1.3.0 in package.json and pnpm-lock.yaml.
## 2024-06-23 - 1.9.104 - fix(changelog)
Remove placeholder entries and adjust formatting in changelog.
## 2024-06-23 - 1.9.103 - fix(changelog)
Fix changelog to remove placeholder entries and adjust formatting.
## 2024-06-23 - 1.9.102 - fix(logging)
Optimize logger instantiation and configuration.
## 2024-06-23 - 1.9.101 - fix(metadata)
Ensure accurate project metadata in package.json.
## 2024-06-23 - 1.9.100 - fix(dependencies)
Updated @git.zone/tsdoc dependency version to ^1.2.2 in package.json and pnpm-lock.yaml.
## 2024-06-23 - 1.9.99 - fix(mod_commit)
Fix variable reassignment issue in changelog writing step.

View File

@ -10,26 +10,21 @@
"githost": "gitlab.com", "githost": "gitlab.com",
"gitscope": "gitzone/private", "gitscope": "gitzone/private",
"gitrepo": "gitzone", "gitrepo": "gitzone",
"description": "A comprehensive CLI tool for enhancing and managing local development workflows with gitzone utilities, focusing on project setup, version control, code formatting, and template management.", "description": "A CLI toolbelt to streamline local development cycles by using various gitzone utilities.",
"npmPackagename": "@gitzone_private/gitzone", "npmPackagename": "@gitzone_private/gitzone",
"license": "MIT", "license": "MIT",
"keywords": [ "keywords": [
"CLI", "CLI",
"local development", "development",
"gitzone utilities", "git",
"project setup", "npm",
"version control",
"code formatting",
"template management",
"npm packages",
"TypeScript", "TypeScript",
"automation", "automation",
"commit management", "project setup",
"code formatting",
"template creation", "template creation",
"meta project management", "logging",
"sync", "meta project management"
"Docker",
"CI/CD"
] ]
} }
}, },

View File

@ -1,8 +1,8 @@
{ {
"name": "@git.zone/cli", "name": "@git.zone/cli",
"private": false, "private": false,
"version": "1.15.3", "version": "1.9.106",
"description": "A comprehensive CLI tool for enhancing and managing local development workflows with gitzone utilities, focusing on project setup, version control, code formatting, and template management.", "description": "A CLI toolbelt to streamline local development cycles by using various gitzone utilities.",
"main": "dist_ts/index.ts", "main": "dist_ts/index.ts",
"typings": "dist_ts/index.d.ts", "typings": "dist_ts/index.d.ts",
"type": "module", "type": "module",
@ -30,51 +30,45 @@
}, },
"repository": { "repository": {
"type": "git", "type": "git",
"url": "https://gitlab.com/gitzone/private/gitzone.git" "url": "https://code.foss.global/git.zone/cli.git"
}, },
"keywords": [ "keywords": [
"CLI", "CLI",
"local development", "development",
"gitzone utilities", "git",
"project setup", "npm",
"version control",
"code formatting",
"template management",
"npm packages",
"TypeScript", "TypeScript",
"automation", "automation",
"commit management", "project setup",
"code formatting",
"template creation", "template creation",
"meta project management", "logging",
"sync", "meta project management"
"Docker",
"CI/CD"
], ],
"author": "Task Venture Capital GmbH", "author": "Task Venture Capital GmbH",
"license": "MIT", "license": "MIT",
"bugs": { "bugs": {
"url": "https://gitlab.com/gitzone/private/gitzone/issues" "url": "https://code.foss.global/git.zone/cli/issues"
}, },
"homepage": "https://gitlab.com/gitzone/private/gitzone#readme", "homepage": "https://pages.foss.global/git.zone/cli",
"devDependencies": { "devDependencies": {
"@git.zone/tsbuild": "^2.3.2", "@git.zone/tsbuild": "^2.1.80",
"@git.zone/tsrun": "^1.3.3", "@git.zone/tsrun": "^1.2.46",
"@git.zone/tstest": "^1.0.96", "@git.zone/tstest": "^1.0.90",
"@types/node": "^22.14.1" "@types/node": "^20.14.8"
}, },
"dependencies": { "dependencies": {
"@git.zone/tsdoc": "^1.4.4", "@git.zone/tsdoc": "^1.3.0",
"@git.zone/tspublish": "^1.9.1",
"@push.rocks/commitinfo": "^1.0.12", "@push.rocks/commitinfo": "^1.0.12",
"@push.rocks/early": "^4.0.4", "@push.rocks/early": "^4.0.4",
"@push.rocks/gulp-function": "^3.0.7", "@push.rocks/gulp-function": "^3.0.7",
"@push.rocks/lik": "^6.0.15", "@push.rocks/lik": "^6.0.15",
"@push.rocks/npmextra": "^5.1.2", "@push.rocks/npmextra": "^5.0.23",
"@push.rocks/projectinfo": "^5.0.2", "@push.rocks/projectinfo": "^5.0.2",
"@push.rocks/smartchok": "^1.0.34", "@push.rocks/smartchok": "^1.0.34",
"@push.rocks/smartcli": "^4.0.11", "@push.rocks/smartcli": "^4.0.11",
"@push.rocks/smartdelay": "^3.0.5", "@push.rocks/smartdelay": "^3.0.5",
"@push.rocks/smartfile": "^11.2.0", "@push.rocks/smartfile": "^11.0.20",
"@push.rocks/smartgulp": "^3.0.4", "@push.rocks/smartgulp": "^3.0.4",
"@push.rocks/smartinteract": "^2.0.15", "@push.rocks/smartinteract": "^2.0.15",
"@push.rocks/smartjson": "^5.0.20", "@push.rocks/smartjson": "^5.0.20",
@ -86,14 +80,14 @@
"@push.rocks/smartobject": "^1.0.12", "@push.rocks/smartobject": "^1.0.12",
"@push.rocks/smartopen": "^2.0.0", "@push.rocks/smartopen": "^2.0.0",
"@push.rocks/smartpath": "^5.0.18", "@push.rocks/smartpath": "^5.0.18",
"@push.rocks/smartpromise": "^4.2.3", "@push.rocks/smartpromise": "^4.0.3",
"@push.rocks/smartscaf": "^4.0.16", "@push.rocks/smartscaf": "^4.0.15",
"@push.rocks/smartshell": "^3.2.3", "@push.rocks/smartshell": "^3.0.5",
"@push.rocks/smartstream": "^3.2.5", "@push.rocks/smartstream": "^3.0.44",
"@push.rocks/smartunique": "^3.0.9", "@push.rocks/smartunique": "^3.0.9",
"@push.rocks/smartupdate": "^2.0.6", "@push.rocks/smartupdate": "^2.0.6",
"@types/through2": "^2.0.41", "@types/through2": "^2.0.41",
"prettier": "^3.5.3", "prettier": "^3.3.2",
"through2": "^4.0.2" "through2": "^4.0.2"
}, },
"files": [ "files": [
@ -110,11 +104,5 @@
], ],
"browserslist": [ "browserslist": [
"last 1 chrome versions" "last 1 chrome versions"
], ]
"pnpm": {
"overrides": {
"peek-readable": "5.3.1"
}
},
"packageManager": "pnpm@10.7.0+sha512.6b865ad4b62a1d9842b61d674a393903b871d9244954f652b8842c2b553c72176b278f64c463e52d40fff8aba385c235c8c9ecf5cc7de4fd78b8bb6d49633ab6"
} }

6368
pnpm-lock.yaml generated

File diff suppressed because it is too large Load Diff

180
readme.md
View File

@ -1,155 +1,191 @@
# @git.zone/cli # @git.zone/cli
A CLI toolbelt to streamline local development cycles by utilizing various gitzone utilities. A CLI toolbelt to streamline local development cycles by using various gitzone utilities.
## Install ## Install
To begin using `@git.zone/cli`, ensure that Node.js and npm are installed on your system. Once they are set up, install the CLI tool globally with the following command: To install the `@git.zone/cli` tool, you need to have Node.js and npm installed on your machine. Once you have those set up, you can install the CLI tool globally using the following command:
```shell ```shell
npm install -g @git.zone/cli npm install -g @git.zone/cli
``` ```
This command makes `gitzone` or `gzone` accessible from any directory on your system. This will add the `gitzone` or `gzone` command to your PATH, allowing you to use the tool from any directory.
## Usage ## Usage
The `gitzone` CLI provides a comprehensive set of utilities to optimize and manage the development lifecycle of projects, ranging from project initialization to version control, code formatting, and deployment processes. This usage guide will walk you through the available commands, their use cases, and provide detailed examples. The `gitzone` CLI is designed to streamline various aspects of the local development cycle, including project setup, maintenance, and deployment. Below, we'll go through several scenarios that demonstrate the capabilities of `gitzone`.
### Initializing a New Project ### Getting Started
To bootstrap a new project aligned with modern TypeScript practices, use gitzone's template command. Choose from a range of templates tailored for different project types: To start using `gitzone`, you need to initialize a new project or use it with an existing one. This section will guide you through the initial setup and provide examples of the core commands.
#### Initialize a New Project
`gitzone` can create several types of projects, including standard npm modules, websites using LitElement, and custom web components. To create a new project, you can use the following command:
```shell ```shell
gitzone template [templatename] gitzone template [templatename]
``` ```
Replace `[templatename]` with any of the following: Replace `[templatename]` with one of the following:
- `npm`: Starts an npm module with TypeScript, complete with test and CI/CD integration. - `npm`: A standard npm module with TypeScript support, testing, and CI/CD setup.
- `website`: Initializes a LitElement-based frontend application with features such as e2e testing and service worker setup. - `website`: A LitElement-based website with e2e testing, bundling, and service worker support.
- `element`: Prepares a new standard setup for creating reusable web components with LitElement. - `element`: A LitElement standard setup for creating web components.
**Example: Starting a New npm Project** Example of starting a new npm project:
1. Navigate to your desired directory in the terminal. 1. Open your terminal and navigate to the directory where you want to create your project.
2. Execute: 2. Execute the following command:
```shell ```shell
gitzone template npm gitzone template npm
``` ```
3. Respond to the prompts to customize the project settings. This includes setting up essential metadata such as name and repository information. 3. Follow the interactive prompts to set up your project. You will be asked to provide information such as the project name, description, GitHub repository, etc.
### Committing Changes #### Committing Changes
Standardizing commit messages and versionning with gitzone: To standardize commit messages and increment versions based on change types (fix, feat, breaking change):
```shell ```shell
gitzone commit gitzone commit
``` ```
This command provides an interactive prompt to create a conventional commit message, which will be automatically versioned based on the significance of the changes like `fix`, `feat`, or `BREAKING CHANGE`. This command will prompt you with a series of questions to help construct a standardized commit message and create a new commit.
### Handling Package Deprecation #### Deprecating a Package
Replace an outdated package with a new one for your team and users: To deprecate an old package in favor of a new one:
```shell ```shell
gitzone deprecate gitzone deprecate
``` ```
The utility collects information about old and new package names through interactive prompts, and proceeds with deprecation notices in npm, guiding users towards the updated package. This command will prompt you for the old and new package names and will automatically deprecate the old package on npm.
### CI/CD Utilities #### Opening CI/CD Settings
Access your projects CI/CD settings instantly: Quickly open the CI/CD settings page of your project repository:
```shell ```shell
gitzone open ci gitzone open ci
``` ```
This command opens the settings page of the repositorys CI/CD configuration directly from your CLI, thus swiftly transitioning from local tasks to cloud configurations. ### Example Commands
### Maintaining Project Cleanliness #### Project Setup and Initialization
For consistent code formatting across your project: Let's go through how to scaffold a new web component project:
1. Navigate to your desired directory.
2. Run the following command:
```shell
gitzone template element
```
3. Follow the prompts to set up your web component project.
#### Managing Project Lifecycle
Commands to manage your project's lifecycle:
- **Commit Changes:**
```shell
gitzone commit
```
- **Deprecate a Package:**
```shell
gitzone deprecate
```
- **Format Project Files:**
```shell
gitzone format
```
- **Regenerate Readme:**
```shell
gitzone readme
```
- **Update Local Repositories:**
```shell
gitzone update
```
#### Advanced Scenarios
##### Formatting
To ensure consistent formatting using Prettier:
```shell ```shell
gitzone format gitzone format
``` ```
This command applies uniform formatting styles using Prettier, ensuring your JS/TS and markdown files align with the project's style guide. ##### Building the Project
### Lifecycle Management Commands To build your project as defined in your `package.json`:
#### Clean Builds
Remove generated files and prepare for a fresh build:
```shell ```shell
gitzone clean npm run build
``` ```
This utility cleans up build artifacts from your project directory so that you can run a fresh build without residual clutter affecting outcomes. ##### Git and Version Control
#### Sync and meta Configuration Check the current project version:
To manage metadata that guides your project configurations and module syncing: ```shell
gitzone -v
```
To synchronize local repositories with remotes:
```shell
gitzone update
```
##### Metadata and Configuration
To initialize or update metadata:
```shell ```shell
gitzone meta init gitzone meta init
``` ```
This initialization sets the groundwork for supporting gitzone projects by helping you create a `.meta.json` file that tracks subprojects. ### Continuous Integration and Delivery (CI/CD)
### Advanced Operations #### Running Tests
#### Cloud and Docker Integrations To execute tests defined in your `package.json`:
For projects integrating cloud deployment or containerization:
```shell ```shell
gitzone docker prune npm test
``` ```
This utility manages Docker resources by cleaning stale volumes, containers, and images, ensuring efficient resource use. #### Building Documentation
### Detailed Use Cases Generate documentation:
#### **Project Setup and Template Management**
Whether creating an npm module or a web component, the command `gitzone template [templatename]` invokes smart scaffolding processes that automatically set up a robust project environment equipped with modern tooling like TypeScript, Prettier configurations, and testing frameworks.
#### **Commit Management**
The `gitzone commit` command assures that your commit messages complement semantic versioning practices. It proposes version bumps based on detected changes and helps maintain an accurate project change log.
- **Interactive Commit:** Users engage in dialogues to define commit type (`fix`, `feat`, `BREAKING CHANGE`), scope, and description, resulting in uniform and meaningful commit logs.
- **Automatic Versioning:** After message crafting, the versioning is attended by bumps similar to npms `npm version` with stages such as `major`, `minor`, and `patch`.
#### **Formatting and Configurations**
A consistent format yields a professional and readable codebase:
```shell ```shell
gitzone format npm run buildDocs
``` ```
- **Prettier Integration:** Formats not only TypeScript and JavaScript files but also documents such as `readme.md`, maintaining consistency in both code and documentation style. ### Troubleshooting and Debugging
#### **Synced Meta Projects** #### Detailed Logs
Effectively supervise interconnected repositories or module collections: Enable detailed logging for troubleshooting:
- **Meta Initialization (`meta init`)**: Lay down a foundation for a meta repository that orchestrates multiple projects by overseeing them through a centralized metadata file.
- **Subproject Operations:** Commands such as `meta update`, `meta add`, `meta remove` enable dynamic management of subprojects, ensuring they remain updated with current features and aligned to the meta repository's standards.
#### **CI/CD Integration** ```shell
gitzone --loglevel=debug
```
Directly linking your local development processes to continuous integration settings with `gitzone open ci` provides seamless switches between code and configuration in cloud-based environments. #### Cleaning Up
#### **Real-time Docker Management** To clean up project artifacts:
For developers employing Docker for service deployments, `gitzone docker prune` offers a quick remedy to residual services, optimizing local/docker-storage for a more streamlined experience in container management. ```shell
gitzone clean
```
### Leveraging gitzone ### Summary
By mastering the `gitzone` CLI commands, you gain unparalleled efficiency in managing your projects from conception to deployment. Encompassing a wide gamut of functionalities, from initial project scaffolding to synchronization of modularized repositories and beyond, `gitzone` serves as a linchpin for developers intent on optimizing their workflow. Understanding and utilizing its full potential catalyzes development cycles, granting the freedom to focus on innovation, collaboration, and delivering outstanding software products. The `gitzone` CLI tool provides a comprehensive suite of commands that streamline project setup, lifecycle management, and deployment, which are indispensable for modern development workflows. By familiarizing yourself with the different commands, you can maximize your productivity and focus on what really matters—writing code. Whether you are starting a new project, maintaining an existing one, or deploying your work, `gitzone` is your toolbelt for efficient development cycles.
## License and Legal Information ## License and Legal Information

View File

@ -3,6 +3,6 @@
*/ */
export const commitinfo = { export const commitinfo = {
name: '@git.zone/cli', name: '@git.zone/cli',
version: '1.15.3', version: '1.9.106',
description: 'A comprehensive CLI tool for enhancing and managing local development workflows with gitzone utilities, focusing on project setup, version control, code formatting, and template management.' description: 'A CLI toolbelt to streamline local development cycles by using various gitzone utilities.'
} }

View File

@ -16,10 +16,8 @@ export interface IGitzoneConfigData {
npmPackageName: string; npmPackageName: string;
license: string; license: string;
projectDomain: string; projectDomain: string;
assetbrokerUrl: string;
legalUrl: string;
}; };
copy: { [key: string]: string }; copy: {[key: string]: string}
npmciOptions: { npmciOptions: {
npmAccessLevel: 'public' | 'private'; npmAccessLevel: 'public' | 'private';
}; };

View File

@ -1,4 +1,4 @@
import * as plugins from './plugins.js'; import * as plugins from './plugins.js'
import * as paths from './paths.js'; import * as paths from './paths.js';
import { GitzoneConfig } from './classes.gitzoneconfig.js'; import { GitzoneConfig } from './classes.gitzoneconfig.js';

View File

@ -15,7 +15,7 @@ export let run = async () => {
await smartupdateInstance.check( await smartupdateInstance.check(
'gitzone', 'gitzone',
projectInfo.npm.version, projectInfo.npm.version,
'http://gitzone.gitlab.io/gitzone/changelog.html', 'http://gitzone.gitlab.io/gitzone/changelog.html'
); );
console.log('---------------------------------------------'); console.log('---------------------------------------------');
gitzoneSmartcli.addVersion(projectInfo.npm.version); gitzoneSmartcli.addVersion(projectInfo.npm.version);
@ -48,14 +48,6 @@ export let run = async () => {
await modDeprecate.run(); await modDeprecate.run();
}); });
/**
* docker
*/
gitzoneSmartcli.addCommand('docker').subscribe(async (argvArg) => {
const modDocker = await import('./mod_docker/index.js');
await modDocker.run(argvArg);
});
/** /**
* Update all files that comply with the gitzone standard * Update all files that comply with the gitzone standard
*/ */

View File

@ -5,12 +5,6 @@ import * as paths from '../paths.js';
import { logger } from '../gitzone.logging.js'; import { logger } from '../gitzone.logging.js';
export const run = async (argvArg: any) => { export const run = async (argvArg: any) => {
if (argvArg.format) {
const formatMod = await import('../mod_format/index.js');
await formatMod.run();
}
logger.log('info', `gathering facts...`); logger.log('info', `gathering facts...`);
const aidoc = new plugins.tsdoc.AiDoc(); const aidoc = new plugins.tsdoc.AiDoc();
await aidoc.start(); await aidoc.start();
@ -78,13 +72,7 @@ export const run = async (argvArg: any) => {
logger.log('info', `Writing changelog.md ...`); logger.log('info', `Writing changelog.md ...`);
let changelog = nextCommitObject.changelog; let changelog = nextCommitObject.changelog;
changelog = changelog.replaceAll('{{nextVersion}}', (await commitInfo.getNextPlannedVersion()).versionString); changelog = changelog.replaceAll('{{nextVersion}}', (await commitInfo.getNextPlannedVersion()).versionString);
changelog = changelog.replaceAll('{{nextVersionScope}}', `${await answerBucket.getAnswerFor('commitType')}(${await answerBucket.getAnswerFor('commitScope')})`); changelog = changelog.replaceAll('{{nextVersionMessage}}', commitString);
changelog = changelog.replaceAll('{{nextVersionMessage}}', nextCommitObject.recommendedNextVersionMessage);
if (nextCommitObject.recommendedNextVersionDetails?.length > 0) {
changelog = changelog.replaceAll('{{nextVersionDetails}}', '- ' + nextCommitObject.recommendedNextVersionDetails.join('\n- '));
} else {
changelog = changelog.replaceAll('\n{{nextVersionDetails}}', '');
}
await plugins.smartfile.memory.toFs(changelog, plugins.path.join(paths.cwd, `changelog.md`)); await plugins.smartfile.memory.toFs(changelog, plugins.path.join(paths.cwd, `changelog.md`));

View File

@ -4,15 +4,6 @@ import { logger } from '../gitzone.logging.js';
export const run = async () => { export const run = async () => {
const smartInteract = new plugins.smartinteract.SmartInteract([ const smartInteract = new plugins.smartinteract.SmartInteract([
{
name: `registryUrls`,
message: `What are the comma separated registry URLs?`,
type: `input`,
default: `https://registry.npmjs.org`,
validate: (stringInput) => {
return stringInput !== '' && !process.env.CI;
},
},
{ {
name: `oldPackageName`, name: `oldPackageName`,
message: `Whats the name of the OLD package?`, message: `Whats the name of the OLD package?`,
@ -33,17 +24,14 @@ export const run = async () => {
}, },
]); ]);
const answerBucket = await smartInteract.runQueue(); const answerBucket = await smartInteract.runQueue();
const registryUrls = answerBucket.getAnswerFor(`registryUrls`).split(',');
const oldPackageName = answerBucket.getAnswerFor(`oldPackageName`); const oldPackageName = answerBucket.getAnswerFor(`oldPackageName`);
const newPackageName = answerBucket.getAnswerFor(`newPackageName`); const newPackageName = answerBucket.getAnswerFor(`newPackageName`);
logger.log('info', `Deprecating package ${oldPackageName} in favour of ${newPackageName}`); logger.log('info', `Deprecating package ${oldPackageName} in favour of ${newPackageName}`);
const smartshellInstance = new plugins.smartshell.Smartshell({ const smartshellInstance = new plugins.smartshell.Smartshell({
executor: 'bash', executor: 'bash',
}); });
for (const registryUrl of registryUrls) { await smartshellInstance.exec(
await smartshellInstance.exec( `npm deprecate ${oldPackageName}@* ` +
`npm deprecate ${oldPackageName}@* ` + `"${oldPackageName} has been deprecated in favour of ${newPackageName} - please upgrade asap!!!"`
`"${oldPackageName} has been deprecated in favour of ${newPackageName} - please upgrade asap!!!" --registry ${registryUrl}`, );
);
}
}; };

View File

@ -1,12 +0,0 @@
import * as plugins from './mod.plugins.js';
export const run = async (argvArg) => {
const smartshellInstance = new plugins.smartshell.Smartshell({
executor: 'bash',
});
switch (argvArg._[1]) {
case 'prune':
await smartshellInstance.exec(`docker system prune -a -f --volumes`);
break;
}
};

View File

@ -1,4 +0,0 @@
export * from '../plugins.js';
import * as smartshell from '@push.rocks/smartshell';
export { smartshell };

View File

@ -3,4 +3,4 @@ import * as plugins from '../plugins.js';
export const run = async (projectArg: Project) => { export const run = async (projectArg: Project) => {
const gitzoneConfig = await projectArg.gitzoneConfig; const gitzoneConfig = await projectArg.gitzoneConfig;
}; }

View File

@ -4,21 +4,20 @@ import { Project } from '../classes.project.js';
import { logger } from '../gitzone.logging.js'; import { logger } from '../gitzone.logging.js';
const incompatibleLicenses: string[] = ['AGPL', 'GPL', 'SSPL']; const incompatibleLicenses: string[] = [
"AGPL",
"GPL",
"SSPL",
];
export const run = async (projectArg: Project) => { export const run = async (projectArg: Project) => {
const nodeModulesInstalled = await plugins.smartfile.fs.isDirectory( const nodeModulesInstalled = await plugins.smartfile.fs.isDirectory(plugins.path.join(paths.cwd, 'node_modules'));
plugins.path.join(paths.cwd, 'node_modules'),
);
if (!nodeModulesInstalled) { if (!nodeModulesInstalled) {
logger.log('warn', 'No node_modules found. Skipping license check'); logger.log('warn', 'No node_modules found. Skipping license check');
return; return;
} }
const licenseChecker = await plugins.smartlegal.createLicenseChecker(); const licenseChecker = await plugins.smartlegal.createLicenseChecker();
const licenseCheckResult = await licenseChecker.excludeLicenseWithinPath( const licenseCheckResult = await licenseChecker.excludeLicenseWithinPath(paths.cwd, incompatibleLicenses);
paths.cwd,
incompatibleLicenses,
);
if (licenseCheckResult.failingModules.length === 0) { if (licenseCheckResult.failingModules.length === 0) {
logger.log('info', 'Success -> licenses passed!'); logger.log('info', 'Success -> licenses passed!');
} else { } else {

View File

@ -48,7 +48,7 @@ export const run = async (projectArg: Project) => {
plugins.smartobject.smartAdd( plugins.smartobject.smartAdd(
npmextraJson.gitzone, npmextraJson.gitzone,
expectedRepoInformationItem, expectedRepoInformationItem,
cliProvidedValue, cliProvidedValue
); );
} }
} }

View File

@ -12,7 +12,7 @@ const ensureDependency = async (
packageJsonObjectArg: any, packageJsonObjectArg: any,
position: 'dep' | 'devDep' | 'everywhere', position: 'dep' | 'devDep' | 'everywhere',
constraint: 'exclude' | 'include' | 'latest', constraint: 'exclude' | 'include' | 'latest',
dependencyArg: string, dependencyArg: string
) => {}; ) => {};
export const run = async (projectArg: Project) => { export const run = async (projectArg: Project) => {
@ -26,13 +26,14 @@ export const run = async (projectArg: Project) => {
// metadata // metadata
packageJson.repository = { packageJson.repository = {
type: 'git', "type": "git",
url: `https://${gitzoneData.module.githost}/${gitzoneData.module.gitscope}/${gitzoneData.module.gitrepo}.git`, "url": `git+https://${gitzoneData.module.githost}/${gitzoneData.module.gitscope}/${gitzoneData.module.gitrepo}.git`
}; };
(packageJson.bugs = { packageJson.bugs = {
url: `https://${gitzoneData.module.githost}/${gitzoneData.module.gitscope}/${gitzoneData.module.gitrepo}/issues`, "url": `https://${gitzoneData.module.githost}/${gitzoneData.module.gitscope}/${gitzoneData.module.gitrepo}/issues`
}), },
(packageJson.homepage = `https://${gitzoneData.module.githost}/${gitzoneData.module.gitscope}/${gitzoneData.module.gitrepo}#readme`); packageJson.homepage = `https://${gitzoneData.module.githost}/${gitzoneData.module.gitscope}/${gitzoneData.module.gitrepo}#readme`;
// Check for module type // Check for module type
if (!packageJson.type) { if (!packageJson.type) {
@ -70,6 +71,23 @@ export const run = async (projectArg: Project) => {
packageJson.scripts.buildDocs = `tsdoc`; packageJson.scripts.buildDocs = `tsdoc`;
} }
// check package.json
if (!packageJson.main) {
logger.log('error', 'no "main" property');
process.exit(0);
}
if (!packageJson.typings) {
logger.log('error', 'no "typings" property');
process.exit(0);
}
if (!packageJson.browserslist) {
packageJson.browserslist = ['last 1 chrome versions'];
}
if (!packageJson.main.includes('dist_') || !packageJson.typings.includes('dist_')) {
logger.log('error', 'check packagesJson main and typings');
process.exit(0);
}
// check for files // check for files
packageJson.files = [ packageJson.files = [
'ts/**/*', 'ts/**/*',
@ -89,13 +107,6 @@ export const run = async (projectArg: Project) => {
await ensureDependency(packageJson, 'devDep', 'latest', '@git.zone/tstest'); await ensureDependency(packageJson, 'devDep', 'latest', '@git.zone/tstest');
await ensureDependency(packageJson, 'devDep', 'latest', '@git.zone/tsbuild'); await ensureDependency(packageJson, 'devDep', 'latest', '@git.zone/tsbuild');
// set overrides
const overrides = plugins.smartfile.fs.toObjectSync(
plugins.path.join(paths.assetsDir, 'overrides.json'),
);
packageJson.pnpm = packageJson.pnpm || {};
packageJson.pnpm.overrides = overrides;
// exclude // exclude
// TODO // TODO

View File

@ -43,7 +43,7 @@ const prettierTypeScriptPipestop = plugins.through2.obj(
fileArg.setContentsFromString(formatedFileString); fileArg.setContentsFromString(formatedFileString);
cb(null, fileArg); cb(null, fileArg);
} }
}, }
); );
export const run = async (projectArg: Project) => { export const run = async (projectArg: Project) => {

View File

@ -8,10 +8,7 @@ export const run = async () => {
// Check and initialize readme.md if it doesn't exist // Check and initialize readme.md if it doesn't exist
const readmeExists = await plugins.smartfile.fs.fileExists(readmePath); const readmeExists = await plugins.smartfile.fs.fileExists(readmePath);
if (!readmeExists) { if (!readmeExists) {
await plugins.smartfile.fs.toFs( await plugins.smartfile.fs.toFs('# Project Readme\n\nThis is the initial readme file.', readmePath);
'# Project Readme\n\nThis is the initial readme file.',
readmePath,
);
console.log('Initialized readme.md'); console.log('Initialized readme.md');
} else { } else {
console.log('readme.md already exists'); console.log('readme.md already exists');
@ -20,10 +17,7 @@ export const run = async () => {
// Check and initialize readme.hints.md if it doesn't exist // Check and initialize readme.hints.md if it doesn't exist
const readmeHintsExists = await plugins.smartfile.fs.fileExists(readmeHintsPath); const readmeHintsExists = await plugins.smartfile.fs.fileExists(readmeHintsPath);
if (!readmeHintsExists) { if (!readmeHintsExists) {
await plugins.smartfile.fs.toFs( await plugins.smartfile.fs.toFs('# Project Readme Hints\n\nThis is the initial readme hints file.', readmeHintsPath);
'# Project Readme Hints\n\nThis is the initial readme hints file.',
readmeHintsPath,
);
console.log('Initialized readme.hints.md'); console.log('Initialized readme.hints.md');
} else { } else {
console.log('readme.hints.md already exists'); console.log('readme.hints.md already exists');

View File

@ -38,7 +38,7 @@ export const run = async (project: Project) => {
case 'website': case 'website':
const ciTemplateDocker = await templateModule.getTemplate('ci_docker'); const ciTemplateDocker = await templateModule.getTemplate('ci_docker');
await ciTemplateDocker.writeToDisk(paths.cwd); await ciTemplateDocker.writeToDisk(paths.cwd);
logger.log('info', 'Updated CI/CD config files!'); logger.log('info', 'Updated .gitlabci.yml!');
// lets care about docker // lets care about docker
const dockerTemplate = await templateModule.getTemplate('dockerfile_service'); const dockerTemplate = await templateModule.getTemplate('dockerfile_service');
@ -57,12 +57,6 @@ export const run = async (project: Project) => {
// update html // update html
if (project.gitzoneConfig.data.projectType === 'website') { if (project.gitzoneConfig.data.projectType === 'website') {
const websiteUpdateTemplate = await templateModule.getTemplate('website_update'); const websiteUpdateTemplate = await templateModule.getTemplate('website_update');
const variables ={
assetbrokerUrl: project.gitzoneConfig.data.module.assetbrokerUrl,
legalUrl: project.gitzoneConfig.data.module.legalUrl,
};
console.log('updating website template with variables\n', JSON.stringify(variables, null, 2));
websiteUpdateTemplate.supplyVariables(variables);
await websiteUpdateTemplate.writeToDisk(paths.cwd); await websiteUpdateTemplate.writeToDisk(paths.cwd);
logger.log('info', `Updated html for website!`); logger.log('info', `Updated html for website!`);
} else if (project.gitzoneConfig.data.projectType === 'service') { } else if (project.gitzoneConfig.data.projectType === 'service') {

View File

@ -1,26 +0,0 @@
import * as plugins from './mod.plugins.js';
import * as paths from '../paths.js';
import { logger } from '../gitzone.logging.js';
import { Project } from '../classes.project.js';
export const run = async (projectArg: Project) => {
// lets care about tsconfig.json
logger.log('info', 'Formatting tsconfig.json...');
const tsconfigSmartfile = await plugins.smartfile.SmartFile.fromFilePath(
plugins.path.join(paths.cwd, 'tsconfig.json'),
);
const tsconfigObject = JSON.parse(tsconfigSmartfile.contentBuffer.toString());
tsconfigObject.compilerOptions = tsconfigObject.compilerOptions || {};
tsconfigObject.compilerOptions.baseUrl = '.';
tsconfigObject.compilerOptions.paths = {};
const tsPublishMod = await import('@git.zone/tspublish');
const tsPublishInstance = new tsPublishMod.TsPublish();
const publishModules = await tsPublishInstance.getModuleSubDirs(paths.cwd);
for (const publishModule of Object.keys(publishModules)) {
const publishConfig = publishModules[publishModule];
tsconfigObject.compilerOptions.paths[`${publishConfig.name}`] = [`./${publishModule}/index.js`];
}
tsconfigSmartfile.setContentsFromString(JSON.stringify(tsconfigObject, null, 2));
await tsconfigSmartfile.write();
};

View File

@ -1,7 +1,7 @@
import * as plugins from './mod.plugins.js'; import * as plugins from './mod.plugins.js';
import { Project } from '../classes.project.js'; import { Project } from '../classes.project.js';
export let run = async (writeArg: boolean = true): Promise<any> => { export let run = async (write: boolean = true): Promise<any> => {
const project = await Project.fromCwd(); const project = await Project.fromCwd();
// cleanup // cleanup
@ -29,8 +29,6 @@ export let run = async (writeArg: boolean = true): Promise<any> => {
await formatGitignore.run(project); await formatGitignore.run(project);
// format TypeScript // format TypeScript
const formatTsConfig = await import('./format.tsconfig.js');
await formatTsConfig.run(project);
const formatPrettier = await import('./format.prettier.js'); const formatPrettier = await import('./format.prettier.js');
await formatPrettier.run(project); await formatPrettier.run(project);

View File

@ -10,14 +10,4 @@ import * as smartnpm from '@push.rocks/smartnpm';
import * as smartstream from '@push.rocks/smartstream'; import * as smartstream from '@push.rocks/smartstream';
import * as through2 from 'through2'; import * as through2 from 'through2';
export { export { lik, smartfile, smartgulp, smartinteract, smartlegal, smartobject, smartnpm, smartstream, through2 };
lik,
smartfile,
smartgulp,
smartinteract,
smartlegal,
smartobject,
smartnpm,
smartstream,
through2,
};

View File

@ -73,7 +73,7 @@ export class Meta {
// write .meta.json to disk // write .meta.json to disk
plugins.smartfile.memory.toFsSync( plugins.smartfile.memory.toFsSync(
JSON.stringify(this.metaRepoData, null, 2), JSON.stringify(this.metaRepoData, null, 2),
this.filePaths.metaJson, this.filePaths.metaJson
); );
// write .gitignore to disk // write .gitignore to disk
plugins.smartfile.memory.toFsSync(await this.generateGitignore(), this.filePaths.gitIgnore); plugins.smartfile.memory.toFsSync(await this.generateGitignore(), this.filePaths.gitIgnore);
@ -104,12 +104,12 @@ export class Meta {
if ( if (
preExistingFolderArg !== '.git' && preExistingFolderArg !== '.git' &&
!Object.keys(projects).find((projectFolder) => !Object.keys(projects).find((projectFolder) =>
projectFolder.startsWith(preExistingFolderArg), projectFolder.startsWith(preExistingFolderArg)
) )
) { ) {
const response = await plugins.smartinteraction.SmartInteract.getCliConfirmation( const response = await plugins.smartinteraction.SmartInteract.getCliConfirmation(
`Do you want to delete superfluous directory >>${preExistingFolderArg}<< ?`, `Do you want to delete superfluous directory >>${preExistingFolderArg}<< ?`,
true, true
); );
if (response) { if (response) {
logger.log('warn', `Deleting >>${preExistingFolderArg}<<!`); logger.log('warn', `Deleting >>${preExistingFolderArg}<<!`);
@ -131,7 +131,7 @@ export class Meta {
logger.log('info', `found ${missingRepos.length} missing repos`); logger.log('info', `found ${missingRepos.length} missing repos`);
for (const missingRepo of missingRepos) { for (const missingRepo of missingRepos) {
await this.smartshellInstance.exec( await this.smartshellInstance.exec(
`cd ${this.cwd} && git clone ${this.metaRepoData.projects[missingRepo]} ${missingRepo}`, `cd ${this.cwd} && git clone ${this.metaRepoData.projects[missingRepo]} ${missingRepo}`
); );
} }
@ -140,7 +140,7 @@ export class Meta {
logger.log('info', `persist changes with a git commit`); logger.log('info', `persist changes with a git commit`);
await this.smartshellInstance.exec( await this.smartshellInstance.exec(
`cd ${this.cwd} && git add -A && git commit -m "updated structure"`, `cd ${this.cwd} && git add -A && git commit -m "updated structure"`
); );
await this.syncToRemote(); await this.syncToRemote();
@ -166,7 +166,7 @@ export class Meta {
JSON.stringify({ JSON.stringify({
projects: {}, projects: {},
}), }),
this.filePaths.metaJson, this.filePaths.metaJson
); );
logger.log(`success`, `created a new .meta.json in directory ${this.cwd}`); logger.log(`success`, `created a new .meta.json in directory ${this.cwd}`);
await plugins.smartfile.memory.toFs( await plugins.smartfile.memory.toFs(
@ -174,14 +174,14 @@ export class Meta {
name: this.dirName, name: this.dirName,
version: '1.0.0', version: '1.0.0',
}), }),
this.filePaths.packageJson, this.filePaths.packageJson
); );
logger.log(`success`, `created a new package.json in directory ${this.cwd}`); logger.log(`success`, `created a new package.json in directory ${this.cwd}`);
} else { } else {
logger.log(`error`, `directory ${this.cwd} already has a .metaJson file. Doing nothing.`); logger.log(`error`, `directory ${this.cwd} already has a .metaJson file. Doing nothing.`);
} }
await this.smartshellInstance.exec( await this.smartshellInstance.exec(
`cd ${this.cwd} && git add -A && git commit -m "feat(project): init meta project for ${this.dirName}"`, `cd ${this.cwd} && git add -A && git commit -m "feat(project): init meta project for ${this.dirName}"`
); );
await this.updateLocalRepos(); await this.updateLocalRepos();
} }
@ -203,7 +203,7 @@ export class Meta {
await this.sortMetaRepoData(); await this.sortMetaRepoData();
await this.writeToDisk(); await this.writeToDisk();
await this.smartshellInstance.exec( await this.smartshellInstance.exec(
`cd ${this.cwd} && git add -A && git commit -m "feat(project): add ${projectNameArg}"`, `cd ${this.cwd} && git add -A && git commit -m "feat(project): add ${projectNameArg}"`
); );
await this.updateLocalRepos(); await this.updateLocalRepos();
} }

View File

@ -5,11 +5,11 @@ export let run = (argvArg) => {
let projectInfo = new plugins.projectinfo.ProjectInfo(paths.cwd); let projectInfo = new plugins.projectinfo.ProjectInfo(paths.cwd);
if (argvArg._[1] === 'ci') { if (argvArg._[1] === 'ci') {
plugins.smartopen.openUrl( plugins.smartopen.openUrl(
`https://gitlab.com/${projectInfo.git.gituser}/${projectInfo.git.gitrepo}/settings/ci_cd`, `https://gitlab.com/${projectInfo.git.gituser}/${projectInfo.git.gitrepo}/settings/ci_cd`
); );
} else if (argvArg._[1] === 'pipelines') { } else if (argvArg._[1] === 'pipelines') {
plugins.smartopen.openUrl( plugins.smartopen.openUrl(
`https://gitlab.com/${projectInfo.git.gituser}/${projectInfo.git.gitrepo}/pipelines`, `https://gitlab.com/${projectInfo.git.gituser}/${projectInfo.git.gitrepo}/pipelines`
); );
} }
}; };

View File

@ -22,7 +22,7 @@ export let run = () => {
return projects; return projects;
})()} })()}
* format a project with 'gitzone format' * format a project with 'gitzone format'
`, `
); );
done.resolve(); done.resolve();
return done.promise; return done.promise;

View File

@ -2,7 +2,7 @@ import * as plugins from './plugins.js';
export let packageDir = plugins.path.join( export let packageDir = plugins.path.join(
plugins.smartpath.get.dirnameFromImportMetaUrl(import.meta.url), plugins.smartpath.get.dirnameFromImportMetaUrl(import.meta.url),
'../', '../'
); );
export let assetsDir = plugins.path.join(packageDir, './assets'); export let assetsDir = plugins.path.join(packageDir, './assets');
export let templatesDir = plugins.path.join(assetsDir, 'templates'); export let templatesDir = plugins.path.join(assetsDir, 'templates');

View File

@ -6,9 +6,7 @@
"module": "NodeNext", "module": "NodeNext",
"moduleResolution": "NodeNext", "moduleResolution": "NodeNext",
"esModuleInterop": true, "esModuleInterop": true,
"verbatimModuleSyntax": true, "verbatimModuleSyntax": true
"baseUrl": ".",
"paths": {}
}, },
"exclude": [ "exclude": [
"dist_*/**/*.d.ts" "dist_*/**/*.d.ts"