Compare commits

..

3 commits

Author SHA1 Message Date
3efd83e7b6
fix: Only run release on release branch 2025-06-19 13:53:07 +02:00
semantic-release-bot
69a04dc7d7 chore(release): 0.1.0 [skip ci]
## [0.1.0](https://git.kjan.de/jank/project-cli/compare/v0.0.1...v0.1.0) (2025-06-19)

### Features

* Add releases ([7dc8496](7dc849688f))

### Bug Fixes

* Use newer version of the release action ([9c16070](9c16070b54))

### Chores

* Create release branch ([ff50c29](ff50c291a7))
2025-06-19 08:20:00 +00:00
ff50c291a7
chore: Create release branch
Some checks failed
Release / Release (push) Failing after 34s
2025-06-19 10:19:26 +02:00
6 changed files with 8 additions and 111 deletions

View file

@ -1,15 +1,3 @@
## [0.2.0](https://git.kjan.de/jank/project-cli/compare/v0.1.1...v0.2.0) (2025-06-19)
### Features
* Add basic project creation ([fb23f6f](https://git.kjan.de/jank/project-cli/commit/fb23f6fd8b5c4f625524a86e2378aa2b503458a8))
## [0.1.1](https://git.kjan.de/jank/project-cli/compare/v0.1.0...v0.1.1) (2025-06-19)
### Chores
* **deps:** add renovate.json ([9284088](https://git.kjan.de/jank/project-cli/commit/92840886290ed4796d16643f49b5c4d622814e55))
## [0.1.0](https://git.kjan.de/jank/project-cli/compare/v0.0.1...v0.1.0) (2025-06-19)
### Features
@ -19,3 +7,7 @@
### Bug Fixes
* Use newer version of the release action ([9c16070](https://git.kjan.de/jank/project-cli/commit/9c16070b54a634b78fffd341ac5b0190ae2fedbb))
### Chores
* Create release branch ([ff50c29](https://git.kjan.de/jank/project-cli/commit/ff50c291a79050d76f7ca0af5450c7ddd845792e))

View file

@ -4,36 +4,8 @@ import * as toml from "@std/toml";
export const configPath = os.homedir() + "/.config/project-cli/";
export interface Project {
name: string;
}
export interface Configuration {
projectsDirectory: string;
cloningCommand: string;
}
export function getProjects(): Project[] {
const projectsString = fs
.readFileSync(configPath + "projects.json")
.toString();
return JSON.parse(projectsString) as Project[];
}
export function getConfiguration(): Configuration {
return toml.parse(
fs.readFileSync(configPath + "config.toml").toString(),
) as unknown as Configuration;
}
export function addProject(project: Project) {
let projects = getProjects();
if (projects.length == undefined) {
saveProjects([project]);
} else {
projects.push(project);
saveProjects(projects);
}
}
export function generateDefaultConfig() {
@ -42,19 +14,10 @@ export function generateDefaultConfig() {
const defaultConfig: Configuration = {
projectsDirectory: os.homedir() + "/projects",
cloningCommand: "git clone %s %n",
};
const configString = toml.stringify(
defaultConfig as unknown as Record<string, unknown>,
);
fs.writeFileSync(configPath + "config.toml", configString);
const projects: Project[] = [];
saveProjects(projects);
}
function saveProjects(projects: Project[]) {
const projectsString = JSON.stringify(projects);
fs.writeFileSync(configPath + "projects.json", projectsString);
}

View file

@ -1,15 +1,10 @@
import fs from "fs";
import { confirm, select, input } from "@inquirer/prompts";
import { confirm } from "@inquirer/prompts";
import { exit } from "process";
import {
addProject,
configPath,
generateDefaultConfig,
getConfiguration,
getProjects,
type Project,
} from "./configuration/configuration";
import { execSync } from "child_process";
if (!fs.existsSync(configPath + "config.toml")) {
const createConfig = await confirm({
@ -26,50 +21,3 @@ if (!fs.existsSync(configPath + "config.toml")) {
}
}
if (
!getProjects() ||
getProjects().length == 0 ||
getProjects().length == undefined
) {
const anwser = await select({
message: "Create a new Project",
choices: ["Clone a project with git", "Create a new empty Project"],
});
if (anwser == "Clone a project with git") {
const repoUrl = await input({ message: "What is the url of the repo?" });
const wantsCustomName = await confirm({
message: "Would you like to give this project a custom name?",
default: false,
});
let customName = "";
if (wantsCustomName) {
customName = await input({
message: "What would you like the custom name to be?",
});
}
execSync(
"cd " +
getConfiguration().projectsDirectory +
" && " +
getConfiguration()
.cloningCommand.replace("%s", repoUrl)
.replace("%n", customName),
);
const newProject: Project = {
name: customName,
};
addProject(newProject);
} else if (anwser == "Create a new empty Project") {
const name = await input({
message: "What would you like to call the project?",
});
fs.mkdirSync(getConfiguration().projectsDirectory + "/" + name);
const newProject: Project = {
name: name,
};
addProject(newProject);
}
}
console.log(getProjects());

4
package-lock.json generated
View file

@ -1,12 +1,12 @@
{
"name": "proj-cli",
"version": "0.2.0",
"version": "0.1.0",
"lockfileVersion": 3,
"requires": true,
"packages": {
"": {
"name": "proj-cli",
"version": "0.2.0",
"version": "0.1.0",
"dependencies": {
"@saithodev/semantic-release-gitea": "^2.1.0",
"@semantic-release/changelog": "^6.0.3",

View file

@ -1,6 +1,6 @@
{
"name": "proj-cli",
"version": "0.2.0",
"version": "0.1.0",
"module": "index.ts",
"type": "module",
"devDependencies": {

View file

@ -1,6 +0,0 @@
{
"$schema": "https://docs.renovatebot.com/renovate-schema.json",
"extends": [
"local>Renovate/renovate-config"
]
}