Commit Graph

40 Commits

Author SHA1 Message Date
f084f8380a update readme for new deploy script and bump version to 1.0
Readme changes:
- Document that deployment directory must exist first
- Show mkdir -p commands before deploy
- Explain atomic deployment behavior (extracts to /tmp first)

Version bump to 1.0:
- Major refactoring: renamed app to jrunner
- Simplified deployment script
- Updated documentation

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2026-01-06 22:37:05 -05:00
a9bd96b377 simplify deploy script with atomic deployment
Completely rewrote deploy script to be simpler and safer:
- Requires directory to exist (no automatic creation)
- Builds and extracts to /tmp/ FIRST
- Only clears target directory after build/extract succeeds
- If build fails, existing deployment stays untouched

Usage:
  sudo mkdir -p /opt/jr_test
  ./deploy.sh /opt/jr_test

This atomic approach prevents broken deployments from failed builds.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2026-01-06 22:32:28 -05:00
c6d34847d5 fix race condition in deploy script rename logic
Previous version failed when /opt/jrunner existed from a prior run,
because mv cannot move over an existing directory. Now the script:

1. Removes target directory if it exists
2. Removes intermediate jrunner/ directory if it exists and differs
   from target (prevents collision)
3. Extracts cleanly
4. Renames to target name

This fixes the issue where ./deploy.sh /opt/jr_test would fail if
/opt/jrunner already existed.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2026-01-06 22:26:14 -05:00
4b8ffcdd1c gitignore accidentally extracted distribution files
Prevent bin/ and lib/ in project root from showing up in git if the
deploy script accidentally extracts to the wrong location.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2026-01-06 22:20:22 -05:00
e9fc745d20 fix deploy script to honor custom directory names
The zip file contains 'jrunner/' as top-level directory, so unzipping
always created /opt/jrunner regardless of custom path. Now the script
renames the directory after unzipping if a custom name was specified.

Example:
  ./deploy.sh /opt/jr_test

Now correctly creates /opt/jr_test (not /opt/jrunner).

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2026-01-06 22:15:33 -05:00
9cf698c67d add safety checks to deploy script
Prevent dangerous sudo rm -rf operations:
- Check that DEPLOY_DIR is not empty
- Block deployment to critical system directories (/, /usr, /etc, etc.)
- Only remove directory if it already exists
- Show message before removal for clarity

This prevents catastrophic mistakes like accidentally deploying to /
or deleting important system directories.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2026-01-06 22:09:02 -05:00
20d40f069d ensure parent directory exists in deploy script
Add mkdir -p to create parent directory if it doesn't exist. This allows
deploying to any path without requiring manual directory creation.

Example:
  ./deploy.sh /home/user/testing/jrunner

Now works even if /home/user/testing doesn't exist yet.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2026-01-06 22:07:03 -05:00
b0f104927c document deploy script usage in readme
Add clear documentation showing:
- deploy.sh with no arguments uses default /opt/jrunner location
- deploy.sh with argument deploys to custom location for testing
- Explain symlink behavior (only for default location)
- Show usage examples for both deployment types

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2026-01-06 22:03:14 -05:00
0ecb6860bd make deploy location configurable
Allow specifying custom deployment directory as argument, defaulting to
/opt/jrunner if not provided. Symlink to /usr/local/bin only created
for default location to avoid overwriting production.

Usage:
  ./deploy.sh                    # deploys to /opt/jrunner (default)
  ./deploy.sh /opt/jrunner-test  # test deployment

This allows testing new builds without affecting production deployment.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2026-01-06 22:00:31 -05:00
c41ab99841 update and rename deployment script
Renamed copy_to_apt.sh to deploy.sh (clearer name) and updated to:
- Use new jrunner/ paths instead of app/
- Add build step so script handles full build+deploy
- Create symlink to /usr/local/bin for system-wide access
- Remove unused JR environment variable export
- Add set -e for error handling
- Add progress messages

Usage: ./deploy.sh

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2026-01-06 21:57:54 -05:00
8cdd88d053 rename app module to jrunner for consistency
Changes:
- Rename app/ directory to jrunner/ (preserves git history)
- Update settings.gradle to reference jrunner module
- Update readme.md with new paths (jrunner/build/, /opt/jrunner)
- Update CLAUDE.md documentation with new file paths

Build outputs now named jrunner.zip, jrunner.jar, bin/jrunner instead
of generic "app" names. This makes the project structure clearer and
aligns module name with project name.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2026-01-06 21:53:08 -05:00
809f2a8949 ignore local configuration files
Add run.yml to gitignore as it's a personal config file for local testing.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2026-01-06 21:46:07 -05:00
f47eaf4bac upgrade gradle wrapper to 8.5 for java 20 compatibility
Gradle 7.5.1 only supports up to Java 18. Upgraded to 8.5 to support
Java 20 and fix "Unsupported class file major version 64" build error.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2026-01-06 21:42:36 -05:00
1392e0a6d8 add CLAUDE.md for AI-assisted development
Documents build commands, architecture, and implementation details to help
Claude Code instances understand the codebase structure and data flow.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2026-01-06 21:42:05 -05:00
b0ee4c77d9 improve deployment instructions
- Use gradle wrapper (./gradlew) instead of requiring manual install
- Simplify deployment from 5 commands to 2
- Add symlink to /usr/local/bin for system-wide access
- Remove unnecessary ownership changes
- Add update instructions

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2026-01-06 21:41:51 -05:00
b3a9151eff change ownership to current owner; create envvar 2023-03-08 09:12:18 -05:00
e7b7d1bbba add an option to clear out the target table prior to moving data 2023-02-01 16:29:53 -05:00
24fad6aa04 convert type to upper case and handle TEXT data type 2023-02-01 09:04:10 -05:00
b816399cba include integrated auth lib 2023-01-24 12:04:48 -05:00
fe39c6a2ae include mssql driver 2023-01-24 11:44:05 -05:00
pt
c67c7b1360 update copy 2022-12-01 07:13:18 -05:00
05508d8b26 use blocks 2022-11-30 14:26:37 -05:00
1050930667 add instruction and copy script 2022-11-30 14:25:16 -05:00
509873e60b update version 2022-10-27 07:17:13 -04:00
2245ef1ba2 print times 2022-10-27 07:16:42 -04:00
c7884f3605 clean up replacements 2022-10-27 06:58:18 -04:00
efd922b2e0 v.036 2022-10-25 14:43:53 -04:00
3b4af2bf47 set fetch size; replace quotes only after handling null 2022-10-25 14:43:30 -04:00
0615163fad wrap dates 2022-10-25 17:49:26 +00:00
cf5abeddbe push null test into each type 2022-10-25 13:24:15 -04:00
e60a92cfdc wrap timestamps in quotes and print more status info 2022-10-24 15:17:29 +00:00
54ab5645b1 print headers for each section; evaluate null as a potential string object status 2022-10-24 13:28:26 +00:00
ccb1ca589a print column names and types 2022-10-21 09:31:14 -04:00
91405f2dfe v0.31 2022-10-20 22:05:39 -04:00
3c0f249492 set value as NULL if getString returns null an wasNull fails 2022-10-20 22:03:54 -04:00
4b52dac2e9 update version 2022-10-20 15:07:32 -04:00
7cc653d685 overwrite row count that prints instead of creating a list 2022-10-20 14:19:03 -04:00
ac59b46e1f print sql statements on failure 2022-10-20 12:12:41 -04:00
1cb878bdb2 copy code from old project 2022-10-20 11:18:05 -04:00
4ccaf7b5a8 initial 2022-10-20 11:12:19 -04:00