micoo 0.1.0__py3-none-any.whl
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.
- micoo/__init__.py +1 -0
- micoo/__main__.py +6 -0
- micoo/_version.py +21 -0
- micoo/config.py +24 -0
- micoo/logging_setup.py +16 -0
- micoo/main.py +283 -0
- micoo/py.typed +0 -0
- micoo-0.1.0.dist-info/METADATA +233 -0
- micoo-0.1.0.dist-info/RECORD +12 -0
- micoo-0.1.0.dist-info/WHEEL +4 -0
- micoo-0.1.0.dist-info/entry_points.txt +2 -0
- micoo-0.1.0.dist-info/licenses/LICENSE +21 -0
micoo/__init__.py
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"""Entry point for the micoo application."""
|
micoo/__main__.py
ADDED
micoo/_version.py
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
# file generated by setuptools-scm
|
|
2
|
+
# don't change, don't track in version control
|
|
3
|
+
|
|
4
|
+
__all__ = ["__version__", "__version_tuple__", "version", "version_tuple"]
|
|
5
|
+
|
|
6
|
+
TYPE_CHECKING = False
|
|
7
|
+
if TYPE_CHECKING:
|
|
8
|
+
from typing import Tuple
|
|
9
|
+
from typing import Union
|
|
10
|
+
|
|
11
|
+
VERSION_TUPLE = Tuple[Union[int, str], ...]
|
|
12
|
+
else:
|
|
13
|
+
VERSION_TUPLE = object
|
|
14
|
+
|
|
15
|
+
version: str
|
|
16
|
+
__version__: str
|
|
17
|
+
__version_tuple__: VERSION_TUPLE
|
|
18
|
+
version_tuple: VERSION_TUPLE
|
|
19
|
+
|
|
20
|
+
__version__ = version = '0.1.0'
|
|
21
|
+
__version_tuple__ = version_tuple = (0, 1, 0)
|
micoo/config.py
ADDED
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
"""Python module for micoo configuration and paths."""
|
|
2
|
+
|
|
3
|
+
from pathlib import Path
|
|
4
|
+
|
|
5
|
+
from platformdirs import PlatformDirs
|
|
6
|
+
|
|
7
|
+
dirs: PlatformDirs = PlatformDirs(
|
|
8
|
+
appname="micoo",
|
|
9
|
+
appauthor=False,
|
|
10
|
+
version=None,
|
|
11
|
+
roaming=False,
|
|
12
|
+
ensure_exists=True,
|
|
13
|
+
)
|
|
14
|
+
"""Platform-specific directories for the application."""
|
|
15
|
+
repository_path: Path = dirs.user_cache_path / "mise-cookbooks"
|
|
16
|
+
"""Path to the local repository of Mise cookbooks."""
|
|
17
|
+
log_file_path: Path = dirs.user_log_path / "micoo.log"
|
|
18
|
+
"""Path to the log file."""
|
|
19
|
+
cookbooks_repository_url: str = "https://github.com/hasansezertasan/mise-cookbooks"
|
|
20
|
+
"""URL of the remote repository of Mise cookbooks."""
|
|
21
|
+
micoo_repository_url: str = "https://github.com/hasansezertasan/micoo"
|
|
22
|
+
"""URL of the remote repository of micoo."""
|
|
23
|
+
file_extension: str = ".mise.toml"
|
|
24
|
+
"""File extension for globing cookbooks."""
|
micoo/logging_setup.py
ADDED
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
"""Set up logging for the micoo application."""
|
|
2
|
+
|
|
3
|
+
import logging
|
|
4
|
+
|
|
5
|
+
from micoo.config import log_file_path
|
|
6
|
+
|
|
7
|
+
logger = logging.getLogger("micoo")
|
|
8
|
+
logger.setLevel(logging.ERROR)
|
|
9
|
+
# Create a file handler that logs error messages
|
|
10
|
+
file_handler = logging.FileHandler(log_file_path)
|
|
11
|
+
file_handler.setLevel(logging.ERROR)
|
|
12
|
+
# Create a formatter and set it for the handler
|
|
13
|
+
formatter = logging.Formatter("%(asctime)s - %(name)s - %(levelname)s - %(message)s")
|
|
14
|
+
file_handler.setFormatter(formatter)
|
|
15
|
+
# Add the handler to the logger
|
|
16
|
+
logger.addHandler(file_handler)
|
micoo/main.py
ADDED
|
@@ -0,0 +1,283 @@
|
|
|
1
|
+
"""micoo is a command-line tool for easily accessing mise cookbooks."""
|
|
2
|
+
|
|
3
|
+
from __future__ import annotations
|
|
4
|
+
|
|
5
|
+
import platform
|
|
6
|
+
from importlib.metadata import version
|
|
7
|
+
from typing import Union
|
|
8
|
+
|
|
9
|
+
import typer
|
|
10
|
+
from git import GitCommandError, Repo
|
|
11
|
+
|
|
12
|
+
from micoo.config import (
|
|
13
|
+
cookbooks_repository_url,
|
|
14
|
+
dirs,
|
|
15
|
+
file_extension,
|
|
16
|
+
micoo_repository_url,
|
|
17
|
+
repository_path,
|
|
18
|
+
)
|
|
19
|
+
from micoo.logging_setup import logger
|
|
20
|
+
|
|
21
|
+
app = typer.Typer(
|
|
22
|
+
name="micoo is a command-line tool for easily accessing mise cookbooks.",
|
|
23
|
+
no_args_is_help=True,
|
|
24
|
+
rich_markup_mode="rich",
|
|
25
|
+
)
|
|
26
|
+
|
|
27
|
+
|
|
28
|
+
cookbook_template = """### Generated by micoo ({micoo_repository_url})
|
|
29
|
+
### {remote_web_root}
|
|
30
|
+
{content}
|
|
31
|
+
"""
|
|
32
|
+
|
|
33
|
+
|
|
34
|
+
@app.command()
|
|
35
|
+
def update() -> None:
|
|
36
|
+
"""Clone or fetch the `mise-cookbooks` repository.
|
|
37
|
+
|
|
38
|
+
Update the repository to the latest version:
|
|
39
|
+
micoo update
|
|
40
|
+
|
|
41
|
+
Example output:
|
|
42
|
+
Repository pulled successfully.
|
|
43
|
+
"""
|
|
44
|
+
repo: Union[Repo, None] = None
|
|
45
|
+
try:
|
|
46
|
+
msg = f"Cloning repository from {cookbooks_repository_url} to {repository_path}"
|
|
47
|
+
if not repository_path.exists():
|
|
48
|
+
logger.info(msg)
|
|
49
|
+
repo = Repo.clone_from(
|
|
50
|
+
url=cookbooks_repository_url,
|
|
51
|
+
to_path=repository_path,
|
|
52
|
+
branch="main",
|
|
53
|
+
)
|
|
54
|
+
typer.echo("Repository cloned successfully.")
|
|
55
|
+
return
|
|
56
|
+
msg = f"Repository already exists at {repository_path}, pulling latest changes."
|
|
57
|
+
logger.info(msg)
|
|
58
|
+
repo = Repo(repository_path)
|
|
59
|
+
repo.remotes[0].pull()
|
|
60
|
+
typer.echo("Repository pulled successfully.")
|
|
61
|
+
except GitCommandError as e:
|
|
62
|
+
logger.error(f"Git command error: {e}")
|
|
63
|
+
typer.echo("An error occurred while cloning/pulling the repository.")
|
|
64
|
+
except Exception as e: # noqa: BLE001
|
|
65
|
+
logger.error(f"An unexpected error occurred: {e}")
|
|
66
|
+
typer.echo("An error occurred while cloning/pulling the repository.")
|
|
67
|
+
|
|
68
|
+
|
|
69
|
+
@app.command(name="list")
|
|
70
|
+
def list_cookbooks() -> None:
|
|
71
|
+
"""List the available mise cookbooks.
|
|
72
|
+
|
|
73
|
+
List all available cookbooks:
|
|
74
|
+
micoo list
|
|
75
|
+
|
|
76
|
+
Example output:
|
|
77
|
+
Available cookbooks:
|
|
78
|
+
- terraform
|
|
79
|
+
- python
|
|
80
|
+
- cpp
|
|
81
|
+
- pnpm
|
|
82
|
+
- node
|
|
83
|
+
- ruby-on-rails
|
|
84
|
+
- opentofu
|
|
85
|
+
"""
|
|
86
|
+
if not repository_path.exists():
|
|
87
|
+
typer.echo("No cookbooks found. Please clone/pull the repository first.")
|
|
88
|
+
return
|
|
89
|
+
cookbooks = repository_path.rglob(pattern="*" + file_extension)
|
|
90
|
+
if not cookbooks:
|
|
91
|
+
typer.echo("No cookbooks found.")
|
|
92
|
+
else:
|
|
93
|
+
typer.echo("Available cookbooks:")
|
|
94
|
+
for cookbook_path in cookbooks:
|
|
95
|
+
typer.echo(f"- {cookbook_path.name[:-10]}")
|
|
96
|
+
|
|
97
|
+
|
|
98
|
+
@app.command()
|
|
99
|
+
def search(
|
|
100
|
+
name: str = typer.Argument(..., help="Name of the cookbook to search for."),
|
|
101
|
+
) -> None:
|
|
102
|
+
"""Search for a mise cookbook.
|
|
103
|
+
|
|
104
|
+
Search for a "generic" cookbook:
|
|
105
|
+
micoo search generic
|
|
106
|
+
|
|
107
|
+
Example output:
|
|
108
|
+
No cookbooks found matching 'generic'.
|
|
109
|
+
|
|
110
|
+
Search for a cookbook that contains "on" in its name:
|
|
111
|
+
micoo search on
|
|
112
|
+
|
|
113
|
+
Example output:
|
|
114
|
+
python
|
|
115
|
+
ruby-on-rails
|
|
116
|
+
"""
|
|
117
|
+
if not repository_path.exists():
|
|
118
|
+
typer.echo("No cookbooks found. Please fetch the repository first.")
|
|
119
|
+
return
|
|
120
|
+
|
|
121
|
+
found = False
|
|
122
|
+
search_term = name.lower()
|
|
123
|
+
for cookbook_path in repository_path.rglob(pattern="*" + file_extension):
|
|
124
|
+
filename = cookbook_path.name[: -len(file_extension)]
|
|
125
|
+
if search_term in filename.lower():
|
|
126
|
+
typer.echo(filename)
|
|
127
|
+
found = True
|
|
128
|
+
if not found:
|
|
129
|
+
typer.echo(f"No cookbooks found matching '{name}'.")
|
|
130
|
+
|
|
131
|
+
|
|
132
|
+
@app.command()
|
|
133
|
+
def dump(
|
|
134
|
+
name: str = typer.Argument(
|
|
135
|
+
..., help="Name of the cookbook to dump.", metavar="python"
|
|
136
|
+
),
|
|
137
|
+
) -> None:
|
|
138
|
+
"""Dump a mise cookbook.
|
|
139
|
+
|
|
140
|
+
Dump a specific cookbook to the console:
|
|
141
|
+
micoo dump python
|
|
142
|
+
|
|
143
|
+
Example output:
|
|
144
|
+
### Generated by micoo (https://github.com/hasansezertasan/micoo)
|
|
145
|
+
### https://raw.github.com/hasansezertasan/mise-cookbooks/81747c2e983fa1278005c8cb8b0e311a7726923a/python.mise.toml
|
|
146
|
+
min_version = "2024.9.5"
|
|
147
|
+
|
|
148
|
+
[env]
|
|
149
|
+
# Use the project name derived from the current directory
|
|
150
|
+
PROJECT_NAME = "{{ config_root | basename }}"
|
|
151
|
+
|
|
152
|
+
# Automatic virtualenv activation
|
|
153
|
+
_.python.venv = { path = ".venv", create = true }
|
|
154
|
+
|
|
155
|
+
[tools]
|
|
156
|
+
python = "{{ get_env(name='PYTHON_VERSION', default='3.11') }}"
|
|
157
|
+
ruff = "latest"
|
|
158
|
+
|
|
159
|
+
[tasks.install]
|
|
160
|
+
description = "Install dependencies"
|
|
161
|
+
alias = "i"
|
|
162
|
+
run = "uv pip install -r requirements.txt"
|
|
163
|
+
|
|
164
|
+
[tasks.run]
|
|
165
|
+
description = "Run the application"
|
|
166
|
+
run = "python app.py"
|
|
167
|
+
|
|
168
|
+
[tasks.test]
|
|
169
|
+
description = "Run tests"
|
|
170
|
+
run = "pytest tests/"
|
|
171
|
+
|
|
172
|
+
[tasks.lint]
|
|
173
|
+
description = "Lint the code"
|
|
174
|
+
run = "ruff src/"
|
|
175
|
+
|
|
176
|
+
[tasks.info]
|
|
177
|
+
description = "Print project information"
|
|
178
|
+
run = '''
|
|
179
|
+
echo "Project: $PROJECT_NAME"
|
|
180
|
+
echo "Virtual Environment: $VIRTUAL_ENV"
|
|
181
|
+
'''
|
|
182
|
+
|
|
183
|
+
|
|
184
|
+
Dump a specific cookbook to a file:
|
|
185
|
+
micoo dump python > .mise.toml
|
|
186
|
+
"""
|
|
187
|
+
cookbook_path = repository_path / (name + file_extension)
|
|
188
|
+
if not cookbook_path.exists():
|
|
189
|
+
typer.echo(f"Cookbook '{name}' not found.")
|
|
190
|
+
return
|
|
191
|
+
|
|
192
|
+
repo = Repo(repository_path)
|
|
193
|
+
revision_hash = repo.head.commit.hexsha
|
|
194
|
+
|
|
195
|
+
with cookbook_path.open() as f:
|
|
196
|
+
content = f.read()
|
|
197
|
+
repository_url_raw = cookbooks_repository_url.replace(
|
|
198
|
+
"https://github.com",
|
|
199
|
+
"https://raw.github.com",
|
|
200
|
+
)
|
|
201
|
+
remote_web_root = (
|
|
202
|
+
repository_url_raw + "/" + revision_hash + "/" + name + file_extension
|
|
203
|
+
)
|
|
204
|
+
typer.echo(
|
|
205
|
+
cookbook_template.format(
|
|
206
|
+
micoo_repository_url=micoo_repository_url,
|
|
207
|
+
remote_web_root=remote_web_root,
|
|
208
|
+
content=content,
|
|
209
|
+
),
|
|
210
|
+
)
|
|
211
|
+
|
|
212
|
+
|
|
213
|
+
@app.command()
|
|
214
|
+
def root() -> None:
|
|
215
|
+
"""Show the path to the micoo boilerplates directory.
|
|
216
|
+
|
|
217
|
+
Show the root directory:
|
|
218
|
+
micoo root
|
|
219
|
+
|
|
220
|
+
Example output:
|
|
221
|
+
/Users/hasansezertasan/Library/Application Support/micoo/mise-cookbooks
|
|
222
|
+
|
|
223
|
+
Open the root directory in a file manager:
|
|
224
|
+
open $(micoo root)
|
|
225
|
+
|
|
226
|
+
"""
|
|
227
|
+
typer.echo(dirs.user_data_path)
|
|
228
|
+
|
|
229
|
+
|
|
230
|
+
@app.command()
|
|
231
|
+
def remote() -> None:
|
|
232
|
+
"""Show the URL to the remote repository.
|
|
233
|
+
|
|
234
|
+
Show the remote URL
|
|
235
|
+
micoo remote
|
|
236
|
+
|
|
237
|
+
Example output:
|
|
238
|
+
https://github.com/hasansezertasan/mise-cookbooks
|
|
239
|
+
|
|
240
|
+
Open the remote URL in a web browser
|
|
241
|
+
open $(micoo remote)
|
|
242
|
+
"""
|
|
243
|
+
typer.echo(cookbooks_repository_url)
|
|
244
|
+
|
|
245
|
+
|
|
246
|
+
@app.command(name="version")
|
|
247
|
+
def show_version() -> None:
|
|
248
|
+
"""Show the current version number of micoo.
|
|
249
|
+
|
|
250
|
+
Show the version number:
|
|
251
|
+
micoo version
|
|
252
|
+
|
|
253
|
+
Example output:
|
|
254
|
+
0.1.dev0+d20250726
|
|
255
|
+
"""
|
|
256
|
+
typer.echo(version("micoo"))
|
|
257
|
+
|
|
258
|
+
|
|
259
|
+
@app.command()
|
|
260
|
+
def info() -> None:
|
|
261
|
+
"""Display information about the micoo application.
|
|
262
|
+
|
|
263
|
+
Show application information:
|
|
264
|
+
micoo info
|
|
265
|
+
|
|
266
|
+
Example output:
|
|
267
|
+
Application Version: 0.1.dev0+d20250726
|
|
268
|
+
Python Version: 3.8.20 (CPython)
|
|
269
|
+
Platform: Darwin
|
|
270
|
+
Repository Path: /Users/hasansezertasan/Library/Caches/micoo/mise-cookbooks
|
|
271
|
+
Repository URL: https://github.com/hasansezertasan/mise-cookbooks/tree/81747c2e983fa1278005c8cb8b0e311a7726923a
|
|
272
|
+
"""
|
|
273
|
+
python_version = platform.python_version()
|
|
274
|
+
python_implementation = platform.python_implementation()
|
|
275
|
+
typer.echo(f"Application Version: {version('micoo')}")
|
|
276
|
+
typer.echo(f"Python Version: {python_version} ({python_implementation})")
|
|
277
|
+
typer.echo(f"Platform: {platform.system()}")
|
|
278
|
+
typer.echo(f"Repository Path: {repository_path}")
|
|
279
|
+
url = "N/A"
|
|
280
|
+
if repository_path.exists():
|
|
281
|
+
repo = Repo(repository_path)
|
|
282
|
+
url = f"{cookbooks_repository_url}/tree/{repo.head.commit.hexsha}"
|
|
283
|
+
typer.echo(f"Repository URL: {url}")
|
micoo/py.typed
ADDED
|
File without changes
|
|
@@ -0,0 +1,233 @@
|
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
|
+
Name: micoo
|
|
3
|
+
Version: 0.1.0
|
|
4
|
+
Summary: micoo is a command-line tool for easily accessing mise cookbooks
|
|
5
|
+
Project-URL: Documentation, https://github.com/hasansezertasan/micoo#readme
|
|
6
|
+
Project-URL: Homepage, https://github.com/hasansezertasan/micoo
|
|
7
|
+
Project-URL: Source, https://github.com/hasansezertasan/micoo
|
|
8
|
+
Author-email: Hasan Sezer Taşan <hasansezertasan@gmail.com>
|
|
9
|
+
Maintainer-email: hasansezertasan <hasansezertasan@gmail.com>
|
|
10
|
+
License-Expression: MIT
|
|
11
|
+
License-File: LICENSE
|
|
12
|
+
Keywords: boilerplate,cli,command-line,cookbook,mise,scaffold,template
|
|
13
|
+
Classifier: Development Status :: 4 - Beta
|
|
14
|
+
Classifier: Environment :: Console
|
|
15
|
+
Classifier: Intended Audience :: Developers
|
|
16
|
+
Classifier: Intended Audience :: Information Technology
|
|
17
|
+
Classifier: Intended Audience :: System Administrators
|
|
18
|
+
Classifier: License :: OSI Approved :: MIT License
|
|
19
|
+
Classifier: Operating System :: OS Independent
|
|
20
|
+
Classifier: Programming Language :: Python
|
|
21
|
+
Classifier: Programming Language :: Python :: 3
|
|
22
|
+
Classifier: Programming Language :: Python :: 3 :: Only
|
|
23
|
+
Classifier: Programming Language :: Python :: 3.8
|
|
24
|
+
Classifier: Programming Language :: Python :: 3.9
|
|
25
|
+
Classifier: Programming Language :: Python :: 3.10
|
|
26
|
+
Classifier: Programming Language :: Python :: 3.11
|
|
27
|
+
Classifier: Programming Language :: Python :: 3.12
|
|
28
|
+
Classifier: Programming Language :: Python :: 3.13
|
|
29
|
+
Classifier: Programming Language :: Python :: Implementation :: CPython
|
|
30
|
+
Classifier: Programming Language :: Python :: Implementation :: PyPy
|
|
31
|
+
Classifier: Topic :: Internet
|
|
32
|
+
Classifier: Topic :: Software Development
|
|
33
|
+
Classifier: Topic :: Software Development :: Libraries
|
|
34
|
+
Classifier: Topic :: Software Development :: Libraries :: Python Modules
|
|
35
|
+
Classifier: Topic :: Terminals
|
|
36
|
+
Classifier: Typing :: Typed
|
|
37
|
+
Requires-Python: >=3.8
|
|
38
|
+
Requires-Dist: gitpython>=3.0.0
|
|
39
|
+
Requires-Dist: platformdirs>=4.0.0
|
|
40
|
+
Requires-Dist: pydantic-settings>=2.8.1
|
|
41
|
+
Requires-Dist: typer>=0.16.0
|
|
42
|
+
Description-Content-Type: text/markdown
|
|
43
|
+
|
|
44
|
+
# micoo: quick access to `mise-cookbooks`
|
|
45
|
+
|
|
46
|
+
<!-- TODO: Make it work, make it right, make it fast. -->
|
|
47
|
+
|
|
48
|
+
[](https://github.com/hasansezertasan/micoo/actions/workflows/ci.yml)
|
|
49
|
+
[](https://pypi.org/project/micoo)
|
|
50
|
+
[](https://pypi.org/project/micoo)
|
|
51
|
+
[](https://opensource.org/licenses/MIT)
|
|
52
|
+
[][micoo]
|
|
53
|
+
|
|
54
|
+
<!-- [](https://codecov.io/gh/hasansezertasan/micoo) -->
|
|
55
|
+
|
|
56
|
+
<!-- [](https://codecov.io/gh/hasansezertasan/micoo) -->
|
|
57
|
+
|
|
58
|
+
<!-- [](https://codecov.io/gh/hasansezertasan/micoo) -->
|
|
59
|
+
|
|
60
|
+
[](http://mypy-lang.org/)
|
|
61
|
+
[](https://github.com/astral-sh/ruff)
|
|
62
|
+
[](https://github.com/hasansezertasan/micoo/releases/)
|
|
63
|
+
|
|
64
|
+
[](https://pepy.tech/project/micoo)
|
|
65
|
+
[](https://pepy.tech/project/micoo)
|
|
66
|
+
[](https://pepy.tech/project/micoo)
|
|
67
|
+
|
|
68
|
+
`micoo` (short for **mise cookbooks**) is a :zap: command-line tool that makes it easy to access [mise] configuration files from [mise-cookbooks] :books:.
|
|
69
|
+
|
|
70
|
+
## Typical Usage :rocket:
|
|
71
|
+
|
|
72
|
+
```sh
|
|
73
|
+
# List available cookbooks
|
|
74
|
+
micoo list
|
|
75
|
+
|
|
76
|
+
# Create a new mise.toml with a cookbook
|
|
77
|
+
micoo dump python > mise.toml
|
|
78
|
+
```
|
|
79
|
+
|
|
80
|
+
## Features :sparkles:
|
|
81
|
+
|
|
82
|
+
- 🚀 Quick access to [mise-cookbooks]
|
|
83
|
+
- 📚 Easy cookbook listing and content viewing
|
|
84
|
+
- 💾 Simple dumping of cookbooks to mise.toml
|
|
85
|
+
- 🔄 Repository cloning and updating
|
|
86
|
+
- 🌐 Browser integration for quick repository access
|
|
87
|
+
|
|
88
|
+
## Installation :package:
|
|
89
|
+
|
|
90
|
+
There are several ways to install `micoo`! :rocket: I recommend using (obviously) [mise] :hammer_and_wrench:. Here's how to do it:
|
|
91
|
+
|
|
92
|
+
```sh
|
|
93
|
+
mise install pipx:micoo
|
|
94
|
+
```
|
|
95
|
+
|
|
96
|
+
Alternatively, you can install it using `uv tool install micoo` :jigsaw:
|
|
97
|
+
|
|
98
|
+
```sh
|
|
99
|
+
uv tool install micoo
|
|
100
|
+
```
|
|
101
|
+
|
|
102
|
+
## Command Reference :book:
|
|
103
|
+
|
|
104
|
+
Here is the output of the `micoo --help` command:
|
|
105
|
+
|
|
106
|
+
```sh
|
|
107
|
+
Usage: micoo [OPTIONS] COMMAND [ARGS]...
|
|
108
|
+
╭─ Options ─────────────────────────────────────────────────────────────────────────────╮
|
|
109
|
+
│ --install-completion Install completion for the current shell. │
|
|
110
|
+
│ --show-completion Show completion for the current shell, to copy it or │
|
|
111
|
+
│ customize the installation. │
|
|
112
|
+
│ --help Show this message and exit. │
|
|
113
|
+
╰───────────────────────────────────────────────────────────────────────────────────────╯
|
|
114
|
+
╭─ Commands ────────────────────────────────────────────────────────────────────────────╮
|
|
115
|
+
│ update Clone or fetch the `mise-cookbooks` repository. │
|
|
116
|
+
│ list List the available mise cookbooks. │
|
|
117
|
+
│ search Search for a mise cookbook. │
|
|
118
|
+
│ dump Dump a mise cookbook. │
|
|
119
|
+
│ root Show the path to the micoo boilerplates directory. │
|
|
120
|
+
│ remote Show the URL to the remote repository. │
|
|
121
|
+
│ version Show the current version number of micoo. │
|
|
122
|
+
│ info Display information about the micoo application. │
|
|
123
|
+
╰───────────────────────────────────────────────────────────────────────────────────────╯
|
|
124
|
+
```
|
|
125
|
+
|
|
126
|
+
## Usage :hammer_and_wrench:
|
|
127
|
+
|
|
128
|
+
You can use the `micoo` command to interact with [mise-cookbooks]. Here are some common commands:
|
|
129
|
+
|
|
130
|
+
List all available cookbooks:
|
|
131
|
+
|
|
132
|
+
```sh
|
|
133
|
+
micoo list
|
|
134
|
+
```
|
|
135
|
+
|
|
136
|
+
This will output:
|
|
137
|
+
|
|
138
|
+
```sh
|
|
139
|
+
Available cookbooks:
|
|
140
|
+
- terraform
|
|
141
|
+
- python
|
|
142
|
+
- cpp
|
|
143
|
+
- pnpm
|
|
144
|
+
- node
|
|
145
|
+
- ruby-on-rails
|
|
146
|
+
- opentofu
|
|
147
|
+
```
|
|
148
|
+
|
|
149
|
+
Dump a specific cookbook to a `mise.toml` file:
|
|
150
|
+
|
|
151
|
+
```sh
|
|
152
|
+
micoo dump python > mise.toml
|
|
153
|
+
```
|
|
154
|
+
|
|
155
|
+
Open the [mise-cookbooks] repository in the browser:
|
|
156
|
+
|
|
157
|
+
```sh
|
|
158
|
+
open $(micoo remote)
|
|
159
|
+
```
|
|
160
|
+
|
|
161
|
+
Open the cloned repository in the file manager:
|
|
162
|
+
|
|
163
|
+
```sh
|
|
164
|
+
open $(micoo root)
|
|
165
|
+
```
|
|
166
|
+
|
|
167
|
+
Show the current version of `micoo`:
|
|
168
|
+
|
|
169
|
+
```sh
|
|
170
|
+
micoo version
|
|
171
|
+
```
|
|
172
|
+
|
|
173
|
+
Show the information about the `micoo` application:
|
|
174
|
+
|
|
175
|
+
```sh
|
|
176
|
+
micoo info
|
|
177
|
+
```
|
|
178
|
+
|
|
179
|
+
## Support :heart:
|
|
180
|
+
|
|
181
|
+
If you have any questions or need help, feel free to open an issue on the [GitHub repository][micoo].
|
|
182
|
+
|
|
183
|
+
## Author :person_with_crown:
|
|
184
|
+
|
|
185
|
+
This project is maintained by [Hasan Sezer Taşan][author], It's me :wave:
|
|
186
|
+
|
|
187
|
+
## Contributing :heart:
|
|
188
|
+
|
|
189
|
+
Any contributions are welcome! Please follow the [Contributing Guidelines](https://github.com/hasansezertasan/micoo/tree/main./CONTRIBUTING.md) to contribute to this project.
|
|
190
|
+
|
|
191
|
+
## Development :toolbox:
|
|
192
|
+
|
|
193
|
+
To set up the development environment:
|
|
194
|
+
|
|
195
|
+
```sh
|
|
196
|
+
# Clone the repository
|
|
197
|
+
git clone https://github.com/hasansezertasan/micoo.git
|
|
198
|
+
cd micoo
|
|
199
|
+
|
|
200
|
+
# Install development dependencies
|
|
201
|
+
uv sync
|
|
202
|
+
|
|
203
|
+
# Update the code...
|
|
204
|
+
|
|
205
|
+
# Run tests
|
|
206
|
+
uv run --locked tox run
|
|
207
|
+
|
|
208
|
+
# Add a new git tag.
|
|
209
|
+
git tag -a v0.1.0 -m "bump: version 0.0.0 → 0.1.0"
|
|
210
|
+
|
|
211
|
+
# Build the package
|
|
212
|
+
uv build
|
|
213
|
+
```
|
|
214
|
+
|
|
215
|
+
## Related Projects :chains:
|
|
216
|
+
|
|
217
|
+
- [mise] - The official mise project
|
|
218
|
+
- [mise-cookbooks] - Collection of mise cookbooks
|
|
219
|
+
|
|
220
|
+
## Changelog :memo:
|
|
221
|
+
|
|
222
|
+
For a detailed list of changes, please refer to the [CHANGELOG](https://github.com/hasansezertasan/micoo/tree/main./CHANGELOG.md).
|
|
223
|
+
|
|
224
|
+
## License :scroll:
|
|
225
|
+
|
|
226
|
+
This project is licensed under the [MIT License](https://opensource.org/license/MIT).
|
|
227
|
+
|
|
228
|
+
<!-- Refs -->
|
|
229
|
+
|
|
230
|
+
[mise-cookbooks]: https://github.com/hasansezertasan/mise-cookbooks
|
|
231
|
+
[mise]: https://github.com/jdx/mise
|
|
232
|
+
[author]: https://github.com/hasansezertasan
|
|
233
|
+
[micoo]: https://github.com/hasansezertasan/micoo
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
micoo/__init__.py,sha256=m39EhV293qWLw_lB-_syDz_y5b2NO32CLzPgljFINpQ,45
|
|
2
|
+
micoo/__main__.py,sha256=uXzo5xrEHV5S6FJ3UTfWbbbMtLeo1zFNiu2ZOFVg75g,91
|
|
3
|
+
micoo/_version.py,sha256=-LyU5F1uZDjn6Q8_Z6-_FJt_8RE4Kq9zcKdg1abSSps,511
|
|
4
|
+
micoo/config.py,sha256=HA4RI6cqeOgfn650RkmYQAy2SyhpAZE3uFfX2-0QQqE,852
|
|
5
|
+
micoo/logging_setup.py,sha256=HZDMu-GEu2m52Pgjo9Nj32XOgFBHin9_wM1d-8W741c,543
|
|
6
|
+
micoo/main.py,sha256=uBiqjxb-TSmg9HwQjT207OkXS_LctCTFczhIn7TeVwQ,7890
|
|
7
|
+
micoo/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
8
|
+
micoo-0.1.0.dist-info/METADATA,sha256=L3NwjjPv8HGEwXAXQ8ImRDcwFB9mzL9UZllOSac1PaU,8980
|
|
9
|
+
micoo-0.1.0.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
|
|
10
|
+
micoo-0.1.0.dist-info/entry_points.txt,sha256=TrTKBA54I9cnPpDhVny0Iyh_Zk_jlQb2KOXpFB5l2YA,41
|
|
11
|
+
micoo-0.1.0.dist-info/licenses/LICENSE,sha256=SvTnky8ZKfPQNlBre40E-1L8ajWf6BGUbk39FhJJbik,1075
|
|
12
|
+
micoo-0.1.0.dist-info/RECORD,,
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2025 Hasan Sezer Taşan
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|