Convert from composite to typescript (#17)

# Summary

Converts the action from a [composite to
javascript](https://docs.github.com/en/actions/sharing-automations/creating-actions/about-custom-actions#types-of-actions).
Most importantly to make use of prebuilt libraries and helpers like
[actions/toolkit](https://github.com/actions/toolkit).

The structure and features are modeled after
[astral-sh/setup-uv](https://github.com/astral-sh/setup-uv)

## Changes

1. Download the ruff executable for the current platform from the GitHub
releases
2. Add ruff to the PATH
3. Validate the downloaded ruff executable against its checksum
4. Cache ruff in the [Tool
Cache](https://github.com/actions/toolkit/tree/main/packages/tool-cache)
to speed up runs on self-hosted runners
5. Support semver ranges to define the ruff version to install

## 🚨 Breaking changes

Removes the `changed-files` input.

This input could previously be used to run ruff only on files changed in
a PR. The functionality was implemented by calling another action. This
repo should focus on providing a quick and easy way to use ruff in
GitHub Actions, not add more functionality on top of ruff.

The previous functionality can be replicated with:

```yaml
- uses: actions/checkout@v4
- name: Get changed files
  id: changed-files
  uses: tj-actions/changed-files@v45
  with:
    files: |
      **.py
- name: Run ruff on changed files only 
  uses: astral-sh/ruff-action@v2
  with:
    src: ${{ steps.changed-files.outputs.all_changed_files }}
```

This was tested here:
https://github.com/astral-sh/ruff-action/actions/runs/12017035736/job/33498508269
This commit is contained in:
Kevin Stillhammer
2024-12-03 17:18:31 +01:00
committed by GitHub
parent d0a0e814ec
commit f2e3221107
44 changed files with 78310 additions and 338 deletions
+82 -109
View File
@@ -1,129 +1,102 @@
# Byte-compiled / optimized / DLL files
__pycache__/
*.py[cod]
*$py.class
# Dependency directory
node_modules
# C extensions
*.so
# Distribution / packaging
.Python
build/
develop-eggs/
dist/
downloads/
eggs/
.eggs/
lib/
lib64/
parts/
sdist/
var/
wheels/
pip-wheel-metadata/
share/python-wheels/
*.egg-info/
.installed.cfg
*.egg
MANIFEST
# PyInstaller
# Usually these files are written by a python script from a template
# before PyInstaller builds the exe, so as to inject date/other infos into it.
*.manifest
*.spec
# Installer logs
pip-log.txt
pip-delete-this-directory.txt
# Unit test / coverage reports
htmlcov/
.tox/
.nox/
.coverage
.coverage.*
.cache
nosetests.xml
coverage.xml
*.cover
*.py,cover
.hypothesis/
.pytest_cache/
# Translations
*.mo
*.pot
# Django stuff:
# Rest pulled from https://github.com/github/gitignore/blob/master/Node.gitignore
# Logs
logs
*.log
local_settings.py
db.sqlite3
db.sqlite3-journal
npm-debug.log*
yarn-debug.log*
yarn-error.log*
lerna-debug.log*
# Flask stuff:
instance/
.webassets-cache
# Diagnostic reports (https://nodejs.org/api/report.html)
report.[0-9]*.[0-9]*.[0-9]*.[0-9]*.json
# Scrapy stuff:
.scrapy
# Runtime data
pids
*.pid
*.seed
*.pid.lock
# Sphinx documentation
docs/_build/
# Directory for instrumented libs generated by jscoverage/JSCover
lib-cov
# PyBuilder
target/
# Coverage directory used by tools like istanbul
coverage
*.lcov
# Jupyter Notebook
.ipynb_checkpoints
# nyc test coverage
.nyc_output
# IPython
profile_default/
ipython_config.py
# Grunt intermediate storage (https://gruntjs.com/creating-plugins#storing-task-files)
.grunt
# pyenv
.python-version
# Bower dependency directory (https://bower.io/)
bower_components
# pipenv
# According to pypa/pipenv#598, it is recommended to include Pipfile.lock in version control.
# However, in case of collaboration, if having platform-specific dependencies or dependencies
# having no cross-platform support, pipenv may install dependencies that don't work, or not
# install all needed dependencies.
#Pipfile.lock
# node-waf configuration
.lock-wscript
# PEP 582; used by e.g. github.com/David-OConnor/pyflow
__pypackages__/
# Compiled binary addons (https://nodejs.org/api/addons.html)
build/Release
# Celery stuff
celerybeat-schedule
celerybeat.pid
# Dependency directories
jspm_packages/
# SageMath parsed files
*.sage.py
# TypeScript v1 declaration files
typings/
# Environments
# TypeScript cache
*.tsbuildinfo
# Optional npm cache directory
.npm
# Optional eslint cache
.eslintcache
# Optional REPL history
.node_repl_history
# Output of 'npm pack'
*.tgz
# Yarn Integrity file
.yarn-integrity
# dotenv environment variables file
.env
.venv
env/
venv/
ENV/
env.bak/
venv.bak/
.env.test
# Spyder project settings
.spyderproject
.spyproject
# parcel-bundler cache (https://parceljs.org/)
.cache
# Rope project settings
.ropeproject
# next.js build output
.next
# mkdocs documentation
/site
# nuxt.js build output
.nuxt
# mypy
.mypy_cache/
.dmypy.json
dmypy.json
# vuepress build output
.vuepress/dist
# Pyre type checker
.pyre/
# Serverless directories
.serverless/
# FuseBox cache
.fusebox/
# DynamoDB Local files
.dynamodb/
# OS metadata
.DS_Store
Thumbs.db
# Ignore built ts files
__tests__/runner/*
lib/**/*
# Idea IDEs (PyCharm, WebStorm, IntelliJ, etc)
.idea/