shomei


Nameshomei JSON
Version 0.2.4 PyPI version JSON
download
home_pagehttps://github.com/petarran/shomei
SummaryShow off your coding contributions without leaking corporate IP
upload_time2025-08-22 16:19:09
maintainerNone
docs_urlNone
authorshomei contributors
requires_python>=3.10
licenseMIT
keywords git github contributions privacy corporate sanitize
VCS
bugtrack_url
requirements No requirements were recorded.
Travis-CI No Travis.
coveralls test coverage No coveralls.
            <img src="assets/logo.png" width="120px" />

> update your github contribution graph to reflect the work you actually did while working from another account

[![Python 3.10+](https://img.shields.io/badge/python-3.10+-blue.svg)](https://www.python.org/downloads/)
[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)

**shōmei** (証明) is a CLI tool that safely updates your personal github graph to reflect the work you did from a corp github account, without ever exposing proprietary code or company IP.

![Hero](assets/hero.png)

transforms your commits into safe, sanitized commits, and publishes them to your personal github profile, so your contribution graph reflects your real effort.

**Showcase your contributions without leaking your company's IP.**

## The Problem

i’m sure by now you’ve seen posts like this floating around the web. 

![problem](assets/screenshot-problem.png)

many developers don’t use their personal github at work, and when they leave a company and start applying elsewhere, it can look like they didn’t do anything the past year, at least to some recruiters. let’s be honest, most devs don’t really care about this stuff, and it doesn’t prove your competency in any real sense, especially since it can easily be faked. this tool is just for those who want to keep everything in order and show that they were active while working from another account.

**shōmei solves this by safely updating your activity graph to reflect your previous work.**

## Features

- **IP protection**: replaces all source code with safe placeholders 
- **contribution showcase**: rewrites commits to reflect your personal work
- **smart filtering**: only processes your own commits

## Quick Start

### Installation

**From PyPI (recommended):**
```bash
pip install shomei
```

**One-command Linux install:**
```bash
curl -sSL https://raw.githubusercontent.com/petarran/shomei/main/scripts/install.sh | bash
```

**From Homebrew (macOS/Linux):**
```bash
# Add our tap and install
brew tap petarran/shomei
brew install shomei
```

**From source:**
```bash
git clone https://github.com/petarran/shomei.git
cd shomei
make install-user  # or: pip install -e .
```

### First Run

```bash
# Initialize configuration with your personal details
shomei init

# Analyze a repository to see what would be processed
shomei analyze /path/to/your/repo

# Process a repository (dry run first!)
shomei process /path/to/your/repo --dry-run

# Process for real
shomei process /path/to/your/repo
```

## Usage

### Commands

#### `shomei init`
initialize your configuration file with personal details.

```bash
shomei init
# prompts for:
# - Personal name for commits
# - Personal email for commits
# Shows welcome message and contributing info
```

#### `shomei logo`
display the shōmei ASCII logo.

```bash
shomei logo
```

#### `shomei contribute`
Show information about contributing to shōmei.

#### `shomei analyze <repo_path>`
analyze a repository to show what would be processed.

```bash
shomei analyze /path/to/repo
# shows:
# - commit analysis by author
# - files that will be stripped/preserved
# - repository statistics
```

#### `shomei process <repo_paths...>`
process one or more repositories and create sanitized versions.

```bash
# process current directory
shomei process

# process specific repositories
shomei process /path/to/repo1 /path/to/repo2

# dry run (preview only)
shomei process --dry-run /path/to/repo

# override personal details
shomei process --personal-email "you@example.com" --personal-name "Your Name" /path/to/repo
```

### Options

- `--dry-run`: Preview changes without applying them
- `--personal-email`: Override personal email from config
- `--personal-name`: Override personal name from config
- `--placeholder-text`: Custom text to replace file contents
- `--output-dir`: Specify output directory for sanitized repo
- `--verbose`: Enable verbose logging
- `--config`: Path to configuration file

## Configuration

Configuration is stored in `~/.shomei/config.yml`:

```yaml
personal_name: "Your Name"
personal_email: "you@example.com"
placeholder_text: "[STRIPPED] Corporate content removed for privacy"
keep_branches: ["main", "master"]
strip_file_extensions: [".py", ".js", ".ts", ".java", ".cpp", ".c", ".h", ".go", ".rs", ".php"]
preserve_file_extensions: [".md", ".txt", ".yml", ".yaml", ".json", ".gitignore"]
```

## How It Works

### Step 1: Repository Detection
- verifies `.git` folder exists
- supports multi-repo mode

### Step 2: Git User Detection
- auto-reads `git config user.name` and `git config user.email`
- prompts for confirmation/change

### Step 3: Commit Filtering
- only keeps commits authored by your corporate email
- uses GitPython for robust filtering

### Step 4: Commit Rewriting
- replaces author/committer with your personal info
- optionally sanitizes commit messages

### Step 5: Content Stripping
- replaces every file with `placeholder.txt`
- prevents any corporate IP from leaving the machine

### Step 6: Cleanup
- keeps only main/master branch
- deletes all other branches and tags

### Step 7: Output
- creates sanitized repository ready for personal use
- safe to push to public GitHub

## Safety Features

- **Content Stripping**: all source code is replaced with placeholder text
- **Author Filtering**: only processes your own commits
- **Dry Run Mode**: preview all changes before applying
- **Temporary Processing**: works on copies, never modifies originals
- **Configurable File Types**: choose what gets stripped vs. preserved

## Requirements

- Python 3.10+
- Git installed and accessible
- Dependencies: GitPython, Click, Rich, PyYAML

## Package Distribution

### Automated Releases

this project uses GitHub Actions for automated releases:

1. **create a release tag:**
   ```bash
   git tag -a v1.0.0 -m "Release v1.0.0"
   git push origin v1.0.0
   ```

2. **GitHub Actions will automatically:**
   - run tests on multiple Python versions
   - build distribution packages
   - publish to PyPI
   - create GitHub release with changelog

### Adding to Package Managers

**Homebrew (macOS/Linux):**
```bash
# Add to Homebrew core or create a custom tap
# brew install petarran/shomei/shomei
```

**Chocolatey (Windows):**
```bash
# choco install shomei
```

**Scoop (Windows):**
```bash
# scoop install shomei
```

**Arch Linux (AUR):**
```bash
# yay -S shomei
```

### Setup Development Environment

```bash
# clone and setup
git clone https://github.com/petarran/shomei.git
cd shomei

# install development dependencies
pip install -e ".[dev]"

# run tests
pytest

# format code
black shomei/

# lint code
flake8 shomei/

# type checking
mypy shomei/
```

### Project Structure

```
shomei/
├── shomei/
│   ├── __init__.py      # Package initialization
│   ├── cli.py           # CLI entry point
│   ├── core.py          # Main processing logic
│   ├── config.py        # Configuration management
│   ├── git_utils.py     # Git utilities
│   └── utils.py         # Helper functions
├── setup.py             # Package setup
├── requirements.txt      # Dependencies
└── README.md            # This file
```

## Contributing

1. fork the repository
2. create a feature branch (`git checkout -b feature/amazing-feature`)
3. commit your changes (`git commit -m 'Add amazing feature'`)
4. push to the branch (`git push origin feature/amazing-feature`)
5. open a Pull Request

## License

this project is licensed under the MIT License - see the [LICENSE](LICENSE) file for details.

## Disclaimer

**shōmei** is designed to help developers showcase their contributions while protecting corporate IP. however:

- always review the output before pushing to ensure no sensitive information remains
- use dry-run mode to preview changes
- consider your company's policies before using this tool
- the authors are not responsible for any data leaks or policy violations

## Acknowledgments

- built with [GitPython](https://gitpython.readthedocs.io/) for robust Git operations
- CLI powered by [Click](https://click.palletsprojects.com/) for excellent user experience
- beautiful output thanks to [Rich](https://rich.readthedocs.io/)

---

**made with ❤️ for developers who want to showcase their work safely.**

            

Raw data

            {
    "_id": null,
    "home_page": "https://github.com/petarran/shomei",
    "name": "shomei",
    "maintainer": null,
    "docs_url": null,
    "requires_python": ">=3.10",
    "maintainer_email": null,
    "keywords": "git, github, contributions, privacy, corporate, sanitize",
    "author": "shomei contributors",
    "author_email": null,
    "download_url": "https://files.pythonhosted.org/packages/fa/ae/7c5d03202f0494064516e87747a0d9d0235928641cedcda67e943b45c88d/shomei-0.2.4.tar.gz",
    "platform": null,
    "description": "<img src=\"assets/logo.png\" width=\"120px\" />\n\n> update your github contribution graph to reflect the work you actually did while working from another account\n\n[![Python 3.10+](https://img.shields.io/badge/python-3.10+-blue.svg)](https://www.python.org/downloads/)\n[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)\n\n**sh\u014dmei** (\u8a3c\u660e) is a CLI tool that safely updates your personal github graph to reflect the work you did from a corp github account, without ever exposing proprietary code or company IP.\n\n![Hero](assets/hero.png)\n\ntransforms your commits into safe, sanitized commits, and publishes them to your personal github profile, so your contribution graph reflects your real effort.\n\n**Showcase your contributions without leaking your company's IP.**\n\n## The Problem\n\ni\u2019m sure by now you\u2019ve seen posts like this floating around the web. \n\n![problem](assets/screenshot-problem.png)\n\nmany developers don\u2019t use their personal github at work, and when they leave a company and start applying elsewhere, it can look like they didn\u2019t do anything the past year, at least to some recruiters. let\u2019s be honest, most devs don\u2019t really care about this stuff, and it doesn\u2019t prove your competency in any real sense, especially since it can easily be faked. this tool is just for those who want to keep everything in order and show that they were active while working from another account.\n\n**sh\u014dmei solves this by safely updating your activity graph to reflect your previous work.**\n\n## Features\n\n- **IP protection**: replaces all source code with safe placeholders \n- **contribution showcase**: rewrites commits to reflect your personal work\n- **smart filtering**: only processes your own commits\n\n## Quick Start\n\n### Installation\n\n**From PyPI (recommended):**\n```bash\npip install shomei\n```\n\n**One-command Linux install:**\n```bash\ncurl -sSL https://raw.githubusercontent.com/petarran/shomei/main/scripts/install.sh | bash\n```\n\n**From Homebrew (macOS/Linux):**\n```bash\n# Add our tap and install\nbrew tap petarran/shomei\nbrew install shomei\n```\n\n**From source:**\n```bash\ngit clone https://github.com/petarran/shomei.git\ncd shomei\nmake install-user  # or: pip install -e .\n```\n\n### First Run\n\n```bash\n# Initialize configuration with your personal details\nshomei init\n\n# Analyze a repository to see what would be processed\nshomei analyze /path/to/your/repo\n\n# Process a repository (dry run first!)\nshomei process /path/to/your/repo --dry-run\n\n# Process for real\nshomei process /path/to/your/repo\n```\n\n## Usage\n\n### Commands\n\n#### `shomei init`\ninitialize your configuration file with personal details.\n\n```bash\nshomei init\n# prompts for:\n# - Personal name for commits\n# - Personal email for commits\n# Shows welcome message and contributing info\n```\n\n#### `shomei logo`\ndisplay the sh\u014dmei ASCII logo.\n\n```bash\nshomei logo\n```\n\n#### `shomei contribute`\nShow information about contributing to sh\u014dmei.\n\n#### `shomei analyze <repo_path>`\nanalyze a repository to show what would be processed.\n\n```bash\nshomei analyze /path/to/repo\n# shows:\n# - commit analysis by author\n# - files that will be stripped/preserved\n# - repository statistics\n```\n\n#### `shomei process <repo_paths...>`\nprocess one or more repositories and create sanitized versions.\n\n```bash\n# process current directory\nshomei process\n\n# process specific repositories\nshomei process /path/to/repo1 /path/to/repo2\n\n# dry run (preview only)\nshomei process --dry-run /path/to/repo\n\n# override personal details\nshomei process --personal-email \"you@example.com\" --personal-name \"Your Name\" /path/to/repo\n```\n\n### Options\n\n- `--dry-run`: Preview changes without applying them\n- `--personal-email`: Override personal email from config\n- `--personal-name`: Override personal name from config\n- `--placeholder-text`: Custom text to replace file contents\n- `--output-dir`: Specify output directory for sanitized repo\n- `--verbose`: Enable verbose logging\n- `--config`: Path to configuration file\n\n## Configuration\n\nConfiguration is stored in `~/.shomei/config.yml`:\n\n```yaml\npersonal_name: \"Your Name\"\npersonal_email: \"you@example.com\"\nplaceholder_text: \"[STRIPPED] Corporate content removed for privacy\"\nkeep_branches: [\"main\", \"master\"]\nstrip_file_extensions: [\".py\", \".js\", \".ts\", \".java\", \".cpp\", \".c\", \".h\", \".go\", \".rs\", \".php\"]\npreserve_file_extensions: [\".md\", \".txt\", \".yml\", \".yaml\", \".json\", \".gitignore\"]\n```\n\n## How It Works\n\n### Step 1: Repository Detection\n- verifies `.git` folder exists\n- supports multi-repo mode\n\n### Step 2: Git User Detection\n- auto-reads `git config user.name` and `git config user.email`\n- prompts for confirmation/change\n\n### Step 3: Commit Filtering\n- only keeps commits authored by your corporate email\n- uses GitPython for robust filtering\n\n### Step 4: Commit Rewriting\n- replaces author/committer with your personal info\n- optionally sanitizes commit messages\n\n### Step 5: Content Stripping\n- replaces every file with `placeholder.txt`\n- prevents any corporate IP from leaving the machine\n\n### Step 6: Cleanup\n- keeps only main/master branch\n- deletes all other branches and tags\n\n### Step 7: Output\n- creates sanitized repository ready for personal use\n- safe to push to public GitHub\n\n## Safety Features\n\n- **Content Stripping**: all source code is replaced with placeholder text\n- **Author Filtering**: only processes your own commits\n- **Dry Run Mode**: preview all changes before applying\n- **Temporary Processing**: works on copies, never modifies originals\n- **Configurable File Types**: choose what gets stripped vs. preserved\n\n## Requirements\n\n- Python 3.10+\n- Git installed and accessible\n- Dependencies: GitPython, Click, Rich, PyYAML\n\n## Package Distribution\n\n### Automated Releases\n\nthis project uses GitHub Actions for automated releases:\n\n1. **create a release tag:**\n   ```bash\n   git tag -a v1.0.0 -m \"Release v1.0.0\"\n   git push origin v1.0.0\n   ```\n\n2. **GitHub Actions will automatically:**\n   - run tests on multiple Python versions\n   - build distribution packages\n   - publish to PyPI\n   - create GitHub release with changelog\n\n### Adding to Package Managers\n\n**Homebrew (macOS/Linux):**\n```bash\n# Add to Homebrew core or create a custom tap\n# brew install petarran/shomei/shomei\n```\n\n**Chocolatey (Windows):**\n```bash\n# choco install shomei\n```\n\n**Scoop (Windows):**\n```bash\n# scoop install shomei\n```\n\n**Arch Linux (AUR):**\n```bash\n# yay -S shomei\n```\n\n### Setup Development Environment\n\n```bash\n# clone and setup\ngit clone https://github.com/petarran/shomei.git\ncd shomei\n\n# install development dependencies\npip install -e \".[dev]\"\n\n# run tests\npytest\n\n# format code\nblack shomei/\n\n# lint code\nflake8 shomei/\n\n# type checking\nmypy shomei/\n```\n\n### Project Structure\n\n```\nshomei/\n\u251c\u2500\u2500 shomei/\n\u2502   \u251c\u2500\u2500 __init__.py      # Package initialization\n\u2502   \u251c\u2500\u2500 cli.py           # CLI entry point\n\u2502   \u251c\u2500\u2500 core.py          # Main processing logic\n\u2502   \u251c\u2500\u2500 config.py        # Configuration management\n\u2502   \u251c\u2500\u2500 git_utils.py     # Git utilities\n\u2502   \u2514\u2500\u2500 utils.py         # Helper functions\n\u251c\u2500\u2500 setup.py             # Package setup\n\u251c\u2500\u2500 requirements.txt      # Dependencies\n\u2514\u2500\u2500 README.md            # This file\n```\n\n## Contributing\n\n1. fork the repository\n2. create a feature branch (`git checkout -b feature/amazing-feature`)\n3. commit your changes (`git commit -m 'Add amazing feature'`)\n4. push to the branch (`git push origin feature/amazing-feature`)\n5. open a Pull Request\n\n## License\n\nthis project is licensed under the MIT License - see the [LICENSE](LICENSE) file for details.\n\n## Disclaimer\n\n**sh\u014dmei** is designed to help developers showcase their contributions while protecting corporate IP. however:\n\n- always review the output before pushing to ensure no sensitive information remains\n- use dry-run mode to preview changes\n- consider your company's policies before using this tool\n- the authors are not responsible for any data leaks or policy violations\n\n## Acknowledgments\n\n- built with [GitPython](https://gitpython.readthedocs.io/) for robust Git operations\n- CLI powered by [Click](https://click.palletsprojects.com/) for excellent user experience\n- beautiful output thanks to [Rich](https://rich.readthedocs.io/)\n\n---\n\n**made with \u2764\ufe0f for developers who want to showcase their work safely.**\n",
    "bugtrack_url": null,
    "license": "MIT",
    "summary": "Show off your coding contributions without leaking corporate IP",
    "version": "0.2.4",
    "project_urls": {
        "Documentation": "https://github.com/petarran/shomei#readme",
        "Homepage": "https://github.com/petarran/shomei",
        "Issues": "https://github.com/petarran/shomei/issues",
        "Repository": "https://github.com/petarran/shomei"
    },
    "split_keywords": [
        "git",
        " github",
        " contributions",
        " privacy",
        " corporate",
        " sanitize"
    ],
    "urls": [
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "d1c8c2c57a0551725bbb324ebee409e0e2a0e2a443b82a771e70db72a5a9d3c5",
                "md5": "31d2eb0c1b308182207974c8c67e661e",
                "sha256": "fd735751c9c091dc3d6f8b328e6b7efc716d4eedecad242327b30b00fd7c9bf2"
            },
            "downloads": -1,
            "filename": "shomei-0.2.4-py3-none-any.whl",
            "has_sig": false,
            "md5_digest": "31d2eb0c1b308182207974c8c67e661e",
            "packagetype": "bdist_wheel",
            "python_version": "py3",
            "requires_python": ">=3.10",
            "size": 16900,
            "upload_time": "2025-08-22T16:19:08",
            "upload_time_iso_8601": "2025-08-22T16:19:08.311959Z",
            "url": "https://files.pythonhosted.org/packages/d1/c8/c2c57a0551725bbb324ebee409e0e2a0e2a443b82a771e70db72a5a9d3c5/shomei-0.2.4-py3-none-any.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "faae7c5d03202f0494064516e87747a0d9d0235928641cedcda67e943b45c88d",
                "md5": "df58a063f789c75577c64a60f2b96f43",
                "sha256": "71698b5603f455f542fda547e4d15d1e9d612619909eb63621468c8f8624db25"
            },
            "downloads": -1,
            "filename": "shomei-0.2.4.tar.gz",
            "has_sig": false,
            "md5_digest": "df58a063f789c75577c64a60f2b96f43",
            "packagetype": "sdist",
            "python_version": "source",
            "requires_python": ">=3.10",
            "size": 18327,
            "upload_time": "2025-08-22T16:19:09",
            "upload_time_iso_8601": "2025-08-22T16:19:09.383003Z",
            "url": "https://files.pythonhosted.org/packages/fa/ae/7c5d03202f0494064516e87747a0d9d0235928641cedcda67e943b45c88d/shomei-0.2.4.tar.gz",
            "yanked": false,
            "yanked_reason": null
        }
    ],
    "upload_time": "2025-08-22 16:19:09",
    "github": true,
    "gitlab": false,
    "bitbucket": false,
    "codeberg": false,
    "github_user": "petarran",
    "github_project": "shomei",
    "travis_ci": false,
    "coveralls": false,
    "github_actions": true,
    "lcname": "shomei"
}
        
Elapsed time: 0.58939s