feat: initial structure
This commit is contained in:
commit
6f361dd723
7 changed files with 3199 additions and 0 deletions
2
.env.exapmle
Normal file
2
.env.exapmle
Normal file
|
|
@ -0,0 +1,2 @@
|
||||||
|
YOUTRACK_BASE_URL=YOUTRACK_URL
|
||||||
|
YOUTRACK_TOKEN=YOUTRACK_TOKEN
|
||||||
32
.gitignore
vendored
Normal file
32
.gitignore
vendored
Normal file
|
|
@ -0,0 +1,32 @@
|
||||||
|
# Node.js dependencies
|
||||||
|
node_modules/
|
||||||
|
|
||||||
|
# Environment variables
|
||||||
|
.env
|
||||||
|
|
||||||
|
# Logs
|
||||||
|
*.log
|
||||||
|
npm-debug.log*
|
||||||
|
yarn-debug.log*
|
||||||
|
|
||||||
|
# Compiled output
|
||||||
|
build/
|
||||||
|
dist/
|
||||||
|
|
||||||
|
# Coverage directory
|
||||||
|
coverage/
|
||||||
|
.nyc_output/
|
||||||
|
|
||||||
|
# Optional caches
|
||||||
|
.npm/
|
||||||
|
.eslintcache
|
||||||
|
|
||||||
|
# IDE files
|
||||||
|
.vscode/
|
||||||
|
.idea/
|
||||||
|
*.swp
|
||||||
|
*.swo
|
||||||
|
|
||||||
|
# OS files
|
||||||
|
.DS_Store
|
||||||
|
Thumbs.db
|
||||||
41
README.md
Normal file
41
README.md
Normal file
|
|
@ -0,0 +1,41 @@
|
||||||
|
# Workflows
|
||||||
|
|
||||||
|
YouTrack workflows for Workflows
|
||||||
|
|
||||||
|
## Setup
|
||||||
|
|
||||||
|
1. Install dependencies: `npm install`
|
||||||
|
2. Get permanent token from your YouTrack instance (Profile → Authentication → New Token)
|
||||||
|
3. Create `.env` file with your credentials:
|
||||||
|
```env
|
||||||
|
YOUTRACK_BASE_URL=https://your-youtrack-instance.com
|
||||||
|
YOUTRACK_TOKEN=perm:your-permanent-token-here
|
||||||
|
```
|
||||||
|
4. Verify setup: `npx ytw list`
|
||||||
|
|
||||||
|
## Usage
|
||||||
|
|
||||||
|
- **Add new workflow**: `npx ytw add`
|
||||||
|
- **Sync workflows**: `npx ytw sync`
|
||||||
|
- **Push changes**: `npx ytw push`
|
||||||
|
- **Pull from YouTrack**: `npx ytw pull`
|
||||||
|
- **Watch for changes**: `npx ytw sync --watch`
|
||||||
|
|
||||||
|
## TypeScript Support
|
||||||
|
|
||||||
|
Generate YouTrack type definitions for your project:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
npx ytw types
|
||||||
|
```
|
||||||
|
|
||||||
|
This creates TypeScript definitions in the `types` directory that can be used via JSDoc annotations:
|
||||||
|
|
||||||
|
```js
|
||||||
|
/** @import { Issue, Project } from '../types/youtrack' */
|
||||||
|
```
|
||||||
|
|
||||||
|
## Scripts
|
||||||
|
|
||||||
|
- `npm run sync` - Sync workflows with YouTrack
|
||||||
|
- `npm run check` - Lint and type check
|
||||||
22
eslint.config.cjs
Normal file
22
eslint.config.cjs
Normal file
|
|
@ -0,0 +1,22 @@
|
||||||
|
const js = require("@eslint/js")
|
||||||
|
|
||||||
|
module.exports = [
|
||||||
|
js.configs.recommended,
|
||||||
|
{
|
||||||
|
files: ["**/*.js"],
|
||||||
|
languageOptions: {
|
||||||
|
ecmaVersion: 2022,
|
||||||
|
sourceType: "commonjs",
|
||||||
|
globals: {
|
||||||
|
console: "readonly",
|
||||||
|
require: "readonly",
|
||||||
|
},
|
||||||
|
},
|
||||||
|
rules: {
|
||||||
|
"no-var": "error",
|
||||||
|
"prefer-const": "error",
|
||||||
|
"no-console": "warn",
|
||||||
|
"no-unused-vars": ["warn", { argsIgnorePattern: "^_" }],
|
||||||
|
},
|
||||||
|
},
|
||||||
|
]
|
||||||
3032
package-lock.json
generated
Normal file
3032
package-lock.json
generated
Normal file
File diff suppressed because it is too large
Load diff
35
package.json
Normal file
35
package.json
Normal file
|
|
@ -0,0 +1,35 @@
|
||||||
|
{
|
||||||
|
"name": "Workflows",
|
||||||
|
"version": "1.0.0",
|
||||||
|
"description": "YouTrack workflows for Workflows",
|
||||||
|
"main": "index.js",
|
||||||
|
"scripts": {
|
||||||
|
"sync": "ytw sync",
|
||||||
|
"check": "ytw lint --type-check"
|
||||||
|
},
|
||||||
|
"repository": {
|
||||||
|
"type": "git",
|
||||||
|
"url": ""
|
||||||
|
},
|
||||||
|
"author": "",
|
||||||
|
"license": "ISC",
|
||||||
|
"ytw": {
|
||||||
|
"linting": {
|
||||||
|
"enableEslint": true,
|
||||||
|
"enableTypeCheck": true,
|
||||||
|
"maxWarnings": 5
|
||||||
|
},
|
||||||
|
"typesFolder": "./types"
|
||||||
|
},
|
||||||
|
"dependencies": {
|
||||||
|
"@jetbrains/youtrack-scripting": "^0.2.1",
|
||||||
|
"@jetbrains/youtrack-scripting-api": "^2022.1.46592"
|
||||||
|
},
|
||||||
|
"devDependencies": {
|
||||||
|
"dotenv": "^17.0.1",
|
||||||
|
"eslint": "^9.28.0",
|
||||||
|
"youtrack-workflow-cli": "^1.0.4",
|
||||||
|
"typescript": "^5.8.3",
|
||||||
|
"youtrack-workflow-api-types": "^0.2.1"
|
||||||
|
}
|
||||||
|
}
|
||||||
35
tsconfig.json
Normal file
35
tsconfig.json
Normal file
|
|
@ -0,0 +1,35 @@
|
||||||
|
{
|
||||||
|
"compilerOptions": {
|
||||||
|
"checkJs": true,
|
||||||
|
"allowJs": true,
|
||||||
|
"target": "es2021",
|
||||||
|
"module": "commonjs",
|
||||||
|
"lib": [
|
||||||
|
"es2021"
|
||||||
|
],
|
||||||
|
"strict": true,
|
||||||
|
"esModuleInterop": true,
|
||||||
|
"skipLibCheck": true,
|
||||||
|
"forceConsistentCasingInFileNames": true,
|
||||||
|
"allowSyntheticDefaultImports": true,
|
||||||
|
"typeRoots": [
|
||||||
|
"./node_modules/@types",
|
||||||
|
"./types"
|
||||||
|
],
|
||||||
|
"baseUrl": ".",
|
||||||
|
"paths": {
|
||||||
|
"@jetbrains/youtrack-scripting-api": [
|
||||||
|
"node_modules/youtrack-workflow-api-types"
|
||||||
|
],
|
||||||
|
"@jetbrains/youtrack-scripting-api/*": [
|
||||||
|
"node_modules/youtrack-workflow-api-types/*"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"include": [
|
||||||
|
"**/*.js"
|
||||||
|
],
|
||||||
|
"exclude": [
|
||||||
|
"node_modules"
|
||||||
|
]
|
||||||
|
}
|
||||||
Loading…
Add table
Add a link
Reference in a new issue