@liangmi/mo 0.0.5 → 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -2,10 +2,9 @@
2
2
 
3
3
  **M**anage your **O**pensource projects!
4
4
 
5
- It just keeps your repos organized like this:
6
-
7
- ```text
5
+ `mo` keeps your GitHub repos organized under a single root directory:
8
6
 
7
+ ```
9
8
  ~/code
10
9
  ├── vitejs
11
10
  │ ├── vite
@@ -13,107 +12,51 @@ It just keeps your repos organized like this:
13
12
  └── vuejs
14
13
  ├── core
15
14
  └── vue
16
-
17
- ```
18
-
19
- ## Install
20
-
21
- ```bash
22
-
23
- vp install -g @liangmi/mo
24
-
25
15
  ```
26
16
 
27
17
  ## Requirements
28
18
 
29
- - macOS or Linux (Windows is not supported)
30
- - global install (local install is not supported for runtime usage)
19
+ - macOS or Linux
31
20
  - `git`
32
21
  - GitHub CLI `gh` authenticated (`gh auth status`)
33
22
 
34
- ## Quick Start
35
-
36
- Run setup once:
23
+ ## Install
37
24
 
38
25
  ```bash
39
- mo setup
26
+ npm install -g @liangmi/mo
40
27
  ```
41
28
 
42
- `mo setup` will:
43
-
44
- 1. check `git`
45
- 2. check `gh` authentication
46
- 3. ask for your projects root directory
47
- 4. ask which shell(s) you use (`zsh`, `bash`, `fish`)
48
- 5. optionally collect aliases for `mo clone`, `mo list`, and `mo cd`
49
- 6. write `~/.config/morc.json`
50
- 7. sync managed shellrc blocks
29
+ ## Setup
51
30
 
52
- After setup:
31
+ Run once to initialize config and shell integration:
53
32
 
54
33
  ```bash
55
- mo clone vitejs/vite
56
- mo list
57
- mo cd
34
+ mo setup
58
35
  ```
59
36
 
60
37
  ## Commands
61
38
 
62
- ### `mo setup`
63
-
64
- Initialize config and shell integration.
65
-
66
- ### `mo clone <owner>/<repo>`
67
-
68
- Clone a GitHub repository into `<root>/<owner>/<repo>`.
69
-
70
- Alias: `mo c <owner>/<repo>`
71
-
72
- Example:
73
-
74
- ```bash
75
- mo clone vuejs/core
76
- ```
39
+ | Command | Alias | Description |
40
+ | ------------------------- | ------- | ----------------------------------------- |
41
+ | `mo setup` | | Initialize config and shell integration |
42
+ | `mo clone <owner>/<repo>` | `mo c` | Clone a repo into `<root>/<owner>/<repo>` |
43
+ | `mo list` | `mo ls` | List all managed repos |
44
+ | `mo cd [owner[/repo]]` | `mo d` | Jump to root, owner, or repo directory |
45
+ | `mo edit [owner[/repo]]` | `mo e` | Open a repo in your editor |
46
+ | `mo open [owner[/repo]]` | `mo o` | Open a repo in Finder/Explorer |
77
47
 
78
- ### `mo list`
79
-
80
- List repositories under your configured root.
81
-
82
- Alias: `mo ls`
83
-
84
- ### `mo cd [target]`
85
-
86
- Resolve and jump to a managed path in your shell integration function.
87
-
88
- Without `target`, it opens an interactive selector for:
89
-
90
- - root
91
- - owner directory
92
- - repository directory
93
-
94
- With `target`, supported forms are:
95
-
96
- - `root` or `.`
97
- - `<owner>`
98
- - `<owner>/<repo>`
99
-
100
- Alias: `mo d`
48
+ `mo cd`, `mo edit`, and `mo open` open an interactive selector when called without arguments.
101
49
 
102
50
  ## Config
103
51
 
104
- Default config path:
105
-
106
- ```text
107
- ~/.config/morc.json
108
- ```
109
-
110
- Example:
52
+ `~/.config/morc.json`:
111
53
 
112
54
  ```json
113
55
  {
114
56
  "$schema": "https://raw.githubusercontent.com/liangmiQwQ/mo/main/config_schema.json",
115
57
  "root": "~/code",
116
58
  "shells": ["zsh"],
59
+ "editor": "code",
117
60
  "alias": {
118
61
  "clone": ["k"],
119
62
  "list": ["li"],
@@ -122,34 +65,9 @@ Example:
122
65
  }
123
66
  ```
124
67
 
125
- ### Fields
126
-
127
- - `root` (required): absolute path or `~` path for your projects directory
128
- - `shells` (required): one or more of `zsh`, `bash`, `fish`
129
- - `alias` (optional): alias arrays for `clone`, `list`, `cd`
130
-
131
- Alias names must match:
132
-
133
- ```text
134
- [A-Za-z_][A-Za-z0-9_-]*
135
- ```
136
-
137
- ## Shell Integration
138
-
139
- `mo` manages shell integration blocks in your shellrc files:
140
-
141
- - `~/.zshrc`
142
- - `~/.bashrc`
143
- - `~/.config/fish/config.fish`
144
-
145
- ## Notes
146
-
147
- - If you run config-required commands without config, `mo` prompts you to run `mo setup`.
148
- - `mo list` only shows repositories that are Git repos with a GitHub remote.
149
-
150
68
  ## Contribution
151
69
 
152
- We're really excited to receive your contributions! Please see [ROADMAP.md](./ROADMAP.md) for details!
70
+ See [ROADMAP.md](./ROADMAP.md) for what's planned.
153
71
 
154
72
  ## License
155
73
 
@@ -53,6 +53,22 @@
53
53
  "pattern": "^[A-Za-z_][A-Za-z0-9_-]*$"
54
54
  },
55
55
  "uniqueItems": true
56
+ },
57
+ "edit": {
58
+ "type": "array",
59
+ "items": {
60
+ "type": "string",
61
+ "pattern": "^[A-Za-z_][A-Za-z0-9_-]*$"
62
+ },
63
+ "uniqueItems": true
64
+ },
65
+ "open": {
66
+ "type": "array",
67
+ "items": {
68
+ "type": "string",
69
+ "pattern": "^[A-Za-z_][A-Za-z0-9_-]*$"
70
+ },
71
+ "uniqueItems": true
56
72
  }
57
73
  },
58
74
  "additionalProperties": false
@@ -0,0 +1,26 @@
1
+ import { createRequire } from "node:module";
2
+ //#region \0rolldown/runtime.js
3
+ var __create = Object.create;
4
+ var __defProp = Object.defineProperty;
5
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
6
+ var __getOwnPropNames = Object.getOwnPropertyNames;
7
+ var __getProtoOf = Object.getPrototypeOf;
8
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
9
+ var __commonJSMin = (cb, mod) => () => (mod || cb((mod = { exports: {} }).exports, mod), mod.exports);
10
+ var __copyProps = (to, from, except, desc) => {
11
+ if (from && typeof from === "object" || typeof from === "function") for (var keys = __getOwnPropNames(from), i = 0, n = keys.length, key; i < n; i++) {
12
+ key = keys[i];
13
+ if (!__hasOwnProp.call(to, key) && key !== except) __defProp(to, key, {
14
+ get: ((k) => from[k]).bind(null, key),
15
+ enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable
16
+ });
17
+ }
18
+ return to;
19
+ };
20
+ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", {
21
+ value: mod,
22
+ enumerable: true
23
+ }) : target, mod));
24
+ var __require = /* @__PURE__ */ createRequire(import.meta.url);
25
+ //#endregion
26
+ export { __require as n, __toESM as r, __commonJSMin as t };