mirror of
https://github.com/chenasraf/btool.git
synced 2026-05-18 01:48:58 +00:00
Compare commits
4 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 860056a7e2 | |||
| 83e1e019fe | |||
| 96400d4ed7 | |||
| f3ce189b83 |
@@ -1,3 +1,7 @@
|
||||
## 0.1.4
|
||||
|
||||
- upgrade dependencies
|
||||
|
||||
## 0.1.3
|
||||
|
||||
- fix: don't color default log lines
|
||||
|
||||
14
README.md
14
README.md
@@ -70,6 +70,20 @@ Usage: btool <command> [...args]
|
||||
-V, --verbose Display debug output
|
||||
```
|
||||
|
||||
#### Example
|
||||
|
||||
Here is an example for a simple script that pushes the apk to the device Download folder.
|
||||
|
||||
```sh
|
||||
#!/usr/bin/env sh
|
||||
name=$(dart run btool get packageName)
|
||||
version=$(dart run btool get packageVersion)
|
||||
source="$(pwd)/build/app/outputs/flutter-apk/app-release.apk"
|
||||
target="/sdcard/Download/$name-$version.apk"
|
||||
echo "adb push $source $target"
|
||||
adb push $source $target
|
||||
```
|
||||
|
||||
## Contributing
|
||||
|
||||
I am developing this package on my free time, so any support, whether code, issues, or just stars is
|
||||
|
||||
@@ -91,8 +91,7 @@ GetSetAction getAction(BToolOptions options, {required FileSystem fs}) {
|
||||
setter = (value) => setMinSdkVersion(value, fs: fs);
|
||||
break;
|
||||
case BToolOptionKey.targetSdkVersion:
|
||||
getter =
|
||||
() => getTargetSdkVersion(fs: fs, workingDir: options.workingDir);
|
||||
getter = () => getTargetSdkVersion(fs: fs, workingDir: options.workingDir);
|
||||
setter = (value) => setTargetSdkVersion(value, fs: fs);
|
||||
break;
|
||||
case BToolOptionKey.applicationId:
|
||||
|
||||
@@ -15,18 +15,12 @@ String getBuildGradleKey(String key, {FileSystem? fs, Directory? workingDir}) {
|
||||
);
|
||||
logger.debug('Getting $key from ${buildFile.path}');
|
||||
|
||||
final value = buildFile
|
||||
.readAsStringSync()
|
||||
.split('\n')
|
||||
.firstWhere((x) => x.trim().startsWith(key))
|
||||
.trim()
|
||||
.split(' ')
|
||||
.last;
|
||||
final value =
|
||||
buildFile.readAsStringSync().split('\n').firstWhere((x) => x.trim().startsWith(key)).trim().split(' ').last;
|
||||
return value;
|
||||
}
|
||||
|
||||
void setBuildGradleKey(String key, String value,
|
||||
{FileSystem? fs, Directory? workingDir}) {
|
||||
void setBuildGradleKey(String key, String value, {FileSystem? fs, Directory? workingDir}) {
|
||||
final _fs = fs ?? const LocalFileSystem();
|
||||
final wd = getCurrentDir(workingDir, fs: _fs).path;
|
||||
final buildFile = _fs.file(
|
||||
@@ -41,43 +35,36 @@ void setBuildGradleKey(String key, String value,
|
||||
buildFile.writeAsStringSync(lines.join('\n'));
|
||||
}
|
||||
|
||||
String getMinSdkVersion({FileSystem? fs, Directory? workingDir}) =>
|
||||
getBuildGradleKey(
|
||||
String getMinSdkVersion({FileSystem? fs, Directory? workingDir}) => getBuildGradleKey(
|
||||
'minSdkVersion',
|
||||
fs: fs,
|
||||
workingDir: workingDir,
|
||||
);
|
||||
void setMinSdkVersion(String value, {FileSystem? fs, Directory? workingDir}) =>
|
||||
setBuildGradleKey(
|
||||
void setMinSdkVersion(String value, {FileSystem? fs, Directory? workingDir}) => setBuildGradleKey(
|
||||
'minSdkVersion',
|
||||
value,
|
||||
fs: fs,
|
||||
workingDir: workingDir,
|
||||
);
|
||||
|
||||
String getTargetSdkVersion({FileSystem? fs, Directory? workingDir}) =>
|
||||
getBuildGradleKey(
|
||||
String getTargetSdkVersion({FileSystem? fs, Directory? workingDir}) => getBuildGradleKey(
|
||||
'targetSdkVersion',
|
||||
fs: fs,
|
||||
workingDir: workingDir,
|
||||
);
|
||||
void setTargetSdkVersion(String value,
|
||||
{FileSystem? fs, Directory? workingDir}) =>
|
||||
setBuildGradleKey(
|
||||
void setTargetSdkVersion(String value, {FileSystem? fs, Directory? workingDir}) => setBuildGradleKey(
|
||||
'targetSdkVersion',
|
||||
value,
|
||||
fs: fs,
|
||||
workingDir: workingDir,
|
||||
);
|
||||
|
||||
String getApplicationId({FileSystem? fs, Directory? workingDir}) =>
|
||||
getBuildGradleKey(
|
||||
String getApplicationId({FileSystem? fs, Directory? workingDir}) => getBuildGradleKey(
|
||||
'applicationId',
|
||||
fs: fs,
|
||||
workingDir: workingDir,
|
||||
).replaceAll('"', '');
|
||||
void setApplicationId(String value, {FileSystem? fs, Directory? workingDir}) =>
|
||||
setBuildGradleKey(
|
||||
void setApplicationId(String value, {FileSystem? fs, Directory? workingDir}) => setBuildGradleKey(
|
||||
'applicationId',
|
||||
'"$value"',
|
||||
fs: fs,
|
||||
|
||||
@@ -35,20 +35,16 @@ class Logger {
|
||||
write(colorize(message.toString(), fg: fg));
|
||||
}
|
||||
|
||||
void info(Object message) =>
|
||||
writeLevel(LogLevel.info, message, fg: Styles.DEFAULT);
|
||||
void info(Object message) => writeLevel(LogLevel.info, message, fg: Styles.DEFAULT);
|
||||
void i(Object message) => info(message);
|
||||
|
||||
void warn(Object message) =>
|
||||
writeLevel(LogLevel.warn, message, fg: Styles.YELLOW);
|
||||
void warn(Object message) => writeLevel(LogLevel.warn, message, fg: Styles.YELLOW);
|
||||
void w(Object message) => warn(message);
|
||||
|
||||
void error(Object message) =>
|
||||
writeLevel(LogLevel.error, message, fg: Styles.RED);
|
||||
void error(Object message) => writeLevel(LogLevel.error, message, fg: Styles.RED);
|
||||
void e(Object message) => error(message);
|
||||
|
||||
void debug(Object message) =>
|
||||
writeLevel(LogLevel.debug, message, fg: Styles.LIGHT_BLUE);
|
||||
void debug(Object message) => writeLevel(LogLevel.debug, message, fg: Styles.LIGHT_BLUE);
|
||||
void d(Object message) => debug(message);
|
||||
}
|
||||
|
||||
|
||||
@@ -72,9 +72,7 @@ class BToolOptions {
|
||||
key: BToolOptionKey.applicationId,
|
||||
action: BToolAction.get,
|
||||
parseResult: res,
|
||||
workingDir: res['working-dir'] != null
|
||||
? _fs.directory(res['working-dir'])
|
||||
: null,
|
||||
workingDir: res['working-dir'] != null ? _fs.directory(res['working-dir']) : null,
|
||||
);
|
||||
}
|
||||
|
||||
@@ -83,8 +81,7 @@ class BToolOptions {
|
||||
action: _action,
|
||||
args: _args,
|
||||
value: _value,
|
||||
workingDir:
|
||||
res['working-dir'] != null ? _fs.directory(res['working-dir']) : null,
|
||||
workingDir: res['working-dir'] != null ? _fs.directory(res['working-dir']) : null,
|
||||
parseResult: res,
|
||||
);
|
||||
}
|
||||
@@ -96,12 +93,9 @@ class BToolOptions {
|
||||
|
||||
final _parser = ArgParser(allowTrailingOptions: true);
|
||||
_parser.addFlag('help', abbr: 'h', negatable: false, help: 'Show help');
|
||||
_parser.addFlag('version',
|
||||
abbr: 'v', negatable: false, help: 'Show version');
|
||||
_parser.addOption('working-dir',
|
||||
abbr: 'd', help: 'Change working directory of script');
|
||||
_parser.addFlag('verbose',
|
||||
abbr: 'V', negatable: false, help: 'Display debug output');
|
||||
_parser.addFlag('version', abbr: 'v', negatable: false, help: 'Show version');
|
||||
_parser.addOption('working-dir', abbr: 'd', help: 'Change working directory of script');
|
||||
_parser.addFlag('verbose', abbr: 'V', negatable: false, help: 'Display debug output');
|
||||
BToolOptions._parser = _parser;
|
||||
return _parser;
|
||||
}
|
||||
|
||||
@@ -12,18 +12,12 @@ String getPubspecKey(String key, {FileSystem? fs, Directory? workingDir}) {
|
||||
final wd = getCurrentDir(workingDir, fs: _fs).path;
|
||||
final pubspecFile = _fs.file(path.join(wd, 'pubspec.yaml'));
|
||||
logger.debug('Getting $key from ${pubspecFile.path}');
|
||||
final value = pubspecFile
|
||||
.readAsStringSync()
|
||||
.split('\n')
|
||||
.firstWhere((x) => x.startsWith('$key:'))
|
||||
.split(':')
|
||||
.last
|
||||
.trim();
|
||||
final value =
|
||||
pubspecFile.readAsStringSync().split('\n').firstWhere((x) => x.startsWith('$key:')).split(':').last.trim();
|
||||
return value;
|
||||
}
|
||||
|
||||
void setPubspecKey(String key, String value,
|
||||
{FileSystem? fs, Directory? workingDir}) {
|
||||
void setPubspecKey(String key, String value, {FileSystem? fs, Directory? workingDir}) {
|
||||
final _fs = fs ?? const LocalFileSystem();
|
||||
final wd = getCurrentDir(workingDir, fs: _fs).path;
|
||||
final pubspecFile = _fs.file(path.join(wd, 'pubspec.yaml'));
|
||||
@@ -39,22 +33,19 @@ String getPackageName({FileSystem? fs, Directory? workingDir}) => getPubspecKey(
|
||||
fs: fs,
|
||||
workingDir: workingDir,
|
||||
);
|
||||
void setPackageName(String value, {FileSystem? fs, Directory? workingDir}) =>
|
||||
setPubspecKey(
|
||||
void setPackageName(String value, {FileSystem? fs, Directory? workingDir}) => setPubspecKey(
|
||||
'name',
|
||||
value,
|
||||
fs: fs,
|
||||
workingDir: workingDir,
|
||||
);
|
||||
|
||||
String getPackageVersion({FileSystem? fs, Directory? workingDir}) =>
|
||||
getPubspecKey(
|
||||
String getPackageVersion({FileSystem? fs, Directory? workingDir}) => getPubspecKey(
|
||||
'version',
|
||||
fs: fs,
|
||||
workingDir: workingDir,
|
||||
);
|
||||
void setPackageVersion(String value, {FileSystem? fs, Directory? workingDir}) =>
|
||||
setPubspecKey(
|
||||
void setPackageVersion(String value, {FileSystem? fs, Directory? workingDir}) => setPubspecKey(
|
||||
'version',
|
||||
value,
|
||||
fs: fs,
|
||||
|
||||
14
pubspec.yaml
14
pubspec.yaml
@@ -1,19 +1,19 @@
|
||||
name: btool
|
||||
description: Generic build helper tools for Flutter/Dart such as manipulating version, package name or application ID
|
||||
version: 0.1.3
|
||||
version: 0.1.4
|
||||
homepage: 'https://github.com/chenasraf/btool'
|
||||
|
||||
executables:
|
||||
btool: btool
|
||||
|
||||
environment:
|
||||
sdk: '>=2.18.0 <3.0.0'
|
||||
sdk: '>=2.18.0 <4.0.0'
|
||||
|
||||
dependencies:
|
||||
args: ^2.3.1
|
||||
args: ^2.4.2
|
||||
colorize: ^3.0.0
|
||||
file: ^6.1.4
|
||||
path: ^1.8.2
|
||||
file: ^7.0.0
|
||||
path: ^1.8.3
|
||||
|
||||
dev_dependencies:
|
||||
build:
|
||||
@@ -26,6 +26,6 @@ script_runner:
|
||||
- activate-local: 'dart pub global activate --source path ./'
|
||||
- activate-global: 'dart pub global activate btool'
|
||||
- auto-fix: dart fix --apply
|
||||
- publish: dart pub publish -f
|
||||
- publish: dart format .; dart pub publish; format
|
||||
- watch: dart run build_runner watch --delete-conflicting-outputs
|
||||
- format: dart format .
|
||||
- format: dart format --line-length 120 .
|
||||
|
||||
@@ -9,8 +9,7 @@ void main() {
|
||||
late FileSystem fs;
|
||||
setUp(() {
|
||||
fs = MemoryFileSystem();
|
||||
var dir =
|
||||
path.join(fs.currentDirectory.path, 'android', 'app', 'build.gradle');
|
||||
var dir = path.join(fs.currentDirectory.path, 'android', 'app', 'build.gradle');
|
||||
fs.directory(path.dirname(dir)).createSync(recursive: true);
|
||||
fs
|
||||
.file(
|
||||
|
||||
@@ -9,9 +9,7 @@ void main() {
|
||||
late FileSystem fs;
|
||||
setUp(() {
|
||||
fs = MemoryFileSystem();
|
||||
fs
|
||||
.file(path.join(fs.currentDirectory.path, 'pubspec.yaml'))
|
||||
.writeAsStringSync(
|
||||
fs.file(path.join(fs.currentDirectory.path, 'pubspec.yaml')).writeAsStringSync(
|
||||
[
|
||||
'name: test_app',
|
||||
'version: 1.0.0+1',
|
||||
|
||||
@@ -8,8 +8,7 @@ class BinBuilder implements Builder {
|
||||
FutureOr<void> build(BuildStep buildStep) async {
|
||||
final contents = await buildStep.readAsString(buildStep.inputId);
|
||||
return buildStep.writeAsString(
|
||||
AssetId(buildStep.inputId.package,
|
||||
buildStep.inputId.path.replaceFirst('.bin.dart', '.dart')),
|
||||
AssetId(buildStep.inputId.package, buildStep.inputId.path.replaceFirst('.bin.dart', '.dart')),
|
||||
contents.replaceAll('{{VERSION}}', getPackageVersion()),
|
||||
);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user